之前写的逻辑代码里面的逻辑如下:
#ifdef STOP_MODE_TEST // stop 模式,使用外部中断唤醒
led0_on();
display_sysclock(); // 打印系统时钟,此时是 HSE 作为系统时钟
enter_stop_mode(); // 进入 stop 模式
SystemCoreClockUpdate();// 根据时钟寄存器的值更新 SystemCoreClock 变量
MX_USART1_UART_Init(); // 因为串口使用的是HSE,停止模式唤醒后使用的是HSI,所以需要重新初始化串口
printf("exit stop mode. line = %d\r\n", __LINE__); // 唤醒后打印
display_sysclock(); // 打印系统时钟,此时是 HSI 作为系统时钟
SystemClock_Config(); // 重新配置HSE
MX_USART1_UART_Init(); // 配置HSE后重新配置串口
printf("\r\nsystem clock config\r\n"); // 配置时钟
display_sysclock(); // 打印配置HSE后的系统时钟
led0_off();
HAL_Delay(1000);
#endif
之前写的逻辑代码里面的逻辑如下:
#ifdef STOP_MODE_TEST // stop 模式,使用外部中断唤醒
led0_on();
display_sysclock(); // 打印系统时钟,此时是 HSE 作为系统时钟
enter_stop_mode(); // 进入 stop 模式
SystemCoreClockUpdate();// 根据时钟寄存器的值更新 SystemCoreClock 变量
MX_USART1_UART_Init(); // 因为串口使用的是HSE,停止模式唤醒后使用的是HSI,所以需要重新初始化串口
printf("exit stop mode. line = %d\r\n", __LINE__); // 唤醒后打印
display_sysclock(); // 打印系统时钟,此时是 HSI 作为系统时钟
SystemClock_Config(); // 重新配置HSE
MX_USART1_UART_Init(); // 配置HSE后重新配置串口
printf("\r\nsystem clock config\r\n"); // 配置时钟
display_sysclock(); // 打印配置HSE后的系统时钟
led0_off();
HAL_Delay(1000);
#endif
举报