Skip to content

ShadowThree/stm32_low_power_mode

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

1 Commit
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

STM32F1低功耗模式

参考

  1. Application Note: AN2629
  2. 博客:low power mode in stm32

使用

  1. 修改LOW_POWER_MODE宏定义为指定低功耗模式,然后编译烧录即可;

说明

  1. 三种低功耗模式总结 low power modes

Sleep mode

  1. 可通过任意中断唤醒,所以通过按键,串口接收中断等方式都可以;也可以通过唤醒事件唤醒;(外部触发的叫中断,内部触发的叫事件)
  2. 因为sysTick中断也会唤醒sleep mode,而sysTick默认每毫秒都产生一次中断,所以为了避免被这个中断唤醒,进入sleep前需要关闭sysTick
  3. 由于进入sleep关闭了sysTick,所以唤醒sleep后需要重启sysTick
  4. 配置HAL_PWR_EnableSleepOnExit()进入sleep后,每次唤醒后都只执行中断中的代码,执行完后自动进入sleep;除非在中断中通过HAL_PWR_DisableSleepOnExit退出;
  5. Sleep模式下,MCU不再工作,外设可以工作,串口依旧是可以打印的;寄存器和RAM保存;

Stop mode

  1. 可通过任意EXTI中断唤醒,注意和Sleep的区别,串口中断可以唤醒Sleep,但是不能唤醒Stop
  2. Stop模式下,HSE关闭,所以唤醒后,需要调用SystemClock_Config()重新配置系统时钟;
  3. 同理,进入、退出Stop mode也需要关闭、开启sysTick
  4. Stop mode也可以使用HAL_PWR_EnableSleepOnExit()
  5. Stop模式下,MCU不再工作,串口不能打印;寄存器和RAM的数据保存;

standby mode

  1. Standby mode和前面两个不一样,前面两个低功耗模式被唤醒后,可以接着在进入低功耗模式的地方运行,而Standby唤醒后会复位MCU,只能通过PWR_FLAG_SB状态位判断是正常的复位重启还是由于唤醒Standby产生的复位重启;
  2. Standby可以被WKUP管脚,RTC alarmNRST管脚,IWDG reset唤醒;
  3. 除了备份寄存器,其他寄存器和RAM的值将丢失,所以唤醒后必须要重启!

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published