即:1Hz=32768/((127+1)*(255+1))
ck_spre时钟可用于日历和定时唤醒时钟。
代码参考
//参数time 秒
void APP_EnterLP(uint32_t time )
{
MX_GPIO_Init_stop();
/* Enable Ultra low power mode */
HAL_PWREx_EnableUltraLowPower(); //使能超低功耗
/* Enable Fast WakeUP */
HAL_PWREx_EnableFastWakeUp(); //使能快速唤醒
/* Disable Wakeup Counter */
HAL_RTCEx_DeactivateWakeUpTimer(&hrtc);
/* Clear Wake Up Flag */
__HAL_PWR_CLEAR_FLAG(PWR_FLAG_WU);
// HAL_RTCEx_SetWakeUpTimer_IT(&hrtc, (uint32_t)(time * 2048), RTC_WAKEUPCLOCK_RTCCLK_DIV16);//rtc LSE=32.768k 2048Hz 488us-- 32秒
HAL_RTCEx_SetWakeUpTimer_IT(&hrtc, time-1, RTC_WAKEUPCLOCK_CK_SPRE_16BITS); //wangxl@20190814 时钟选择1Hz 65535/60/60 ~18 可得到的唤醒时间为 1s 到 18h 左右
printf("进入停止模式\r\n");
/* Select MSI as system clock source after Wake Up from Stop mode */
__HAL_RCC_WAKEUPSTOP_CLK_CONFIG (RCC_STOP_WAKEUPCLOCK_HSI);
HAL_PWR_EnterSTOPMode(PWR_LOWPOWERREGULATOR_ON , PWR_STOPENTRY_WFI);
MX_GPIO_Init();
HAL_Delay(5); //wangxl@20190814 稳定时钟 必免串口打印乱码
printf("wake up\r\n");
}
|