上篇文章中我用RTC定时,实现了定时从standby模式下唤醒,但是有个问题,定时时间太短了。 如果我选择把RTC时钟(32.768KHz)进行16分频,从代码函数的入参counter的类型为U32,可知其最大值为0xFFFF。所以代入公式:0xFFFF = max定时时间 * (32768 / 16),解得max定时时间 = 31(s) 1 N0 D$ ], a( d: h; c 如果时钟源选择1Hz,那么最大定时时间也就0xFFFF(s) = 18(H) 4 p3 N& a x& ?/ E5 h 如果我要拿这个来做日历的定时刷新,只需要在一天的00:00唤醒,刷新即可,如果用上文的方法一天至少要唤醒2次,其中有一次是完全无意义的。 所以今天我要来玩一下RTC的闹钟,他就没有这个问题了,只有在RTC时钟与你设置的定时时间一致时你才会被唤醒 工程的话就用上一篇那个 一.Cube修改 然后来到RTC界面,把上次打开的wkup关掉,把闹钟A打开% V6 c* ?+ g: {9 T' X, ~ " m) ]% g# Z) n u' L6 l' S 接下来到参数界面配置一下参数。我要把默认RTC的时间设置成23点59分30秒。然后闹钟触发时间配置成0点0分0秒 % C7 \8 u; A! L! u: ] 然后要把NVIC开一下 ( m S9 u& Z; G1 T" a! E# T& ]! z7 l 然后生成代码(图略) * z; i' }9 P+ B. q* T 二.代码修改) ?. i/ T. p2 X; p8 D. \ 代码几乎不用修改,只要加一句话即可,如下
/ [# g$ X, v/ A 运行效果: 首次上电后过了30S,就到了我设置的0点0分0秒,此时就会被闹钟唤醒,打印的时间也正确。之后他就又去睡觉了,并且我观察了好几分钟都没有被唤醒。应该是达到了我今天的目的。 , s# [% M0 W) B# s2 P3 n3 w+ i# t8 y# c! Y. n7 l) t) t; i 工程:
|
【STM32N6570-DK评测】1.你好N6
【STM32H7S78-DK评测】-5 LVGL&DMA2D DEMO测试
【STM32H7S78-DK评测】步进电机控制介绍一与tensorflow安装与测试
【STM32H7S78-DK评测】XIP模板问题处理与电机控制
【STM32H7S78-DK评测】开发板初识与工程模板创建
【NUCLEO H533RE评测分享】高性能和低成本双Buff加持的NUCLEO H533RE
【NUCLEO-H533RE评测】+09 低功耗测试
【NUCLEO-H533RE评测】+08 初识FreeRtos
【NUCLEO-H533RE评测】+07 IIC调试
【NUCLEO-H533RE评测】+06 ADC调试