[N32G03x] N32G031低功耗之Sleep模式

[复制链接]
1312|1
 楼主| sy12138 发表于 2022-9-1 20:55 | 显示全部楼层 |阅读模式
今天看N32G031 Sleep例程的时候,发现Sleep可以配置成两种状态,SLEEP_ON_EXIT和SLEEP_OFF_EXIT
代码配置如下:
  1. Delay(200);
  2.        
  3. DBG_ConfigPeriph(DBG_SLEEP, ENABLE); //sleep模式保持debug
  4.        
  5. printf("\r\n enter sleep mode \r\n");
  6.        
  7. 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

帖子

19

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