3. 检查初始化代码的位置
确保初始化代码在主函数的最开始部分执行,并且没有任何条件或中断会阻止其运行。尤其要确保进入低功耗模式的代码不是在初始化代码之前执行。
- int main(void) {
- // 初始化代码
- HAL_Init();
- SystemClock_Config();
- // 其他初始化代码
- while (1) {
- // 主循环
- }
- }
4. 停止模式配置
检查停止模式的配置是否正确,确保进入停止模式前所有必要的初始化已经完成。可以在进入停止模式之前打印一些调试信息来确保初始化代码已经执行。
5. RTC 中断配置
检查 RTC 中断配置,确保 RTC 中断能够正确唤醒 MCU 并恢复正常运行。
- void RTC_Wakeup_Init(void) {
- // 配置 RTC 唤醒中断
- HAL_RTCEx_SetWakeUpTimer_IT(&hrtc, 0x7FFF, RTC_WAKEUPCLOCK_CK_SPRE_16BITS);
- }
- void HAL_RTCEx_WakeUpTimerEventCallback(RTC_HandleTypeDef *hrtc) {
- // RTC 唤醒中断回调函数
- }
|