LPTIM Source MUX更换时钟源要重新全部断电再上电才会生效,坑了我2个小时
LPTIM1不能在standby模式下唤醒,坑了我一天,要用闹钟AlarmA唤醒
HAL_LPTIM_TimeOut_Start_IT(&hlptim1, Period, Timeout);
Period 每隔多久执行一次 实际的值应该填写
Timeout 第一次什么时候执行
这两个值的计算公示如下
外部时钟LSE的话 时钟源频率(32768) / 分频值 (LPTIM_PRESCALER_DIV16) * 秒数
内部时钟LSI的话 时钟源频率(37000) / 分频值 (LPTIM_PRESCALER_DIV16) * 秒数
系统唤醒之后要重新配置系统时钟,否则默认使用HSI时钟信号,会变慢
void reInitSystem(){
//重新配置系统时钟
SystemClock_Config();
//初始化串口
MX_USART1_UART_Init();
MX_USART2_UART_Init();
//清楚唤醒标记
__HAL_PWR_CLEAR_FLAG(PWR_FLAG_WU);
__HAL_RTC_WAKEUPTIMER_EXTI_CLEAR_FLAG();
//禁用
HAL_RTCEx_DeactivateWakeUpTimer(&hrtc);
}
休眠之前需要操作
void prepareLowPowerMode(){
//进入低功耗模式
HAL_PWREx_EnableUltraLowPower();
HAL_PWREx_EnableFastWakeUp();
//关掉led灯
HAL_GPIO_WritePin(LED_RUN_GPIO_Port, LED_RUN_Pin, GPIO_PIN_SET);
//等串口的信息发完再关闭串口
osDelay(1);
//串口关闭
HAL_UART_DeInit(&huart2);
HAL_UART_DeInit(&huart2);
}
窗口看门狗wwdg的操作
在时钟图上增加分频,否则看门狗最大的8分频,时间范围也仅仅是0ms~12ms(试出来的),每增加一倍分频,这个时间扩大一倍,最大可以达到16分频,也就是说0ms~192ms,我还是不懂怎么算。
LPTIM Source MUX更换时钟源要重新全部断电再上电才会生效,坑了我2个小时
LPTIM1不能在standby模式下唤醒,坑了我一天,要用闹钟AlarmA唤醒
HAL_LPTIM_TimeOut_Start_IT(&hlptim1, Period, Timeout);
Period 每隔多久执行一次 实际的值应该填写
Timeout 第一次什么时候执行
这两个值的计算公示如下
外部时钟LSE的话 时钟源频率(32768) / 分频值 (LPTIM_PRESCALER_DIV16) * 秒数
内部时钟LSI的话 时钟源频率(37000) / 分频值 (LPTIM_PRESCALER_DIV16) * 秒数
系统唤醒之后要重新配置系统时钟,否则默认使用HSI时钟信号,会变慢
void reInitSystem(){
//重新配置系统时钟
SystemClock_Config();
//初始化串口
MX_USART1_UART_Init();
MX_USART2_UART_Init();
//清楚唤醒标记
__HAL_PWR_CLEAR_FLAG(PWR_FLAG_WU);
__HAL_RTC_WAKEUPTIMER_EXTI_CLEAR_FLAG();
//禁用
HAL_RTCEx_DeactivateWakeUpTimer(&hrtc);
}
休眠之前需要操作
void prepareLowPowerMode(){
//进入低功耗模式
HAL_PWREx_EnableUltraLowPower();
HAL_PWREx_EnableFastWakeUp();
//关掉led灯
HAL_GPIO_WritePin(LED_RUN_GPIO_Port, LED_RUN_Pin, GPIO_PIN_SET);
//等串口的信息发完再关闭串口
osDelay(1);
//串口关闭
HAL_UART_DeInit(&huart2);
HAL_UART_DeInit(&huart2);
}
窗口看门狗wwdg的操作
在时钟图上增加分频,否则看门狗最大的8分频,时间范围也仅仅是0ms~12ms(试出来的),每增加一倍分频,这个时间扩大一倍,最大可以达到16分频,也就是说0ms~192ms,我还是不懂怎么算。
举报