- UID
- 863306
|
手册上说睡眠是可以用任何一个中断唤醒的,那么我想着应该包括ADC和串口,至于timer能不能唤醒,我想是不能的,应为timer是在cpu内部的,进入睡眠之后就会关闭内核,timer肯定也会关闭的。
在工程中加入.c文件,stm32f10x_pwr.c,这里里面包含着关于PWR的各种操作函数,主程序中加入头文件stm32f10x_pwr.h。
main函数中首先开启PWR时钟:RCC_APB1PeriphClockCmd(RCC_APB1Periph_PWR, ENABLE);
然后初始化PWR。我调用的语句是:PWR_DeInit();
PWR_BackupAccessCmd(DISABLE);
然后期望进入睡眠状态,语句是:SCB->SCR |= SCB_SCR_SLEEPDEEP;
__WFI();
SCB->SCR &= (uint32_t)~((uint32_t)SCB_SCR_SLEEPDEEP);
(这是在网上搜到的。设置sleepdeep位,然后执行_WFI指令)
现在应该已经进入睡眠状态了吧??我后面定义了ADC的装换结束中断,ADC是以软件方式开启转换,独立非连续转换,所以是转换一次,中断一次,再在主程序中软件出发一次,如此往复。但是进入睡眠之后就一动不动,没法唤醒,请高手帮忙解答一下,我们讨论讨论。谢谢 |
|