RTC支持三种中断,分别是秒中断,闹钟中断和溢出中断。
从这三种方式可以看出,正常情况下,RTC的中断是秒级的。
如果使用设置分频的方式让秒中断变成毫秒级中断的话,RTC就不能当作时真正的秒时钟来用了。
如果需要毫秒级中断,推荐使用systick.
所有使用Cortex-M3内核的CPU都有一个systick计数器。
在不使用操作系统的工程中,一般都用systick作为毫秒级中断发生器。
在使用ucos或其它简单操作系统的工程中,systick都作为操作系统的系统时钟滴答,周期是1毫秒一个中断。
另外您也可以使用STM32的几个TIM。
TIM1是最复杂的,在只需要简单功能情况下,建议使用TIM2或其它TIM。
rtc根据公式f=frtcclk/(prl[19:0]+1)来定义计数器的时钟频率,prl[19:0]是rtc预分频装载寄存器,也就是你需要填的分频数,frtcclk为rtc时钟源的频率,rtc有三个时钟源:1、hse除以128;2、lse振荡时钟;3、lsi振荡时钟;根据你所填的分频数大概可以判定你所选的rtc时钟源为lse
32.768khz,然后根据公式就可以算出你的计数器的时钟频率为32768/(32767+1)=1hz,也就是每秒中断一次。说直接一点就是对rtc时钟源分频得到自己想要的一个时钟频率。
1)利用STM32 CubeMX设置唤醒频率,我这里设置的是每0.5s唤醒一次
2).配置后发现能进入RTC唤醒中断,但是不能从待机模式下唤醒,原因是我原来使用的是WakuUp按键唤醒的,需要把HAL_PWR_EnableWakeUpPin(PWR_WAKEUP_PIN2);这个关掉,才能正常唤醒。
本文标签:stm32rtc每毫秒触发一次