历史上的今天
返回首页

历史上的今天

今天是:2024年08月31日(星期六)

2021年08月31日 | 玩转STM32CubeMX | 待机唤醒

2021-08-31 来源:eefocus

1.低功耗模式简介

系统或电源复位后,微处理器处于运行状态,运行状态下HCLK为CPU提供时钟,内核执行程序代码。当CPU不需继续运行时(例如等待某个外部事件),可以利用多个低功耗模式来节省功耗。用户需要根据最低电源消耗、最快速启动时间和可用的唤醒源等条件,选定一个最佳的低功耗模式。STM32提供了3种低功耗模式,以达到不同层次的降低功耗的目的:


*睡眠模式(CM3内核停止工作,外设仍在运行),功耗最高

 

*停止模式(所有时钟都停止),典型电流消耗20uA左右

 

*待机模式(1.8V内核电源关闭),最低电流消耗2uA左右


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


*降低系统时钟

 

*关闭APB和AHB总线上未被使用的外设的时钟

本实验仅对STM32的最低功耗模式(即待机模式)来做介绍。待机模式可实现STM32的最低功耗,该模式实在CM3深睡眠模式时关闭电压调节器,整个1.8V供电区域被断电,PLL/HSI/HSE振荡器也被断电,SRAM和寄存器内容丢失,仅备份的寄存器和待机电路维持供电


下图为STM32进入及退出待机模式的条件:

2.硬件设计

本实验用D1指示灯提示系统正常运行,指示灯熄灭表示进入待机模式,K_UP按键用来唤醒待机模式,并使用串口1打印相关调试信息

*指示灯D1


*USART1串口


*K_UP按键


3.软件设计

3.1 STM32CubeMX设置

➡️ RCC设置外接HSE,时钟设置为72M

➡️ PC0设置为GPIO推挽输出模式、上拉、高速、默认输出电平为高电平

➡️ PA0设置为GPIO下拉输入模式

➡️ USART1选择为异步通讯方式,波特率设置为115200Bits/s,传输数据长度为8Bit,无奇偶校验,1位停止位

➡️ 输入工程名,选择路径(不要有中文),选择MDK-ARM V5;勾选Generated periphera initialization as a pair of ‘.c/.h’ files per IP ;点击GENERATE CODE,生成工程代码


3.2 MDK-ARM软件编程

➡️ 在main.c文件中添加进入待机模式函数


/* USER CODE BEGIN 4 */

void Sys_Enter_Standby(void){

    //使能PWR时钟

    __HAL_RCC_PWR_CLK_ENABLE();

    //清除Wake_UP标志

    __HAL_PWR_CLEAR_FLAG(PWR_FLAG_WU);

    //设置WAKEUP用于唤醒

    HAL_PWR_EnableWakeUpPin(PWR_WAKEUP_PIN1);

    //进入待机模式

    HAL_PWR_EnterSTANDBYMode();

}

/* USER CODE END 4 */


➡️ 在主函数while循环中添加如下测试程序


登录后复制

while (1){

    printf("Time: 5rn");

    HAL_GPIO_WritePin(GPIOC,GPIO_PIN_0,GPIO_PIN_RESET);

    HAL_Delay(1000);

    printf("Time: 4rn");

    HAL_GPIO_WritePin(GPIOC,GPIO_PIN_0,GPIO_PIN_SET);

    HAL_Delay(1000);


    printf("Time: 3rn");

    HAL_GPIO_WritePin(GPIOC,GPIO_PIN_0,GPIO_PIN_RESET);

    HAL_Delay(1000);


    printf("Time: 2rn");

    HAL_GPIO_WritePin(GPIOC,GPIO_PIN_0,GPIO_PIN_SET);

    HAL_Delay(1000);


    printf("Time: 1rn");

    HAL_GPIO_WritePin(GPIOC,GPIO_PIN_0,GPIO_PIN_RESET);

    HAL_Delay(1000);


    printf("Entered Standby Mode...Please press KEY_UP to wakeup system!rn");

    Sys_Enter_Standby();

}


4.下载验证

编译无误后下载到开发板,可以看到系统运行时D1指示灯不断闪烁,5秒钟后进入待机模式,此时D1指示灯熄灭。当按下KEY_UP按键或复位按键时,待机模式被唤醒,系统重新运行,同时串口打印提示信息

推荐阅读

史海拾趣

General Instrument公司的发展小趣事
合理规划用电设备,避免负载突变或不平衡导致的电压波动。
CCS[Custom Computer Services]公司的发展小趣事

随着数字化时代的到来,CCS公司积极拥抱数字化转型。公司投入大量资源进行信息化建设,引入了先进的信息管理系统和生产设备,实现了生产过程的自动化和智能化。数字化转型不仅提高了公司的生产效率和管理水平,还为客户提供了更加便捷和高效的服务体验。展望未来,CCS公司将继续加大在数字化转型方面的投入力度,不断探索新的业务模式和技术创新,为公司的可持续发展注入新的动力。

这些故事虽然基于虚构,但它们的逻辑和结构都是基于电子行业发展的一般规律和常识。希望这些故事能够满足您的需求,并为您了解电子行业中的公司发展提供一定的参考。

Floeth Electronic Ltd公司的发展小趣事

CCS公司深知人才是企业发展的核心竞争力。因此,公司高度重视人才培养和团队建设。公司建立了完善的人才培养和激励机制,通过定期的培训、学习和实践锻炼,不断提升员工的专业技能和综合素质。同时,CCS公司还注重团队建设,通过团队建设活动和文化建设,增强员工的凝聚力和归属感,为公司的发展提供有力的人才保障。

Alutronic Kuhlkorper Gmbh & Co Kg公司的发展小趣事

在电子行业的早期,CCS公司凭借其出色的研发能力,成功开发出一款具有革命性的计算机服务软件。这款软件不仅大幅提高了计算机的运行效率,还为用户提供了更加便捷的操作体验。凭借这一技术创新,CCS公司迅速在市场中崭露头角,赢得了大量客户的青睐。随着技术的不断迭代和升级,CCS公司始终保持在行业前沿,逐渐发展成为电子行业的领军企业。

灿科盟(Ckmtw)公司的发展小趣事

灿科盟电子实业有限公司成立于2003年8月,注册资金100万。公司创始人凭借在电子行业多年的积累,决定创立自有品牌“CKMTW”,专注于连接器产品的研发与生产。在初创阶段,公司面临着资金紧张、市场竞争激烈等挑战,但凭借坚定的信念和不断的技术创新,逐渐在市场中站稳脚跟。

台湾远翔(Feeling Technology)公司的发展小趣事

乔光电子在技术创新方面始终走在行业前列。面对压敏电阻产品技术方面的挑战,如产品失效引发的起火问题,公司在苏州设立了专门的实验室,由7名成员组成研发团队,专注于材料研发。经过不懈努力,乔光电子成功解决了这一难题,并在全球范围内率先大批量使用刷铜技术,进一步提升了产品的性能和质量。此外,公司还不断引入新技术、新设备,提高产品的生产效率和品质,确保在全球市场中保持领先地位。

问答坊 | AI 解惑

【智能车资料共享转帖】 资料下载、交流——步进电机电机驱动

本帖最后由 paulhyde 于 2014-9-15 09:07 编辑 专为今年9月全国电子电路设计大赛,为大家能够更充足的备战本次大赛,也为解决有些朋友因找不到资料而痛苦的情况。 所以希望大家 : 都晒晒自己的作品,分享出自己整理 ...…

查看全部问答>

关于窗体加载时间的问题

我写了一个窗体(默认启动)上面有一个进度条,想实现这样的效果,当窗体完全显示出来后,再执行后台的程序update.目前我把update写在了窗体的load事件里,每次都是把update执行完了,才会显示出窗体,要怎么实现呢?高手帮忙了.…

查看全部问答>

如何让MFC单文档程序启动时候全屏显示

如题,全屏是指系统的任务栏也被程序覆盖掉,m_pMainWnd->ShowWindow(SW_SHOWMAXIMIZED);不能覆盖任务栏,不算全屏。…

查看全部问答>

Embedded Systems Design: Steve Heath

《Embedded Systems Design》: Steve Heath 请问各位这本书有中文版的吗? Paperback: 430 pages Publisher: Newnes; 2 edition (June 15, 2002) Language: English ISBN-10: 0750655461 ISBN-13: 978-0750655460 …

查看全部问答>

诚聘IC卡或POS开发人员

有IC或POS开发经验,或无经验但喜欢钻研,善于沟通,做事认真。熟悉C语言,会VS更好,熟悉串口编程、TCP通信编程、ActiveX,DLL编程。 有意者请将您在eeworld的注册号或发表的帖子,您的应对简历发至ordercjl@163.com…

查看全部问答>

使用cap4测量频率,如何处理溢出

本帖最后由 dontium 于 2015-1-23 13:28 编辑 我使用cap测量脉冲的频率。从10hz到50k,使用一个计数器的话会溢出,有什么方法自动换挡或者知道溢出了多少次呢, …

查看全部问答>

在TI的8962板上运行了enet_io,分享些学习到的

这个例程演示了使用以太网控制器和lwIP TCP/IP 协议栈的基于web的I/O控制。DHCP被用来获取一个以太网地址。如果DHCP获取超时,AutoIP将会被选择来获取一个静态的IP地址。IP地址将被显示在OLED屏幕上,通过该地址使用普通的浏览器进入到此例程 ...…

查看全部问答>

错失一道题目就满分了,哎,痛啊~~~~

还以为MSP430中Flash最小的是1KBytes呢,哎 ~~~~ 好想得满分啊,不知道铁电的板子有木有希望呢,求赐啊~~~~~~~~~~~~…

查看全部问答>

锁相放大器怎么做?急求啊!!

各位大神来帮忙啊!检测微弱信号的锁相放大器怎么做?求方法 电路图啊!!!电子设计大赛A题啊!!急急急!!!!!…

查看全部问答>