STM32L0低功耗设计6: STOP_RTC模式下的休眠时间

    本文介绍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






猜你喜欢

转载自blog.csdn.net/qingwufeiyang12346/article/details/80686350