-
Notifications
You must be signed in to change notification settings - Fork 11
/
Copy pathReadme.txt
199 lines (162 loc) · 4.14 KB
/
Readme.txt
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
全志A20处理器底层操作的一些封装,采用free pascal,封装类。
使用方法:在工程中添加该类所在的文件夹路径即可。
一般每一个外设功能分为两部分封装,一种是直接对某一Pin或通道的操作类,实现对常用功能的封装;另一种是对该类型外设的寄存器操作类,用来对前者没有封装到的功能进行设置。
目前实现了对GPIO、LRADC、PWM的封装,后续功能陆续完成,并且正在尝试增加对中断的响应功能。
该类可用在控制台、有界面或无界面程序中均可,并且根据编译器的不同,也可用在不同的操作系统,只需很少的代码改动,如引用不同的单元等。
全志其他系列的处理器也可使用该类,如A10等,只需要根据差异的部分进行改动,或者继承重新实现。
作者:tjCFeng
例子:
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的封装类