前面描述的条理性不好,我重新说下:
1. 由于PWR_EnterSTOPMode(PWR_Regulator_LowPower, PWR_STOPEntry_WFI)中的SCB->SCR |= SCB_SCR_SLEEPDEEP;要求运行在特权模式,所以我通过设置 #define OS_RUNPRIV 1,把所有的RTX任务都设为特权模式。
2. 在任一个rtx任务中,调用PWR_EnterSTOPMode(),让系统STOP 30s,(为了明显起见,除了RTC ALARM中断,其他的中断事先在NVIC中都未使能)
3. 程序运行到__WFI(),没有休眠30s,一下就通过并往下执行。同时我特别在__WFI()处设了断点,在keil NVIC调试界面里没有看到任何中断发生。
4. 而把PWR_EnterSTOPMode()放在os_sys_init前执行,一切正常,休眠30s。谁碰到过这类问题,盼帮助解决。
|