当前位置:   article > 正文

【AT32】低功耗设计_at32功耗

at32功耗

睡眠模式

概念

在睡眠模式下,CPU 时钟关闭,其他时钟均正常工作,电压调节器正常工作,所有的 I/O 管脚都保持它 们在运行模式时的状态,调节器 LDO 以正常功耗模式提供 1.2V 电源(CPU 内核、内存和内嵌外设)。

  1. 当 SLEEPDEEP=0,SLEEPONEXIT=0 时,执行 WFI 或 WFE 指令,此时可立即进入睡眠模式。 SLEEP-ON-EXIT 模式
  2. 当 SLEEPDEEP=0,SLEEPONEXIT=1 时,执行 WFI 指令,此时当系统从最低优先级的中断处理程序中 退出时,可立即进入睡眠模式。

有如下两种方式进入睡眠模式

  1. __WFI(); 中断唤醒,只要产生外设中断,都能使系统退出睡眠模式。
  2. __WFE(); 事件唤醒,存在两种方式的唤醒事件,使系统退出睡眠模式:
  • 使能任一外设中断(未在 NVIC 中使能)且使能 SEVONPEND 位可以产生唤醒事件。 系统唤醒后,需清除外设中断挂起位和 NVIC 通道挂起位。
  • 配置内部 EXINT 线为事件模式来产生唤醒事件。 从执行 WFE 指令进入睡眠模式唤醒所需的时间最短,因为没有时间损失在中断的进入或退出上。

WFI使用

直接在主循环调用__WFI(); SLEEPDEEP和SLEEPONEXIT两个寄存器保持默认0;循环每次执行到这就会进入立刻睡眠模式,每次按键按下才会进入下一次循环。

深度睡眠模式

概念

比普通睡眠模式更加省电,在深度睡眠模式下,所有 1.2V 时钟关闭,HICK 和 HEXT 振荡器都被关闭,电压调节器以正常工作或低 功耗工作状态给 1.2V 域供电,所有 I/O 管脚都保持它们在运行模式时的状态,SRAM 和寄存器内容保持。

使用

使能PWC外设时钟crm_periph_clock_enable(CRM_PWC_PERIPH_CLOCK,TRUE);

调用函数进入深度睡眠pwc_deep_sleep_mode_enter(PWC_DEEP_SLEEP_ENTER_WFI);

【注意】进入睡眠模式之后再次烧录代码需要按一下复位键之后立即烧录

实验中会发现printf打印的全都是0或者乱码,这是因为深度睡眠模式为了省电关闭了HICK 和 HEXT 晶振所以我们在中断退出睡眠模式之后需要重新调用system_clock_config();打开晶振

待机模式

概念

待机模式可最大限度的降低系统功耗,在该模式下,电压调节器关闭,只有 VDD/VDDA 域维持供电,其 他的 1.2V 供电区域,PLL、HICK 和 HEXT 振荡器都被断电。寄存器和 SRAM 中的内容也会丢失。 通过设置 Cortex-M4 系统控制寄存器中的 SLEEPDEEP 位,设置电源控制寄存器(PWC_CTRL)中 LPSEL 位,并清除电源控制及状态寄存器(PWC_CTRLSTS)中的 SWEF 位的情况下,执行 WFI 或 WFE 指令即可进入待机模式。

唤醒方式:

  1. 发生 WKUPx 引脚的上升沿
  2. ERTC 闹钟事件的上升沿
  3. ERTC 入侵事件
  4. ERTC 时间戳
  5. NRST 引脚上外部复位
  6. WDT 复位
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/2023面试高手/article/detail/490288
推荐阅读
相关标签
  

闽ICP备14008679号