赞
踩
在睡眠模式下,CPU 时钟关闭,其他时钟均正常工作,电压调节器正常工作,所有的 I/O 管脚都保持它 们在运行模式时的状态,调节器 LDO 以正常功耗模式提供 1.2V 电源(CPU 内核、内存和内嵌外设)。
有如下两种方式进入睡眠模式
直接在主循环调用__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 指令即可进入待机模式。
唤醒方式:
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。