[N32G45x]

RTC亚秒闹钟该如何设定

[复制链接]
530|8
手机看帖
扫描二维码
随时随地手机跟帖
sy12138|  楼主 | 2022-10-31 15:26 | 显示全部楼层 |阅读模式
#每日话题#

RTC闹钟大家可能比较熟悉,但是说到亚秒闹钟,大家可能就比较陌生了,今天给大家讲一下N32G03x亚秒闹钟时间的设置(其他系列也差不多)
首先我们要知道亚秒闹钟的时钟是什么?
这里我们又不得不提到RTC的时钟源,RTC的时钟源一共有三种:
  • HSE/128
  • LSI
  • LSE

然后再通过两个预分频器:
  • 7位异步分频器DIVA和
  • 15位同步分频器DIVS

平时我们所用的日历时钟就是利用给DIVA和DIVS赋值,然后配成RTCCLK/((DIVA+1)*(DIVS+1)) = 1Hz
如果RTC所选择的时钟源是LSE,即RTCCLK = 32768Hz,此时配置DIVA = 7F,DIVS = FF,此时配置成的便是1Hz时钟
言归正传,回归我们今天的主题,RTC亚秒闹钟的设置,这里我们默认配置RTC时钟为1Hz即DIVA = 7F,DIVS = FF
这里我们要知道亚秒的时钟并不是RTC时钟,亚秒时钟 = RTCCLK/(DIVA+1) = 1/256
然后就是重点了
RTC_ConfigAlarmSubSecond(RTC_B_ALARM, 256, RTC_SUBS_MASK_SS14_7);
10fc58bbb483fc74da5bb134c71617b.png
我们通过这个库函数来设定亚秒值和比较位,这里我们设置亚秒值为256,比较位设置0-6位,即每个RTCCLK可以匹配两次,即500ms触发一次闹钟
52f4a78a4ed6f05ec9c1a47363ac880.png
这里我们也可以这样配置
RTC_ConfigAlarmSubSecond(RTC_B_ALARM, 256, RTC_SUBS_MASK_SS14_6);
即匹配0-5位,此时每个RTCCLK就可以匹配4次,即250ms匹配一次
45bc1ba68b4657532510a811b8efd3b.png

这里我们也要注意亚秒值的设置不能大于DIVS

使用特权

评论回复
UFO8848| | 2022-10-31 16:29 | 显示全部楼层
感觉RTC闹钟用的并不是很多哎,用自动唤醒比较多一点

使用特权

评论回复
AloneKaven| | 2022-11-4 22:19 | 显示全部楼层
嗯,用自动唤醒比较多

使用特权

评论回复
V853| | 2022-11-5 09:47 | 显示全部楼层
亚秒级别是?比纳秒级别还小的单位吗?

使用特权

评论回复
zhouchen605768| | 2022-11-22 21:36 | 显示全部楼层
RTC_B_ALARM与RTC_A_ALARM有什么区别没?

使用特权

评论回复
zhouchen605768| | 2022-11-22 22:22 | 显示全部楼层
可以帮忙解释下,为何亚秒值为256,对比位设置位0到6位,每个RTCCLK可以匹配两次

使用特权

评论回复
sy12138|  楼主 | 2022-11-23 09:50 | 显示全部楼层
zhouchen605768 发表于 2022-11-22 22:22
可以帮忙解释下,为何亚秒值为256,对比位设置位0到6位,每个RTCCLK可以匹配两次 ...

可以看到亚秒时钟是1/256,设值为256及100000000,屏蔽位14-7,即匹配值是0000000,即每经过128的整数倍就会触发,也就是128*1/256 = 0.5s;这个是我自己理解的亚秒匹配,有不对请指出

使用特权

评论回复
UFO8848| | 2022-11-24 14:39 | 显示全部楼层
看起来还不错

使用特权

评论回复
ybbo212126| | 2023-3-2 11:47 | 显示全部楼层
没搞明白,请教下怎么设置1 秒是闹钟,RTC_ConfigAlarmSubSecond(RTC_B_ALARM, 256, RTC_SUBS_MASK_SS14_8) 设置了没效果,谢谢

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

92

主题

404

帖子

12

粉丝