stm32f030没有进入睡眠状态

时间:2014-08-26 12:47:20

标签: sleep stm32 cortex-m

我想在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退出睡眠模式的中断?

这是我第一次使用睡眠模式,所以可能我的实现不正确。

1 个答案:

答案 0 :(得分:2)

不要直接操作寄存器,而是查看标准外设库的功能。请特别注意PWR_EnterSleepMode()中的stm32f0xx_pwr.c

至少我可以看到你没有执行__WFI()或__WFE()来实际进入睡眠模式。还有其他低功耗模式:您可能感兴趣的待机和停止模式。