本帖最后由 gameboy374 于 2018-11-14 11:11 编辑
Hi all
请教大家一个关于CortexM0+芯片无法进入深度睡眠的问题。
问题场景:
芯片上电,Keil仿真执行如下程序
API_SoftDelayms(3000);
__disable_irq();
while(1)
{
SCB->SCR |= SCB_SCR_SLEEPDEEP_Msk;
__WFI();
API_SoftDelayms(300);
}
理论上,进入深度睡眠模式之后keil会丢失连接,功耗大幅度降低。
实际上,Keil没有丢失连接,阻塞在__WFI()这段程序;SCB->SCR = 0x4;点击“Stop code execution”,断点会跳转到API_SoftDelayms(300);点击“Start code execution”程序继续阻塞在__WFI();如此循环,功耗没有降低,也无中断产生。
请教各位,该问题应该从哪方面着手?CortexM0+进入深度睡眠的程序流程是否正确,或者还有其他的寄存器需要考虑到? |