你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

【NUCLEO-U083RC评测】⑧RTC&STANDBY Alarm唤醒功能

[复制链接]
小萝卜啦啦啦 发布时间:2024-6-2 20:29
# P2 a3 \5 K2 U8 {
上篇文章中我用RTC定时,实现了定时从standby模式下唤醒,但是有个问题,定时时间太短了。
7 K% o# g0 D: x7 E
, p5 w" [2 ~( K2 ~+ {如果我选择把RTC时钟(32.768KHz)进行16分频,从代码函数的入参counter的类型为U32,可知其最大值为0xFFFF。所以代入公式:0xFFFF = max定时时间 * (32768 / 16),解得max定时时间 = 31(s)& u5 ]0 s4 N1 D0 o, @, z, ^4 b

3 w; Q/ m  n6 d6 X- J如果时钟源选择1Hz,那么最大定时时间也就0xFFFF(s) = 18(H)3 L6 e& D$ c4 N

; L) k4 b# A7 ~8 h1 X* f  p6 {如果我要拿这个来做日历的定时刷新,只需要在一天的00:00唤醒,刷新即可,如果用上文的方法一天至少要唤醒2次,其中有一次是完全无意义的。
' z8 Q5 h9 \+ a# l* X1 o
1 }$ |3 O7 d5 p+ y% A" P) h所以今天我要来玩一下RTC的闹钟,他就没有这个问题了,只有在RTC时钟与你设置的定时时间一致时你才会被唤醒
) L" ^3 |; X( v$ A3 Q- |2 i
% f: D) c  ^3 T) I工程的话就用上一篇那个
1 M: X6 q. C: |" @# O5 g0 i% w( y: y. ^
' `8 Q1 V7 v2 b. Z
一.Cube修改9 g- v/ s, o3 g' U; e
然后来到RTC界面,把上次打开的wkup关掉,把闹钟A打开# L% {! h' K3 e1 i3 s
2.png
2 A( a% e1 d) u; D8 w5 c9 D8 X2 m( t, w; M9 ~/ ^. N
接下来到参数界面配置一下参数。我要把默认RTC的时间设置成23点59分30秒。然后闹钟触发时间配置成0点0分0秒

8 g/ p+ n2 n( b2 Z5 Y
3.png . c; W8 T+ o. S

5 E* e3 i  _( V: }& G# A2 a' ^" C9 q
4.png
& O6 P3 R2 J- h/ ]" J: _- |0 |7 d- E* A4 O; X5 b

+ N2 H& v, S* v2 d; x- l; Q然后要把NVIC开一下
* Q1 y2 z/ o# m6 z( O
5.png . V8 X  D& y% f
, t8 q' g2 f$ }, b; [

& A# p6 D0 o1 T8 _然后生成代码(图略)# m9 t3 ~7 t6 X3 X

: e7 ]3 C! p8 ?  w8 D- @& h. G二.代码修改# F+ i+ p9 [* S; w8 W
代码几乎不用修改,只要加一句话即可,如下
3 w. q+ F$ i) o6 T8 t- J
  1.     /* 清除闹钟标志位 */, ]$ S) G% b- d$ L. _
  2.     __HAL_RTC_ALARM_CLEAR_FLAG(&hrtc, RTC_FLAG_ALRAF);
    : W1 D, o7 ~, S# U. r8 w9 O& E
复制代码
7.png
8 v" [0 i% A( V, i9 G/ G
& `$ S: u7 P3 k( `% w& k, e
运行效果:

$ e4 E. i+ X  x1 l$ `% c1 s! f2 I. n
6.png
8 [( k& {9 L8 \+ s
9 \9 x8 F* B% ]6 l" T
首次上电后过了30S,就到了我设置的0点0分0秒,此时就会被闹钟唤醒,打印的时间也正确。之后他就又去睡觉了,并且我观察了好几分钟都没有被唤醒。应该是达到了我今天的目的。

2 Z7 z4 V' j3 C4 x9 T" ?
' a- j; k: ]; {# T
工程: STM32U0_RTC_Alarm_standby_test.rar (5.22 MB, 下载次数: 0)
收藏 评论0 发布时间:2024-6-2 20:29

举报

0个回答
关于意法半导体
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
招聘信息
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
关注我们
st-img 微信公众号
st-img 手机版