原创 STM32之 RTC调试

2009-6-26 13:27 3137 9 10 分类: MCU/ 嵌入式

近来调试STM32,由于不喜欢用ST提供的库,所以把很多代码都自己写了一遍,期间也发现了很多的问题,其实主要是ST的资料太乱,很多东西不好找啊!


不过不管这么说,总算是可以跑起来了,这里主要说说STM32的RTC。


1. STM32的RTC其实就是一个可以使用后备电池,使用外部晶体(32.768K)的计数器。我们一般采用计数1Hz的方式,即每秒计数器加一的方式计数。


2. 因此,使用的时候我们只能读出一个基础秒的计数值,这样我们可以算出当前的时、分、秒,权且当作我们的时钟吧。


3. 起初想到了计数器的溢出,如果一直开机的话,无所谓,我可以在24:00:00的时候让计数器复位,从0开始计,但是关机状态怎么办?后来自己算了一下:RTC是一个32位的计数器,也就是溢出需要0x1_0000_000秒,除以每天24*60*60秒的话,那就是49710天,大约136年吧! 到此才发现自己的想法很幼稚!


4. RTC的初始化采用备份寄存器中检查标志位实现(ST的代码的做法),但是RTC时钟的初始化需要注意一点:rPWR_CR |= __BIT(8),也就是需要使能写入,否则按照ST的代码,在进行第二次开机(非初始化模式)后,RTC_SetCounter()函数无法设置。


5. 至于这里的年月日,网上有很多相关的算法,但是我想,既然用了他,就不要渴求太多了。哈哈。


这里只是一些个人的感悟,其它部分会在以后的学习中继续记录。

PARTNER CONTENT

文章评论1条评论)

登录后参与讨论

用户1393282 2010-4-23 22:17

集成的是没有专门的芯片方便啊
相关推荐阅读
用户1156376 2014-08-18 17:23
[博客大赛]MDK下代码的分段管理 续3
继续写点分段管理的问题。 设计思想主要是设计一个通用的BSP,固化后只需要修改APP代码就可以,这适用于远程升级的系统或是进行二次开发的系统。 考虑到编译器链接的时候会把没有使用的代码段(...
用户1156376 2014-02-27 18:14
Freescale MCU SPI
Freescale S12 SPI: 0. 以下所述为查询模式使用SPI 1. SPI控制器有两个中断, 数据发送(SPTEF)和数据接收(SPIF) 2. 数据发送(SPTEF)标志...
用户1156376 2014-02-26 09:17
Freescale MCU摘记
仅用于记录Freescale的点滴记录: 1. 把AD口用作IO口的方法: 除了正常的设置外,还需要把 ATDDIEN 寄存器写为0xFF, 这样使能了数字IO。否则默认为AD输入。 ...
用户1156376 2013-12-14 11:33
[STM32]MDK下代码的分段管理 续2
前文所述的代码分段,限定比较大,对于使用 #pragma arm section code=".ARM.__at_0x8100000" 固定地址的方式,每个文件都需要指定不同的地址以区别。...
用户1156376 2013-12-09 18:12
[STM32]MDK下代码的分段管理
编译大型的程序时,可能某一段代码固定之后不再改变(比如BSP),而应用部分经常修改。在这种情况下,如果使用在线升级或是Bootloader的方式升级程序时,你就觉得每次升级的代码有一部分是重复的(...
用户1156376 2012-10-14 09:10
【uCOS-III移植笔记】OS启动过程
(1) 关闭系统中断 (2) CPU_Init(); 初始化CPU服务(时间戳、中断时间测量、CPU信息初始化等) (3) OSInit(); 初始化系统(系统变量、系统任务...
EE直播间
更多
我要评论
1
9
关闭 站长推荐上一条 /3 下一条