STM32之低功耗——WKUP待机唤醒(LCD显示)

2019-07-14 01:49发布

目录 单片机的低功耗 STM32电源框图 STM32的三种低功耗模式 低功耗配置图(详细配置参考STM32参考手册) 电源控制寄存器 部分相关代码 附录
 
  • 单片机的低功耗

很多单片机有低功耗模式STM32也不例外。在系统或者电源复位后,微控制器出于运行状态之下,HCLKCPU提供时钟,内核执行代码。当CPU不需要继续运行时,可以利用多种低功耗模式来节省功耗,例如等待某个事件触发。
  • STM32电源框图

  • STM32的三种低功耗模式

睡眠模式:内核停止,外设如NVIC,系统时钟Systick仍运行。 停止模式:所有时钟都已停止。1.8V内核电源工作。                          PLL,HISHSE RC振荡器功能禁止。                          寄存器和SRAM内容保留。 待机模式:1.8V内核电源关闭。                          只有备份寄存器和待机电路维持供电。                          寄存器和SRAM内容全部丢失。实现最低功耗。
  • 低功耗配置图(详细配置参考STM32参考手册)

  睡眠模式 停止模式 待机模式
  • 电源控制寄存器

 PWR_CR电源控制寄存器 PWR_CSR电源控制/状态寄存器
  • 部分相关代码

 进入待机模式 /*进入待机模式*/ void Wkup_Standby(void) { //复位全部IO RCC_APB2PeriphResetCmd(RCC_APB2Periph_GPIOA| RCC_APB2Periph_GPIOB| RCC_APB2Periph_GPIOC| RCC_APB2Periph_GPIOD| RCC_APB2Periph_GPIOE| RCC_APB2Periph_GPIOF| RCC_APB2Periph_GPIOG,ENABLE); //RCC PWR RCC_APB1PeriphClockCmd(RCC_APB1Periph_PWR,ENABLE); //WKUP Cmd PWR_WakeUpPinCmd(ENABLE); //进入待机模式 PWR_EnterSTANDBYMode(); } WKUP初始化 //WKUP Init void Wkup_Init() { GPIO_InitTypeDef GPIO_InitTypeStruct; EXTI_InitTypeDef EXTI_InitTypeStruct; NVIC_InitTypeDef NVIC_InitTypeStruct; //RCC GPIOA AFIO RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA|RCC_APB2Periph_AFIO,ENABLE); //PA0 IUD GPIO_InitTypeStruct.GPIO_Mode = GPIO_Mode_IPD; GPIO_InitTypeStruct.GPIO_Pin = GPIO_Pin_0; GPIO_InitTypeStruct.GPIO_Speed = GPIO_Speed_50MHz; GPIO_Init(GPIOA,&GPIO_InitTypeStruct); // Config EXTI GPIO_EXTILineConfig(GPIO_PortSourceGPIOA,GPIO_PinSource0); EXTI_InitTypeStruct.EXTI_Line = EXTI_Line0; EXTI_InitTypeStruct.EXTI_LineCmd = ENABLE; EXTI_InitTypeStruct.EXTI_Mode = EXTI_Mode_Interrupt; EXTI_InitTypeStruct.EXTI_Trigger = EXTI_Trigger_Rising; EXTI_Init(&EXTI_InitTypeStruct); //IT config NVIC_InitTypeStruct.NVIC_IRQChannel = EXTI0_IRQn; NVIC_InitTypeStruct.NVIC_IRQChannelCmd = ENABLE; NVIC_InitTypeStruct.NVIC_IRQChannelPreemptionPriority = 1; NVIC_InitTypeStruct.NVIC_IRQChannelSubPriority = 3; NVIC_Init(&NVIC_InitTypeStruct); if(Wkup_Keydelay() == 0) Wkup_Standby(); }
  • 附录

WKUP唤醒实验(基于正点原子战舰) : https://github.com/kks1234/STM32/tree/master/16.%E5%BE%85%E6%9C%BA%E5%94%A4%E9%86%92(LCD)