您的位置:首页 > 文旅 > 美景 > STM32G070休眠例程-STOP模式

STM32G070休眠例程-STOP模式

2024/10/6 10:38:58 来源:https://blog.csdn.net/li_654/article/details/139727988  浏览:    关键词:STM32G070休眠例程-STOP模式

一、简介

        主控是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唤醒时,不执行功能输出;

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com