历史上的今天

今天是:2024年09月10日(星期二)

正在发生

2018年09月10日 | STM32的3种低功耗模式

发布者:Whisper123 来源: eefocus关键字:STM32  低功耗模式 手机看文章 扫描二维码
随时随地手机看文章
  1. 睡眠模式:内核停止,外设如NVIC,系统时钟Systick仍运行。

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

  3. 待机模式: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"

 

void Sys_Standby(void)

{  

    RCC_APB1PeriphClockCmd(RCC_APB1Periph_PWR, ENABLE); //使能电源时钟

    PWR_WakeUpPinCmd(ENABLE);  //使能唤醒管脚功能

    PWR_EnterSTANDBYMode();    //进入待命(STANDBY)模式         

}

 

//系统进入待机模式

void Sys_Enter_Standby(void)

{            

    RCC_APB2PeriphResetCmd(0X01FC,DISABLE); //复位所有IO口

    Sys_Standby();

}

 

//检测WKUP脚的信号

//返回值1:连续按下3s以上

//     0:错误的触发  

u8 Check_WKUP(void) 

{

    u8 t=0; //记录按下的时间

    LED0=0; //亮灯LED0 

    while(1)

    {

        if(WKUP_KD)

        {

            t++;            //已经按下了 

            delay_ms(30);

            if(t>=100)      //按下超过3秒钟

            {

                LED0=0;     //点亮DS0 

                return 1;   //按下3s以上了

            }

        }else 

        { 

            LED0=1;

            return 0; //按下不足3秒

        }

    }

 

//中断,检测到PA0脚的一个上升沿.   

//中断线0线上的中断检测

void EXTI0_IRQHandler(void)

{                                                       

    EXTI_ClearITPendingBit(EXTI_Line0); // 清除LINE10上的中断标志位        

    if(Check_WKUP())//关机?

    {         

        Sys_Enter_Standby();  

    } 

//PA0 WKUP唤醒初始化

void WKUP_Init(void)

{   

    GPIO_InitTypeDef  GPIO_InitStructure;         

    NVIC_InitTypeDef NVIC_InitStructure;

    EXTI_InitTypeDef EXTI_InitStructure;

    RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA | RCC_APB2Periph_AFIO, ENABLE);//使能GPIOA和复用功能时钟

    GPIO_InitStructure.GPIO_Pin =GPIO_Pin_0;     //PA.0

    GPIO_InitStructure.GPIO_Mode =GPIO_Mode_IPD;//上拉输入

    GPIO_Init(GPIOA, &GPIO_InitStructure);  //初始化IO

    //使用外部中断方式

    GPIO_EXTILineConfig(GPIO_PortSourceGPIOA, GPIO_PinSource0); //中断线0连接GPIOA.0

 

    EXTI_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();    //没有按三秒,不是开机,进入待机模式  

}


关键字:STM32  低功耗模式 引用地址:STM32的3种低功耗模式

上一篇:STM32L0低功耗设计6: STOP_RTC模式下的休眠时间
下一篇:STM32L031低功耗深度睡眠RTC唤醒注意事项

推荐阅读

台媒称,知情人士透露,微软正在与华为商讨合作事宜,微软考虑在中国的数据中心使用华为新开发的AI芯片,AI芯片龙头英伟达(Nvidia)的股价走跌1.86%。据台湾钜亨网9月6日援引The Information网站报道,英伟达在AI芯片制造具领先优势,目前仍不确定微软与华为是否会达成协议,但这将是华为挑战英伟达地位的第一步。美国政府禁止华为在美销售电信设备,若...
据路透社报道,澳大利亚媒体周二报道称,澳大利亚政府官员正建议印度在建设高速电信网络(5G)上禁止采用中国华为公司的设备。据《澳大利亚金融评论》和《澳大利亚人报》报道,上周澳大利亚代表团访问印度新德里时,澳大利亚信号局(ASD)反间谍机构的官员被印度官员问到,澳大利亚是如何禁用华为设备建设5G网络的问题。《澳大利亚金融评论》称,“印度官...
本文我们将评估Kneron的NPU是如何达到谷歌和英特尔的同类芯片。 随着边缘计算越来越受欢迎,许多大公司都致力于开发人工智能工作负载专用芯片。值得注意的是,谷歌和英特尔等大品牌分别凭借Coral的Edge TPU和Movidius Myriad X VPU在市场上站稳了脚跟。 现在,一个新玩家杀进了这个领域,并声称要与该行业的一些大公司竞争。总部位于加州的初创公司Kne...
目前,PLC在工业生产和自动化控制中是使用率非常高的集中控制设备,PLC代替了繁重的继电器柜,交流接触器柜等,逐渐的在生产和控制中普及使用,PLC的正确接线是PLC发挥功能的前提条件,熟练的掌握PLC输入端口和输出端口的接线是每一个电力作业人员所必需的。 一般情况下,PLC电源输入端接AC220V,是为了给PLC提供运行电源。PLC输出电源端口一般为DC24V,...

史海拾趣

问答坊 | AI 解惑

本版公告

为了提高各位朋友的回帖和发帖的积极性,对部分文章的附件加了阅读权限! 欢迎大家来到电子工程世界论坛工控版,大家一起来学习!…

查看全部问答∨

求个51单片外围无线通讯的电路

想用51和单片机,ARm,PC通讯,有什么好的建议,或者电路什么…

查看全部问答∨

RegisterHotKey为什么老返回false?

wince5.0的hpc下试过: 1. int  hotKeyID   =   GlobalAddAtom(L"myHotKey");      ret = RegisterHotKey(hwnd, hotKeyID, (UINT)NULL, VK_XXKey); 2. ret = RegisterHotKey(hwnd, 18 ...…

查看全部问答∨

WINCE自带的数据库支持SQL语言吗

RT 不支持SQL语言的话那查询操作是不是很繁琐啊…

查看全部问答∨

WinCE4位ecc校验具体是做什么用的?

打算买个ARM11的板子学习,比较了几家都差不多。飞凌的多了一个1G MLC的nandflash,是4位ecc校验 ,说是“使得大容量flash可以稳定的工作”。这个有什么具体作用啊?这个对学习和开发帮助大吗?PS:请教大侠MLC和flash和SLC的哪个好呢?…

查看全部问答∨

rmmod : chdir(/lib/modules): No such file or directory

(转)     现在的内核模块在插入卸载时都会要转到/lib/modules/内核版本号/ 这个目录里。所以只要建立这个目录并且把要使用的模块.ko文件复制到这个目录就行了。             mk ...…

查看全部问答∨

求助9325屏和systick在RTX下的俩问题

1.这个9325屏用的挺好.但是在RTX中调用初始化,会停在汇编.下面这个位置 void LCD_Clear(u16 Color) {   u32 index = 0;    //  LCD_SetCursor(0x00, 0x013F);   LCD_SetCursor(0x00, 0x00);   ...…

查看全部问答∨

我做的PCB请多提意见!

我做的PCB请多提意见! 一块综合实验板,能多N种实验,可用于产品开发,…

查看全部问答∨

msp launchpad做中断是的问题

#include "io430.h" void Key_init(void) { // P1REN |= BIT3; //打开上拉,电路板上没有上拉电阻,触发边沿是从高电平到低电平   P1IES |= BIT3; //选择触发边沿,下降沿触发   P1IE |= BIT3; //打开P1.3的中断 ...…

查看全部问答∨
小广播
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件
随便看看

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

电子工程世界版权所有 京ICP证060456号 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved