打印
[N32G03x]

N32G031低功耗之Sleep模式

[复制链接]
737|1
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
sy12138|  楼主 | 2022-9-1 20:55 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
今天看N32G031 Sleep例程的时候,发现Sleep可以配置成两种状态,SLEEP_ON_EXIT和SLEEP_OFF_EXIT
代码配置如下:
Delay(200);
       
DBG_ConfigPeriph(DBG_SLEEP, ENABLE); //sleep模式保持debug
       
printf("\r\n enter sleep mode \r\n");
       
PWR_EnterSLEEPMode(SLEEP_OFF_EXIT, PWR_SLEEPENTRY_WFI); //进入sleep模式
老规矩,遇到有疑问的地方我们先看用户手册

在手册上我们可以看到,MCU通过执行 WFI(等待中断)或 WFE(等待事件)指令和 SLEEPDEEP = 0,进入 SEEP 模式。根据 Cortex-M0 系统控制寄存器中的 SLEEPONEXIT 位值,有两个选项可用于选择 SLEEP 模式进入机制:
1. Sleep-now: 如果SLEEPONEXIT位清零,那么WFI或WFE指令会立马执行,系统立即进入SLEEP模式。
2.Sleep-on-exit: 如果SLEEPONEXIT位置1,那么系统从最低优先级中断处理程序中退出时就立即进入SLEEP模式。
注意:在 SLEEP 模式下,所有 I/O 引脚保持与运行模式下相同的状态/功能。
今天的内容你记住了吗

使用特权

评论回复
沙发
sy12138|  楼主 | 2022-9-1 20:58 | 只看该作者
还有一点,Sleep模式应该怎么退出呢?这里要分两种情况,MCU是通过WFI还是WFE进入Sleep的?
如果 WFI 指令用于进入 SLEEP 模式,那么嵌套的向量中断控制器(NVIC)所响应的任何外围中断都可以将设备从 SLEEP 模式中唤醒
如果使用 WFE 指令进入 SLEEP 模式,则 N32G031 将在事件发生时立即退出 SLEEP 模式。






使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

92

主题

404

帖子

15

粉丝