STM32学习日志——RTC实时时钟

2023-04-12 11:00   346   0  

以前刚买手机时,有一个困惑,为什么时钟拔掉电池后时间就暂停了,而手机拔掉电池后,时间照样在走,为了证明是否是联网的原因,将网络关掉后还是一样。后来学了单片机才明白系统有一个实时时钟,由一个小纽扣电池供电。手机应该也是类似的原因。


首先RTC的时钟源由RCC_BDCR的RTCSEL位控制,一般选择LSE振荡器,接着通过RTCPRL位将其分频,假设LSE为32.768kHZ,则PRL写入32767可得到周期为1秒的信号。而RTC_DIV是一个递减的计数器,用PRL的数据装载,每次归零后重新装载,通过读取DIV的当前值,可以获得更精确的时间,比如DIV的当前值为3276,说明还有(3276/32767=0.1s)完成一个周期,说明这个周期过了0.9s。


RTC_CNT是一个32位的寄存器,每当TR_CLK一个周期后,CNT加一,按照上面的配置,则是每1s加一,一个CNT值其实就是对应一个时间。RTC有3个中断,秒中断,溢出中断,闹钟中断。秒中断比较常用,其实是一个PRL溢出一次,这个周期通常为1s。溢出中断是指CNT溢出,为2的32次方,假如是每1sCNT加一的话,大约是136年溢出一次。闹钟中断是指往该寄存器存放一个数,当它与CNT的当前值一样时触发中断。


30e8df60-ac53-11ed-bcd2-b8ca3a6cb5c4.webp30e8df61-ac53-11ed-bcd2-b8ca3a6cb5c4.webp30e8df62-ac53-11ed-bcd2-b8ca3a6cb5c4.webp30e8df63-ac53-11ed-bcd2-b8ca3a6cb5c4.webp


明天想做一个OLED显示实时时间,并有闹钟功能的一个电子设计。以后学更多的知识后再往里面加闹铃歌曲,每天都不一样,这样起床不会那么艰难了,汗。


30e8df64-ac53-11ed-bcd2-b8ca3a6cb5c4.webp




登录icspec成功后,会自动跳转查看全文
博客评论
还没有人评论,赶紧抢个沙发~
发表评论
说明:请文明发言,共建和谐网络,您的个人信息不会被公开显示。