当前位置:首页 > 单片机 > 单片机
[导读]STM32的3种低功耗模式:睡眠模式:内核停止,外设如NVIC,系统时钟Systick仍运行。停止模式:所有时钟都已停止;1.8V内核电源工作;PLL,HIS和HSERC振荡器功能禁止;寄存器和SRAM内容保留。待机模式:1.8V内核电源关闭

STM32的3种低功耗模式:

睡眠模式:内核停止,外设如NVIC,系统时钟Systick仍运行。

停止模式:所有时钟都已停止;1.8V内核电源工作;PLL,HIS和HSERC振荡器功能禁止;寄存器和SRAM内容保留。

待机模式:1.8V内核电源关闭;只有备份寄存器和待机电路维持供电;寄存器和SRAM内容全部丢失;实现最低功耗。

STM32的3种低功耗唤醒方式:

STM32待机模式:

在待机模式下,所有的I/O引脚均处于高阻态,除了复位引脚、被使能的唤醒引脚和TAMPER引脚。待机模式下只有2uA的电流,停机模式下20uA的电流。
库函数进入待机模式:
1. 使能电源时钟。
2. 设置WK_UP引脚作为唤醒源。
3. 设置SLEEPDEEP位,设置PDDS位,执行WFI指令,进入待机模式。
程序源码:

#include"wkup.h"#include"led.h"#include"delay.h"voidSys_Standby(void){RCC_APB1PeriphClockCmd(RCC_APB1Periph_PWR,ENABLE);//使能电源时钟PWR_WakeUpPinCmd(ENABLE);//使能唤醒管脚功能PWR_EnterSTANDBYMode();//进入待命(STANDBY)模式}//系统进入待机模式voidSys_Enter_Standby(void){RCC_APB2PeriphResetCmd(0X01FC,DISABLE);//复位所有IO口Sys_Standby();}//检测WKUP脚的信号//返回值1:连续按下3s以上//0:错误的触发u8Check_WKUP(void){u8t=0;//记录按下的时间LED0=0;//亮灯LED0while(1){if(WKUP_KD){t++;//已经按下了delay_ms(30);if(t>=100)//按下超过3秒钟{LED0=0;//点亮DS0return1;//按下3s以上了}}else{LED0=1;return0;//按下不足3秒}}}//中断,检测到PA0脚的一个上升沿.//中断线0线上的中断检测voidEXTI0_IRQHandler(void){EXTI_ClearITPendingBit(EXTI_Line0);//清除LINE10上的中断标志位if(Check_WKUP())//关机?{Sys_Enter_Standby();}}//PA0WKUP唤醒初始化voidWKUP_Init(void){GPIO_InitTypeDefGPIO_InitStructure;NVIC_InitTypeDefNVIC_InitStructure;EXTI_InitTypeDefEXTI_InitStructure;RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA|RCC_APB2Periph_AFIO,ENABLE);//使能GPIOA和复用功能时钟GPIO_InitStructure.GPIO_Pin=GPIO_Pin_0;//PA.0GPIO_InitStructure.GPIO_Mode=GPIO_Mode_IPD;//上拉输入GPIO_Init(GPIOA,&GPIO_InitStructure);//初始化IO//使用外部中断方式GPIO_EXTILineConfig(GPIO_PortSourceGPIOA,GPIO_PinSource0);//中断线0连接GPIOA.0EXTI_InitStructure.EXTI_Line=EXTI_Line0;//设置按键所有的外部线路EXTI_InitStructure.EXTI_Mode=EXTI_Mode_Interrupt;//设外外部中断模式:EXTI线路为中断请求EXTI_InitStructure.EXTI_Trigger=EXTI_Trigger_Rising;//上升沿触发EXTI_InitStructure.EXTI_LineCmd=ENABLE;EXTI_Init(&EXTI_InitStructure);//初始化外部中断NVIC_InitStructure.NVIC_IRQChannel=EXTI0_IRQn;//使能按键所在的外部中断通道NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority=2;//先占优先级2级NVIC_InitStructure.NVIC_IRQChannelSubPriority=2;//从优先级2级NVIC_InitStructure.NVIC_IRQChannelCmd=ENABLE;//使能外部中断通道NVIC_Init(&NVIC_InitStructure);//根据NVIC_InitStruct中指定的参数初始化外设NVIC寄存器if(Check_WKUP()==0)Sys_Standby();//没有按三秒,不是开机,进入待机模式}


本站声明: 本文章由作者或相关机构授权发布,目的在于传递更多信息,并不代表本站赞同其观点,本站亦不保证或承诺内容真实性等。需要转载请联系该专栏作者,如若文章内容侵犯您的权益,请及时联系本站删除。
换一批
延伸阅读

简介:OLED由于同时具备自发光,不需背光源、对比度高、厚度薄、视角广、反应速度快、可用于挠曲性面板、使用温度范围广、构造及制程较简单等优异之特性,被认为是下一代的平面显示器新兴应用技术。OLED显示技术具有

关键字: OLED stm32系列

电气特性:工作电压:3.3V-5.5V工作电流 :平均0.5mA输出:单总线数字信号测量范围:湿度20~90%RH,温度0~50℃精度 :湿度±5%,温度±2℃分辨率 :湿度1%,温度1℃其数据包由5Byte(40Bit...

关键字: dht11 stm32系列 温湿度传感器

简介:CAN是Controller Area Network 的缩写(以下称为CAN),是ISO国际标准化的串行通信协议。由德国电气商博世公司在1986年率先提出。此后,CAN通过ISO11898及ISO11519进行了...

关键字: can总线 stm32系列

简介:STM32有一个内部的温度传感器,可以用来测量CPU及周围的温度(TA)。特点:该温度传感器在内部和ADCx_IN16输入通道相连接,此通道把传感器输出的电压转换成数字值温度传感器模拟输入推荐采样时间是17.1μs...

关键字: stm32系列 内部温度传感器

串口是一种接口标准,它规定了接口的电气标准,简单说只是物理层的一个标准。没有规定接口插件电缆以及使用的协议,所以只要我们使用的接口插件电缆符合串口标准就可以在实际中灵活使用,在串口接口标准上使用各种协

关键字: 485通信 stm32系列

ADC特点:12位逐次逼近型的模拟数字转换器最多带3个ADC控制器最多支持18个通道,可最多测量16个外部和2个内部信号源支持单次和连续转换模式通道0到通道n的自动扫描模式自动校准采样间隔可以按通道编程规则通道和注入

关键字: adc stm32系列

简介:NRF24L01是NORDIC公司生产的一款无线通信芯片,采用FSK 调制,集成NORDIC自家的Enhanced Short Burst协议。可以实现点对点或是1对6的无线通信。无线通信速度最高可达到2Mbps。...

关键字: nrf24l01 stm32系列 无线通信

  STM32单片机的每组IO口都有4个32位配置寄存器用于配置GPIOx_MODER, GPIOx_OTYPER, GPIOx_OSPEEDR和GPIOx_PUPDR,2个32位数据寄存器用于配置输入和输出寄存器GPI...

关键字: io口 stm32系列 单片机 模式设置

特点:独特的单总线接口方式,DS18B20在与微处理器连接时仅需要一条口线即可实现微处理器与DS18B20的双向通讯。大大提高了系统的抗干扰性。测温范围 -55℃~+125℃,精度为±0.5℃。支持多点组网功能,多个DS...

关键字: ds18b20 stm32系列

原理:R:外接电容充放电电阻。Cs:TPAD和PCB间的杂散电容。Cx:手指按下时,手指和TPAD之间的电容。开关:电容放电开关,由STM32IO口代替。没有按下的时候,充电时间为T1(default)。按下TPAD,电...

关键字: stm32系列 电容触摸 按键原理
关闭
关闭