今天看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 引脚保持与运行模式下相同的状态/功能。
今天的内容你记住了吗
|