首页 | 新闻 | 新品 | 文库 | 方案 | 视频 | 下载 | 商城 | 开发板 | 数据中心 | 座谈新版 | 培训 | 工具 | 博客 | 论坛 | 百科 | GEC | 活动 | 主题月 | 电子展
返回列表 回复 发帖

STM32睡眠模式的唤醒 讨论

STM32睡眠模式的唤醒 讨论

手册上说睡眠是可以用任何一个中断唤醒的,那么我想着应该包括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是以软件方式开启转换,独立非连续转换,所以是转换一次,中断一次,再在主程序中软件出发一次,如此往复。但是进入睡眠之后就一动不动,没法唤醒,请高手帮忙解答一下,我们讨论讨论。谢谢
返回列表