完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
提到RTC,就不能不说备份寄存器的作用。一般情况下,在设置了RTC的时间后,都会在备份寄存器中做一个标志,表明当前时间已经被设置过,不需要重新设置;当没有检测到这个标志,则证明RTC曾经断过电,时间是不正确的。今天就来说已说备份寄存器类的用法。在使用之前,请先在https://github.com/tjCFeng/ClassA20下载ClassA20类库。 备份寄存器,在Allwinner中叫做General Purpose。它具有和RTC一样的特性,就是断电后寄存器中的内容不消失,可以依靠RTC电池来维持,只不过它没有自动累加的功能。 备份寄存器恐怕是所有功能中最最简单的一个了,简单到只有赋值、读取,没有其他的功能了,不过它可以当作一个全局变量,一个可以跨进程、断电不消失的全局变量。 同以前一样,还是先来看看对它的封装 Allwinner A20共有16个备份寄存器,每个可以记录32位的整型值。为了使用起来简单方便,它被封装成了单例,直接指定索引号即可写入和读取。 程序的编写方法这次改变一下,不再使用窗体,直接编译一个不带有任何交互界面的程序来测试它。创建方法首先在菜单中选择工程,然后点击创建,在选择“程序”。当然也可以选择“控制台程序”,差不多的 创建成功后自动生成一个最简单的程序框架,begin和end间就是入口,相当于c的main函数 还是在工程中添加ClassA20文件夹的路径,然后在uses中引用GP单元,开始编写代码。 因为寄存器在程序中只是一个指针,调试过程中并不能直接显示它的值,所以定义了一个长整型的变量,方便调试时的查看 程序写好后设置断点并运行。断点可以在程序运行到该行代码时停下来,进行一些调试操作。当运行到给这个变量赋值备份寄存器值的代码后,将鼠标放在变量上就能显示当前的值了。第一次运行,备份寄存器的值默认是0,给备份寄存器写入一个0xFF后再读出,这个变量就是255 这个时候,可以关机断电,任意时候开机再来读取这个寄存器,它的值还是255,除非中途RTC电池被断掉。 TGP.Instance.GetGP和SetGP是封装后的方法,参数直接指定备份寄存器的索引号就可以了。除此之外,还可以直接对寄存器指针进行操作,也很简 寄存器的指针是一个数组,给定下标来操作,和普通的变量没什么区别 注意,由于香蕉派的电源管理部分可能有一些小问题,造成断电后备份电池掉电很快,所以我目前并没有在香蕉派上断电后成功读取出备份寄存器的值,不过可以在其他板子上尝试此程序。 请在https://github.com/tjCFeng/ClassA20下载ClassA20类库。 |
|
相关推荐
2 个讨论
|
|
只有小组成员才能发言,加入小组>>
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-11-5 09:27 , Processed in 1.401093 second(s), Total 73, Slave 53 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号