**有些客户需求,把设备做成低功耗管理,这样就可以节省电池的电量,也可以增加传感器的使用寿命
HCLK为CPU提供时钟,内核执行代码。当CPU不需要继续运行时,可以利用多种低功耗模式,等待某个事件触发
① 睡眠模式:内核停止,外设如 NVIC ,系统时钟 Systick 仍运行。
② 停止模式:所有时钟都已停止。 1.8V 内核电源工作。
PLL,HIS和HSE RC振荡器功能禁止。
寄存器和SRAM内容保留。
③待机模式:1.8V内核电源关闭。
只有备份寄存器和待机电路维持供电。
寄存器和SRAM内容全部丢失。实现最低功耗
在运行模式下,可以通过下面方式降低功耗:
① 降低系统时钟。
② 关闭APB和AHB总线上未被使用的外设时钟。
软件代码实现部分:
示例代码
int main(void)
{ NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);//设置系统中断优先级分组2delay_init(168); //初始化延时函数uart_init(115200); //初始化串口波特率为115200 LCD_Init(); //初始化LCD FSMC接口KEY_Init(); POINT_COLOR=RED; LCD_ShowString(30,40,210,24,24,"WarShip STM32 ^_^"); while(1){if(KEY_Scan(0)==KEY0_PRES){RCC_APB1PeriphClockCmd(RCC_APB1Periph_PWR, ENABLE); //使能PWR外设时钟PWR_BackupAccessCmd(ENABLE);//后备区域访问使能RTC_ITConfig(RTC_IT_TS|RTC_IT_WUT|RTC_IT_ALRB|RTC_IT_ALRA,DISABLE);//关闭RTC相关中断 RTC_ClearITPendingBit(RTC_IT_TS|RTC_IT_WUT|RTC_IT_ALRB|RTC_IT_ALRA);//清楚RTC相关中断标志位。PWR_ClearFlag(PWR_FLAG_WU);//清除Wake-up 标志PWR_WakeUpPinCmd(ENABLE); //使能唤醒管脚功能PWR_EnterSTANDBYMode(); //进入待命(STANDBY)模式 }delay_ms(10);}
}
实现同一个引脚PA0引脚(WakeUp引脚),长按3秒进入待机模式,在待机模式下,长按3秒待机唤醒。
其他情况具体使用后添加。。。。