已经在STM32F103下测试:
进入低功耗模式先执行:
RCC_APB2PeriphResetCmd(0X01FC,DISABLE); //复位所有IO口, 端口全设置为高阻态,最好外设时钟也关闭
停机模式:
RCC_APB1PeriphClockCmd(RCC_APB1Periph_PWR, ENABLE); //使能PWR外设时钟
/*进入停机模式, 停机模式还有两个选择模式,一个是调节器电压,可选常规或低压,低压在停机模式下功耗会更低,但是唤醒响应速度会慢一些;令一个唤醒方式的选择,可选事件唤醒、外部中断唤醒, 其实两者均可。*/
PWR_EnterSTOPMode(PWR_Regulator_LowPower,PWR_STOPEntry_WFI);
SystemInit(); //停机后在停机指令后面继续工作, 初始化时钟,内存,外设均不变
停机模式实测消耗:20uA
待机模式:(STM32最低功耗模式)
RCC_APB1PeriphClockCmd(RCC_APB1Periph_PWR, ENABLE); //使能PWR外设时钟
PWR_WakeUpPinCmd(ENABLE); //使能唤醒管脚功能
PWR_EnterSTANDBYMode(); //进入待命(STANDBY)模式
退出待机模式后相当于重新启动,,,内存数据都不见,要重设
注意待机模式只能RTC闹钟中断或WKUP引脚唤醒, 这两个互斥,,,只能选其一
待机模式最低消耗:2uA
如需开启看门狗,,,建议这样处理:
SystemReset();// 先运行软重启
if(RestoreFlag()==2) //软复位后执行, 读取软复位标志后进入低功耗模式,为关闭看门狗
Sys_Enter_Stop();
|
|
2021-11-23 09:48:56
评论
举报
|
|
|