发布: 2009-10-15 15:41 | 作者: proco | 来源: StmFans思蜕盟 OPELC 自由电子联盟
CODE:
/* 使能PWR电源接口时钟 */ RCC_APB1PeriphClockCmd(RCC_APB1Periph_PWR |, ENABLE);
参考手册。。。
待机模式:
待机模式可实现系统的最低功耗。该模式是在Cortex-M3深睡眠模式时关闭电压调节器。整个1.8V供电区域被断电。PLL、HSI和HSE振荡器也被断电。SRAM和寄存器内容丢失。只有备份的寄存器和待机电路维持供电。
从上面文字来看,我觉得不象待机模式,它更似是停止模式。
停止模式:
停止模式是在Cortex™-M3的深睡眠模式基础上结合了外设的时钟控制机制,在停止模式下电压调节器可运行在正常或低功耗模式。此时在1.8V供电区域的的所有时钟都被停止,PLL、HSI和HSE RC振荡器的功能被禁止,SRAM和寄存器内容被保留下来。
从上面的文字来看,似乎更像待机模式多些。
STM32还有一个睡眠模式呢。
进入停止模式是有很严格的要求:
在以下条件下执行WFI或WFE指令:
– 设置Cortex-M3系统控制寄存器中的SLEEPDEEP位
– 清除电源控制寄存器(PWR_CR)中的PDDS位
– 通过设置PWR_CR中LPDS位选择电压调节器的模式
注:为了进入停止模式,所有的外部中断的请求位(挂起寄存器(EXTI_PR))和RTC的闹钟标志都必须被清除,否则停止模式的进入流程将会被跳过,程序继续运行。
PWR_WakeUpPinCmd(ENABLE);//使能WAKEUP的引脚功能,待机模式前必须使能WAKEUP引脚功能,要不关机后只能复位才能启动
PWR_EnterSTANDBYMode(); //进入待机模式
顺便提一下,松鼠3的PCB板就快回来了,等组装好松鼠3,就开始写它的例程,停止模式与待机模式的例程也在是计划编写的例程之中。
PWR_WakeUpPinCmd(ENABLE);//使能WAKEUP的引脚功能,待机模式前必须使能WAKEUP引脚功能,要不关机后只能复位才能启动
PWR_EnterSTANDBYMode(); //进入待机模式
我现在确实只要在按复位的时候再启动就行了,这样的话我只要使用:PWR_EnterSTANDBYMode(); 这个函数就行了吧?但是为什么还是没有进入待机模式呢?
请检查RCC的初始化代码有没有对PWR进行时钟使能。
CODE:
/* 使能PWR电源接口时钟 */注:如果没有PWR电源接口时钟,当然就不能进入待机模式了(只要需要对PWR相关寄存器进行操作,就应使能该外设的时钟)。RCC_APB1PeriphClockCmd(RCC_APB1Periph_PWR |, ENABLE);