|
4 T$ G" s" |! e4 p3 t. N% ` 上篇文章中我用RTC定时,实现了定时从standby模式下唤醒,但是有个问题,定时时间太短了。 - E* o J1 r1 B. l/ H- N" r4 F6 W 如果我选择把RTC时钟(32.768KHz)进行16分频,从代码函数的入参counter的类型为U32,可知其最大值为0xFFFF。所以代入公式:0xFFFF = max定时时间 * (32768 / 16),解得max定时时间 = 31(s)* Q/ w4 @( T% x! ~- }8 @" V; [* u) d 0 A( q+ u8 a4 S+ E$ { 如果时钟源选择1Hz,那么最大定时时间也就0xFFFF(s) = 18(H)% A% y* D+ o6 W 如果我要拿这个来做日历的定时刷新,只需要在一天的00:00唤醒,刷新即可,如果用上文的方法一天至少要唤醒2次,其中有一次是完全无意义的。1 O- u7 u- h3 r0 w* D' q" ^ " w# ]/ u s* L6 w2 C 所以今天我要来玩一下RTC的闹钟,他就没有这个问题了,只有在RTC时钟与你设置的定时时间一致时你才会被唤醒% P; E" }- H, J; D# x! {% ^. H8 F) z+ x 工程的话就用上一篇那个 一.Cube修改 然后来到RTC界面,把上次打开的wkup关掉,把闹钟A打开
接下来到参数界面配置一下参数。我要把默认RTC的时间设置成23点59分30秒。然后闹钟触发时间配置成0点0分0秒
+ z# a$ G) w$ Q+ \4 @ 然后要把NVIC开一下
( v+ {! W$ k& k1 C3 u& c 然后生成代码(图略) 二.代码修改 代码几乎不用修改,只要加一句话即可,如下9 k' j0 X$ n9 e6 c, R
' V3 o) V; w- {4 c- V& y- h9 n5 K3 n 运行效果:
首次上电后过了30S,就到了我设置的0点0分0秒,此时就会被闹钟唤醒,打印的时间也正确。之后他就又去睡觉了,并且我观察了好几分钟都没有被唤醒。应该是达到了我今天的目的。 / I4 n: c; ?" B) `! j }: P( } v2 j j6 F q6 `" F 工程:
STM32U0_RTC_Alarm_standby_test.rar
(5.22 MB, 下载次数: 0)
|
【STM32U3评测】使用INS5699 RTC模组
【评测汇总】STM32U3 系列开发板评测全汇总 | 吃透新品核心性能与实战场景
我中奖啦,这敢想象吗😁😄😄
【STM32U3评测】低功耗模式功耗测量
【STM32U3评测】并不优雅的点亮WS2812
【STM32U3评测】移植RTOS
【STM32U3评测】实战项目:无电池温湿度计
【STM32U3评测】不太一样的点灯及编程测试
【STM32C0评测】4、驱动Lorasx126x,实现透传
好用软件推荐-TouchGFX Designer
微信公众号
手机版