大鹏2365 发表于 2025-5-31 20:51

使用 RTC 中断实现周期性唤醒

MM32F3273 的 RTC 支持 3 种中断源:

1. 秒中断
每秒触发一次。

c
复制
编辑
RTC->CR |= RTC_CR_SECIE;
NVIC_EnableIRQ(RTC_IRQn);
2. 闹钟中断(Alarm)
精确唤醒,可设置某一时刻唤醒。

c
复制
编辑
RTC->CR |= RTC_CR_ALRAIE;
NVIC_EnableIRQ(RTC_Alarm_IRQn);
3. WakeUp 计数器中断(WakeUp Timer)
自定义间隔(秒或亚秒)唤醒 MCU,非常适合周期性低功耗唤醒。

c
复制
编辑
RTC->CR &= ~RTC_CR_WUTE;                // 关闭 WakeUp
while (!(RTC->ISR & RTC_ISR_WUTWF));    // 等待写入窗口
RTC->WUTR = 32768 - 1;                  // 1 秒(取决于 LSE)
RTC->CR |= RTC_CR_WUCKSEL_2;         // 选择 LSE 时钟
RTC->CR |= RTC_CR_WUTIE | RTC_CR_WUTE; // 开启中断和计数器
NVIC_EnableIRQ(RTC_WKUP_IRQn);

caigang13 发表于 2025-6-2 10:40

一般在低功耗应用中就是这样处理的
页: [1]
查看完整版本: 使用 RTC 中断实现周期性唤醒