1. 程式人生 > >STM32開發筆記30:STM32L0低功耗設計——STOP_RTC模式下的休眠時間

STM32開發筆記30:STM32L0低功耗設計——STOP_RTC模式下的休眠時間

微控制器型號:STM32L053R8T6

    本文介紹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);
}

    我們在呼叫上面的函式時,直接以秒為單位傳遞引數即可。

原創性文章,轉載請註明出處