使用M0+ 内核的ARM 等待中断专用指令,WFI(Wait for Interrupt),配合M0+ 内核的系统控制寄存器(SCR,
System Control Register)的SLEEPONEXIT 和SLEEPDEEP 位域,可实现立即进入或退出(中断服务程序)时进
入休眠模式或深度休眠模式。
●● 立即进入
执行WFI 指令,MCU 将立即进入休眠模式(SLEEPDEEP 为0 时)或深度休眠模式(SLEEPDEEP 为1 时)。
●● 退出时进入
将SLEEPONEXIT 位置1,当退出最低优先级的中断服务程序后,MCU 会进入休眠模式(SLEEPDEEP 为0 时)
或深度休眠模式(SLEEPDEEP 为1 时),而不需执行WFI 指令 。
注意:
在进入深度休眠模式之前,若FLASH 正在进行擦写操作,则必须等待FLASH_CR1.BUSY 标志位清0,同时
须确保FLASH_CR1.MODE 为0。
在进入深度休眠模式之前,用户必须配置HCLK 时钟频率小于或等于4MHz,否则易造成内核损坏。
在深度休眠模式下,系统将自动关闭高速时钟。如用户需要在深度休眠模式下使部分外设仍保持运行,则须
在进入深度休眠模式前,启动相应的低速时钟并将该外设时钟设置为此低速时钟。
若使能了VCx,必须等待VCx_SR.READY 标志位置1 后才可以进入深度休眠模式,否则无法进入深度休眠模式。
|