stm32 低功耗踩坑 -stop 模式和 standy模式唤醒

参考 STM32CubeMX | STM32 F1系列HAL库低功耗STOP和STANDBY模式唤醒(RTC时钟唤醒+外部中断唤醒示例)_stm32 hal rtc每秒唤醒_觉皇嵌入式的博客-CSDN博客

stm32待机模式和停机模式唤醒程序的区别,以及唤醒后程序入口。_树懒的聪明的博客-CSDN博客

void sys_enter_stop_mode(void)
{
    // 使能PWR时钟
    __HAL_RCC_PWR_CLK_ENABLE();

    // 清除唤醒标记
    __HAL_PWR_CLEAR_FLAG(PWR_FLAG_WU);

    // 如果使用WK-UP引脚唤醒那么需要使能
    HAL_PWR_EnableWakeUpPin(PWR_WAKEUP_PIN1);

    // 进入STOP模式
    HAL_PWR_EnterSTOPMode(PWR_LOWPOWERREGULATOR_ON, PWR_STOPENTRY_WFI);
}

void sys_enter_standby_mode(void)
{
    // 使能PWR时钟
    __HAL_RCC_PWR_CLK_ENABLE();

    // 清除唤醒标记
    __HAL_PWR_CLEAR_FLAG(PWR_FLAG_WU);

    // 如果使用WK-UP引脚唤醒那么需要使能
    HAL_PWR_EnableWakeUpPin(PWR_WAKEUP_PIN1);

    // 进入待机模式
    HAL_PWR_EnterSTANDBYMode();
}

待机唤醒和stop模式唤醒的区别:

因此待机模式下的唤醒结论如下:

1:唤醒形式直接产生闹钟中断就能唤醒。

2:唤醒后不会进入闹钟中断函数

3:唤醒后程序复位,重新执行

因此停机模式下的唤醒结论如下:

1:唤醒形式产生闹钟中断不一定就唤醒,需要对任何可能的标志位清楚,并且时钟要重新配置。

2:唤醒后进入闹钟中断函数

3:唤醒后程序进入闹钟中断函数,然后再进入原来停机的位置继续运行。没有复位,单片机寄存器里的各种变量值仍然保留!!

见文章 

stm32待机模式和停机模式唤醒程序的区别,以及唤醒后程序入口。_树懒的聪明的博客-CSDN博客

你可能感兴趣的:(stm32,stm32,单片机,嵌入式硬件)