近来调试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. 至于这里的年月日,网上有很多相关的算法,但是我想,既然用了他,就不要渴求太多了。哈哈。
这里只是一些个人的感悟,其它部分会在以后的学习中继续记录。
用户1393282 2010-4-23 22:17