/* ## Setting the Wake up time ############################################*/
/* RTC Wakeup Interrupt Generation:
Wakeup Time Base = (RTC_WAKEUPCLOCK_RTCCLK_DIV /(LSE or LSI))
Wakeup Time = Wakeup Time Base * WakeUpCounter
= (RTC_WAKEUPCLOCK_RTCCLK_DIV /(LSE or LSI)) * WakeUpCounter
==> WakeUpCounter = Wakeup Time / Wakeup Time Base
To configure the wake up timer to 20s the WakeUpCounter is set to 0xB4D8 for LSI:
RTC_WAKEUPCLOCK_RTCCLK_DIV = RTCCLK_Div16 = 16
Wakeup Time Base = 16 /(~37.000KHz) = ~0,432 ms
Wakeup Time = ~20s = 0,432ms * WakeUpCounter
==> WakeUpCounter = ~20s/0,432ms = 46296 = 0xB4D8 */
HAL_RTCEx_SetWakeUpTimer_IT(&RTCHandle, 0xB4D8, RTC_WAKEUPCLOCK_RTCCLK_DIV16);
/* Configure the system Power */
SystemPower_Config();
/* Enter Stop Mode */
HAL_PWR_EnterSTOPMode(PWR_LOWPOWERREGULATOR_ON, PWR_STOPENTRY_WFI);
这个是L0的休眠方式 你可以对比一下
你把3、4步骤对调一下试试看。
评分
查看全部评分
评分
查看全部评分
HAL_RTCEx_DeactivateWakeUpTimer(&RTCHandle);
/* ## Setting the Wake up time ############################################*/
/* RTC Wakeup Interrupt Generation:
Wakeup Time Base = (RTC_WAKEUPCLOCK_RTCCLK_DIV /(LSE or LSI))
Wakeup Time = Wakeup Time Base * WakeUpCounter
= (RTC_WAKEUPCLOCK_RTCCLK_DIV /(LSE or LSI)) * WakeUpCounter
==> WakeUpCounter = Wakeup Time / Wakeup Time Base
To configure the wake up timer to 20s the WakeUpCounter is set to 0xB4D8 for LSI:
RTC_WAKEUPCLOCK_RTCCLK_DIV = RTCCLK_Div16 = 16
Wakeup Time Base = 16 /(~37.000KHz) = ~0,432 ms
Wakeup Time = ~20s = 0,432ms * WakeUpCounter
==> WakeUpCounter = ~20s/0,432ms = 46296 = 0xB4D8 */
HAL_RTCEx_SetWakeUpTimer_IT(&RTCHandle, 0xB4D8, RTC_WAKEUPCLOCK_RTCCLK_DIV16);
/* Configure the system Power */
SystemPower_Config();
/* Enter Stop Mode */
HAL_PWR_EnterSTOPMode(PWR_LOWPOWERREGULATOR_ON, PWR_STOPENTRY_WFI);
这个是L0的休眠方式 你可以对比一下
评分
查看全部评分
评分
查看全部评分