STM32開發筆記30:STM32L0低功耗設計——STOP_RTC模式下的休眠時間
阿新 • • 發佈:2019-01-26
微控制器型號: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); }
我們在呼叫上面的函式時,直接以秒為單位傳遞引數即可。
原創性文章,轉載請註明出處