单片机,传感器等低功耗管理

**有些客户需求,把设备做成低功耗管理,这样就可以节省电池的电量,也可以增加传感器的使用寿命

HCLKCPU提供时钟,内核执行代码。当CPU不需要继续运行时,可以利用多种低功耗模式,等待某个事件触发

睡眠模式:内核停止,外设如 NVIC ,系统时钟 Systick 仍运行。
停止模式:所有时钟都已停止。 1.8V 内核电源工作。

                         PLL,HISHSE RC振荡器功能禁止。

                         寄存器和SRAM内容保留。

待机模式:1.8V内核电源关闭。

                         只有备份寄存器和待机电路维持供电。

                         寄存器和SRAM内容全部丢失。实现最低功耗

在运行模式下,可以通过下面方式降低功耗:

① 降低系统时钟。

② 关闭APBAHB总线上未被使用的外设时钟

软件代码实现部分:

示例代码

int main(void)
{ 
   NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);//设置系统中断优先级分组2
  delay_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秒待机唤醒。

其他情况具体使用后添加。。。。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值