1 Star 196 Fork 1

Alancheng86 / ClassA20

加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
该仓库未声明开源许可证文件(LICENSE),使用请关注具体项目描述及其代码上游依赖。
克隆/下载
贡献代码
同步代码
取消
提示: 由于 Git 不支持空文件夾,创建文件夹后会生成空的 .keep 文件
Loading...
README
全志A20处理器底层操作的一些封装,采用free pascal,封装类。
使用方法:在工程中添加该类所在的文件夹路径即可。

一般每一个外设功能分为两部分封装,一种是直接对某一Pin或通道的操作类,实现对常用功能的封装;另一种是对该类型外设的寄存器操作类,用来对前者没有封装到的功能进行设置。

目前实现了对GPIO、LRADC、PWM的封装,后续功能陆续完成,并且正在尝试增加对中断的响应功能。

该类可用在控制台、有界面或无界面程序中均可,并且根据编译器的不同,也可用在不同的操作系统,只需很少的代码改动,如引用不同的单元等。

全志其他系列的处理器也可使用该类,如A10等,只需要根据差异的部分进行改动,或者继承重新实现。

作者:tjCFeng
邮箱:tjCFeng@163.com

例子:
1.TGPIOGROUP

[code]
uses GPIO;

var PHG: TGPIOGROUP;
begin
  PHG:= TGPIOGROUP.Create(PH); //创建
  PHG.GPIO_DAT^:= PHG.GPIO_DAT^ or ($1 shl 24); //设置寄存器的值
  PHG.Free; //释放
end;
[/code]

2.TGPIO

[code]
uses GPIO;

begin
  with TGPIO.Create(PH, 24) do
  begin
    Fun:= Fun1; //设置PH24为输出
    Data:= True; //设置高电平
    Sleep(1000);
    Reverse; //反转电平
    Free; //释放
  end;
end;
[/code]

或

[code]
var PH24: TGPIO;
begin
  PH24:= TGPIO.Create(PH, 24);
  PH24.Fun:= Fun1;
  PH24.Reverse;
  PH24.Free;
end;
[/code]

3.LRADC

[code]
uses LRADC;

var ADC0: TLRADC; Data: Byte;
begin
  ADC0:= TLRADC.Create(LRADC_0); //创建LRADC通道0
  TLRADCGROUP.Instance.ClearAllPending; //清除所有未决中断,单例中的功能
  ADC0.INTs:= [ADCDATA, KEYDOWN, KEYUP]; //设置需要响应的中断类型
  TLRADCGROUP.Instance.Start; //开启LRADC,单例中的功能
  Data:= ADC0.Data; //获取LRADC通道0的值0~64
  TLRADCGROUP.Instance.Stop; //停止LRADC,单例中的功能
  ADC0.Free; //释放
end;
[/code]

4.PWM

[code]
uses PWM;

var PWM1: TPWM;
begin
  PWM1:= TPWM.Create(PWM_1); //创建PWM通道1
  with PWM1 do
  begin
    Prescale:= P960; //设置预分频
    Cycle:= 6000; //设置周期计数
    Duty:= 1000;  //设置占空比计数
    Start; //开始PWM输出
    Sleep(3000);
    Stop; //停止PWM输出
    Free; //释放
  end;
end;
[/code]

5.Timer

[code]
uses Timer;

var Timer0: TTimer;
begin
  Timer0:= TTimer.Create(Timer_0);
  with Timer0 do
  begin
    Prescal:= Div4;
    CNT:= 6000000;
    CUR:= 0;
    Start;
    while not Timer0.INT do ;
    //执行到这里是1秒
    Stop;
    Free;
  end;
end;
[/code]

6.RTC

[code]
uses RTC;

var DT: TYMDHNSW;
begin
  with DT do
  begin
    Year:= 14;
    Month:= 10;
    Day:= 20;

    Hour:= 9;
    Minute:= 30;
    Second:= 0;

    Week:= Monday;
  end;
  TRTC.Instance.DateTime:= DT;

  FillChar(DT, SizeOf(TYMDHNSW), 0);
  DT:= TRTC.Instance.DateTime;
end;
[/code]

7.General Purpose

[code]
uses GP;

var Data: LongWord;
begin
  TGP.Instance.TMR_GP[0]^:= 123456789;
  Data:= TGP.Instance.TMR_GP[10]^;
end;
[/code]

8.TWI
[code]
uses TWI;

var TWI0: TTWI; Data: Byte;
begin
  TWI0:= TTWI.Create(TWI_0);
  TWI0.Write($34, $35, $83);
  TWI0.Read($34, $35, Data);
  TWI0.Free;
end;
[/code]

9.WatchDog
[code]
uses WatchDog;
begin
  TWDOG.Instance.Interval:= S16; //16秒间隔
  TWDOG.Instance.ForceRestart:= True; //未喂狗重启
  TWDOG.Instance.Start;
  TWDOG.Instance.Reset; //喂狗
  TWDOG.InstanceStop;
end;
[/code]

10.Temperature
[code]
uses TP;

var T: Double;
begin
  T:= TTemperature.Instance.Temperature;
end;
[/code]

历史版本:
2014.12.06 v0.8 增加Temperature封装类,修正所有的TGOURP类型为TGROUP,抱歉,手误拼写错误
2014.10.21 v0.7 增加WatchDog封装类
2014.10.20 v0.6 增加GP封装类
2014.10.18 v0.5 增加TWI封装类,修正部分bug
2014.10.16 v0.3 增加General Purpose封装类
2014.10.15 v0.3 增加RTC封装类,修正部分变量位定义的bug
2014.10.14 v0.2 增加Timer封装类
2014.10.03 v0.1 完成GPIO、LRADC、PWM的封装类

空文件

简介

Allwinner A20 free pascal Library Class 展开 收起
Pascal
取消

发行版

暂无发行版

贡献者

全部

近期动态

加载更多
不能加载更多了
Pascal
1
https://gitee.com/Alancheng86/ClassA20.git
git@gitee.com:Alancheng86/ClassA20.git
Alancheng86
ClassA20
ClassA20
master

搜索帮助