我想在stm32f030(cortex M0)上使用WFI进入睡眠模式。
但是我的代码似乎不适用于stm32f030但适用于stm32f103。
我认为它的工作原理是因为当尝试再次闪存f103(带有stlink实用程序或keil)时它没有响应,我必须在复位时连接,这往往表明cpu正在休眠。但我可以毫无问题地连接f030。
这是我的代码:
int main() {
SetupSleep();
__wfi();
while(1){}
}
以下是我的SetupSleep()函数的内容:
void SetupSleep(void){
SCB->SCR |= (1ul << 1);
SCB->SCR &= ~(1ul << 2);
}
根据f030编程手册(http://www.st.com/web/en/resource/technical/document/programming_manual/DM00051352.pdf)的第81页,选择睡眠模式和Sleeponexit。
是否意味着发生了使cpu退出睡眠模式的中断?
这是我第一次使用睡眠模式,所以可能我的实现不正确。
答案 0 :(得分:2)
不要直接操作寄存器,而是查看标准外设库的功能。请特别注意PWR_EnterSleepMode()
中的stm32f0xx_pwr.c
。
至少我可以看到你没有执行__WFI()或__WFE()来实际进入睡眠模式。还有其他低功耗模式:您可能感兴趣的待机和停止模式。