|
上篇文章中我用RTC定时,实现了定时从standby模式下唤醒,但是有个问题,定时时间太短了。 如果我选择把RTC时钟(32.768KHz)进行16分频,从代码函数的入参counter的类型为U32,可知其最大值为0xFFFF。所以代入公式:0xFFFF = max定时时间 * (32768 / 16),解得max定时时间 = 31(s)4 P0 @8 ?4 s0 d . V6 ?$ A* J( I" U# { 如果时钟源选择1Hz,那么最大定时时间也就0xFFFF(s) = 18(H)) I6 ^6 h' g9 ^9 `. H7 E+ o 如果我要拿这个来做日历的定时刷新,只需要在一天的00:00唤醒,刷新即可,如果用上文的方法一天至少要唤醒2次,其中有一次是完全无意义的。$ ^4 h K; `/ r# v3 f 所以今天我要来玩一下RTC的闹钟,他就没有这个问题了,只有在RTC时钟与你设置的定时时间一致时你才会被唤醒 5 O" r- \& e5 A, x) M 工程的话就用上一篇那个6 L2 m9 [. p" o7 U 4 p- j0 ^ ~6 e; O 一.Cube修改. D: c* n' P+ S G6 R$ R 然后来到RTC界面,把上次打开的wkup关掉,把闹钟A打开
接下来到参数界面配置一下参数。我要把默认RTC的时间设置成23点59分30秒。然后闹钟触发时间配置成0点0分0秒
4 N: Q" F. m# L) P) K 然后要把NVIC开一下
5 x. v4 E8 y8 N$ a 然后生成代码(图略)+ }2 @+ ?8 e, k7 k- v 二.代码修改( S! A: d+ ], Z$ r. k. S 代码几乎不用修改,只要加一句话即可,如下
运行效果:
首次上电后过了30S,就到了我设置的0点0分0秒,此时就会被闹钟唤醒,打印的时间也正确。之后他就又去睡觉了,并且我观察了好几分钟都没有被唤醒。应该是达到了我今天的目的。 工程:
STM32U0_RTC_Alarm_standby_test.rar
(5.22 MB, 下载次数: 0)
|
【STM32H5 评测】+ 增加ETH外设和NetX协议栈实验
【STM32H5 评测】+ H5E5专用OLED点亮实验
【STM32H5 评测】+ 多外设同时开启稳定性简要评测
【STM32H5 评测】Part3 STM32H5E5 密码学加速性能测试
【STM32H5 评测】 Part1 Cortex-M33@250MHz内核性能测试
【STM32H5 评测】+ CPU性能测试
【STM32H5 评测】+ 存储性能测试
【STM32H5 评测】Part2 TrustZone示例代码工程移植重建
【STM32H5 评测】基础硬件加密与随机数性能 - STM32H5E5实测硬件AES加解密、HASH运算、TRNG真随机数输出速率与稳定性
【STM32H5 评测】NUCLEO-H5E5ZJ 使用 TrustZone 安全分区系统实践测试
微信公众号
手机版