一、简介
主控是STM32G070,在低功耗休眠模式时采用Stop0模式,通过外部中断唤醒,唤醒之后,即可开启对应的功能输出,另外程序中设计有看门狗8S溢出,这个采用RTC定时6S周期唤醒去喂狗,RTC唤醒喂狗的过程中,设备现象上看不出来。
该MCU Stop模式休眠功耗如下;
该MCU唤醒源如下:
二、配置过程
1.RTC周期唤醒配置
2.外部中断唤醒配置
3.看门狗配置
三、生成代码
1.STOP0休眠模式
//STOP0休眠模式
LL_PWR_SetPowerMode(LL_PWR_MODE_STOP0);
LL_LPM_EnableDeepSleep();
__WFI();
2.RTC周期唤醒,外部中断唤醒
//RTC唤醒回调函数 6S唤醒一次
void HAL_RTCEx_WakeUpTimerEventCallback(RTC_HandleTypeDef *hrtc)
{g_stuSleepDataHandle.b_u8RtcWakeUpFlag = 1;HAL_IWDG_Refresh(&hiwdg);
} //外部中断回调函数
void HAL_GPIO_EXTI_Falling_Callback(uint16_t GPIO_Pin)
{if((GPIO_Pin == POW_WKUP_KEY_Pin) || (GPIO_Pin == PV_IN_WKUP_Pin)){
// HAL_GPIO_TogglePin(SOC_LED4_GPIO_Port, SOC_LED4_Pin); //调试g_stuSleepDataHandle.b_u8ExtiIntWakeUpFlag = 1;}
}void HAL_GPIO_EXTI_Rising_Callback(uint16_t GPIO_Pin)
{if((GPIO_Pin == USB_WKUP_Pin) || (GPIO_Pin == IP2366_INT_WKUP_Pin)){
// HAL_GPIO_TogglePin(SOC_LED4_GPIO_Port, SOC_LED4_Pin); //调试g_stuSleepDataHandle.b_u8ExtiIntWakeUpFlag = 1;}
}
四、注意避坑
1.进入休眠之前,I/O电平根据电路设置,以降低休眠时硬件功耗;
2.进入休眠之前,所有计时及标志位清零;
3.唤醒之后,重新初始化一次系统时钟;
4.RTC唤醒时,不执行功能输出;