STM32
直播中

张健

8年用户 1439经验值
私信 关注
[问答]

STM32G071WakeUp中断配置为1秒,但实际中断频率却小于1秒是为什么?

之前用F1的RTC时,有一个秒中断功能,即每一秒产生一个中断,可以在中断里面刷新时间。现在G071的RTC没有了秒中断的功能,查询类似M0内核的F0系列,发现有一个WakeUp中断可以配置成1s中断一次,于是使用CUBEMX进行配置,

按上图参数进行配置,然后再中断里对一个变量进行累加,当秒值为0时开始累加,在秒值为50时,累加值只有30多,明显是慢了。
然后修改Wake Up Counter的值,将其修改为1023,再次测试,却发现效果一致。

回帖(2)

荣徽

2024-4-1 15:27:39
看看时钟源是不是选择到了LSE,默认内部时钟源是LSI。
举报

石玉兰

2024-4-1 16:53:48
有几个可能导致实际中断频率小于预期的问题:

1. RTC时钟源选择:检查时钟源是否配置正确。RTC时钟源可以选择LSE、LSI或HSE。需要确保选择的时钟源稳定,并配置正确的时钟频率。
2. RTC预分频器配置:通过预分频器可以将RTC输入频率分频为更低的频率。请检查预分频器配置是否正确,以确保RTC的计数频率为1Hz。
3. 中断优先级配置:检查是否正确设置了RTC或者WAKEUP中断的优先级。确保RTC或WAKEUP中断的优先级高于其他中断,以确保中断可以正确触发。
4. 中断处理时间:检查中断处理程序的执行时间是否超过了1秒。如果中断处理程序太长,可能会导致中断频率较低。

此外,关于RTC秒中断功能在STM32G0系列中的缺失,可能是为了降低功耗而做出的调整。在某些低功耗应用中,秒中断可能会导致系统无法进入深度睡眠模式,因此被删除或禁用。如果需要实现类似功能,可以考虑通过外部低速时钟源触发定时器中断,来实现1秒的定时功能。
举报

更多回帖

发帖
×
20
完善资料,
赚取积分