[应用相关] AT32F4 如何进入深度睡眠模式(Deepsleep Mode)?

[复制链接]
 楼主| TimeRiddle 发表于 2025-4-10 15:00 | 显示全部楼层 |阅读模式
AT32 进入深度睡眠模式(Deepsleep Mode)前需要关闭 SysTick 定时器,否则会导致进入 Deepsleep 模式后再次被 SysTick 定时器唤醒的现象。 AT32F403A 代码示例如下,其他型号请参考对应 BSP 路径\examples\pwc 下 Deepsleep 例程。

  1. /* clear second flag */
  2. rtc_flag_clear(RTC_TS_FLAG);
  3. /* wait for the second flag to be set */
  4. while(rtc_flag_get(RTC_TS_FLAG) == RESET);
  5. /* set the wakeup time to 3 seconds */
  6. rtc_alarm_set(rtc_counter_get() + 3);
  7. /* wait for the register write to complete */
  8. rtc_wait_config_finish();
  9. at32_led_off(LED2);
  10. /* save systick register configuration */
  11. systick_index = SysTick->CTRL;
  12. systick_index &= ~((uint32_t)0xFFFFFFFE);
  13. /* disable systick */
  14. SysTick->CTRL &= (uint32_t)0xFFFFFFFE;

  15. /* congfig the voltage regulator mode */
  16. pwc_voltage_regulate_set(PWC_REGULATOR_LOW_POWER);
  17. /* enter deep sleep mode */
  18. pwc_deep_sleep_mode_enter(PWC_DEEP_SLEEP_ENTER_WFI);
  19. /* restore systick register configuration */
  20. SysTick->CTRL |= systick_index;
  21. /* wake up from deep sleep mode, congfig the system clock */
  22. system_clock_recover();
  23. at32_led_on(LED2);
  24. for(index = 0; index < 500000; index++);


您需要登录后才可以回帖 登录 | 注册

本版积分规则

3

主题

19

帖子

0

粉丝
快速回复 在线客服 返回列表 返回顶部