本文介绍STOP_RTC模式下,设置进入低功耗休眠时间的方法。
低功耗的休眠时间的设置首先需要确定RTC的基准时间,我们一般将其设置为1秒,这在《STM32L0低功耗设计4: RTC模块1秒时钟的产生方法》中已经介绍过,大家看一下就好。
接下来,就需要对HAL_RTCEx_SetWakeUpTimer_IT函数的第2个参数进行设置了。
具体计算公式:数值 = 定时时间(秒)*(RTC时钟)/16,其中16为该参数的第2个参数,RTC时钟要看具体的时钟源,在我设计的项目中,使用的是LSI,则为37000。
进一步计算:数值 = 定时时间(秒) * 37000 / 16 = 定时时间(秒)* 2312。如果将定时时间当作参数传递,我们可以这样调用该参数:
HAL_RTCEx_SetWakeUpTimer_IT(&hRTC, (uint32_t)u8_Second * 2312, RTC_WAKEUPCLOCK_RTCCLK_DIV16);
最后给出完整的带有时间设置的进入STOP_RTC模式的函数。
void CRtc::EnterStopRtcMode(uint8_t u8_Second)
{
HAL_RTCEx_DeactivateWakeUpTimer(&hRTC);
HAL_RTCEx_SetWakeUpTimer_IT(&hRTC, (uint32_t)u8_Second * 2312, RTC_WAKEUPCLOCK_RTCCLK_DIV16);
HAL_PWR_EnterSTOPMode(PWR_LOWPOWERREGULATOR_ON, PWR_STOPENTRY_WFI);
}
我们在调用上面的函数时,直接以秒为单位传递参数即可。
原创性文章,转载请注明出处
CSDN:http://blog.csdn.net/qingwufeiyang12346