原创 STM32低功耗休眠设计精讲

2019-10-9 15:31 2143 8 2 分类: MCU/ 嵌入式 文集: 程序设计

RTC代表的是实时时钟的意思。因为它提供的时钟基准比较准确所以用处还是很多的。本文章主要讲解基于STM32F103上的RTC闹钟中断功能以及用闹钟中断唤醒STM32的待机模式。

这里主要说一下,本人在调试STM32低功耗功能时遇到的问题以及解决思路与大家分享一下。

在确认使用低功耗功能后,大家铁定会通过不同途径查找相关的资料,了解到什么是低功耗、低功耗有哪几种以及不同模式之间的区别,最后还有一些程序截取、说明,资料不少,但是能让人一目了然理解的不太多,尤其是刚接触这个功能的新手,或许是资历尚浅,编程以及检索资料能力还有待提高。

再此,我抛砖引玉,发表一篇我的调试感受,我从 低功耗初体验、低功耗功能说明、低功耗总结三个方面进行说明。

首先,低功耗初体验。跟大家一样,查到STM32的低功耗有三个模式,分别是睡眠模式、停止模式以及待机模式(STM32开发指南——库函数版本321页)。

这里介绍的是停机模式,原因有以下亮点:功耗以及实用性。三个模式的功耗由高到低依次是睡眠、停机,最后是待机,既然待机功耗最低为什么选停机模式,这是由于待机模式与停机模式都可以RTC唤醒,但是停机模式可以通过任意管脚的外部中断唤醒,而待机模式只能通过NRST因脚伤的外部复位唤醒,局限性太大。

第二部分,低功耗功能说明

/*RTC设置*/

RCC_APB1PeriphClockCmd(RCC_APB1Periph_PWR | RCC_APB1Periph_BKP, ENABLE);

PWR_WakeUpPinCmd(ENABLE);

PWR_BackupAccessCmd(ENABLE);

RTC_Configuration();

NVIC_Configuration();

//MCU进入停机模式

void MCU_EnterSTOPMode(void)

{

RCC_APB1PeriphClockCmd(RCC_APB1Periph_PWR | RCC_APB1Periph_BKP, ENABLE);

/* Allow access to BKP Domain */

PWR_BackupAccessCmd(ENABLE);

RTC_WaitForLastTask();

RTC_ClearFlag(RTC_FLAG_SEC);

RTC_WaitForLastTask();

while(RTC_GetFlagStatus(RTC_FLAG_SEC) == RESET);

RTC_SetAlarm(RTC_GetCounter()+ Stop_Time);

//Stop_Time这个是唤醒时间,单位是秒,即Stop_Time秒后启动RTC唤醒

RTC_WaitForLastTask();

RTC_ClearFlag(RTC_FLAG_RSF);

RTC_WaitForLastTask();

RTCAlarm_IT_Enable();

RTC_WaitForLastTask();

EXTIX_Init();

EXIT_Configuration();

STOP_PeripthAndClk();

EXTI->PR = 0x00;

/* Request to enter STOP mode with regulator in low power mode*/

PWR_EnterSTOPMode(PWR_Regulator_LowPower,PWR_STOPEntry_WFI);

CLI();//ÆÁ±ÎËùÓÐÖжÏ

System_timer_1ms = 0;

SYSCLKConfig_STOP();

START_PeripthAndClk();

SEI();

}

最后,低功耗总结

低功耗想要做到自己满意的效果,需要程序与硬件配合,根据外部电路将引脚置成上拉或者下拉,减小不必要的电流损失;还有就是将开启的外设关闭,如果忘了关闭可能会对结果有较大影响(尤其是又添加功能的时候,记得初始化的时候加上并调试成功可以使用时,记得在进入低功耗关掉)

此文献给做单片机工作的同僚,希望大家在嵌入式硬件的道路上越走越远,第一篇,望大家多多指导,不喜勿喷!

PARTNER CONTENT

文章评论1条评论)

登录后参与讨论

curton 2019-10-11 22:35

学习
相关推荐阅读
minicaihong 2020-10-22 16:44
场效应管放大电路的直流偏置电路详解
什么是偏置电路晶体管构成的放大器要做到不失真地将信号电压放大,就必须保证晶体管的发射结正偏、集电结反偏。即应该设置它的工作点。所谓工作点就是通过外部电路的设置使晶体管的基极、发射极和集电极处于所要求的...
minicaihong 2020-10-22 16:37
场效应管偏置电路-场效应管偏置电路的工作原理及作用分析
什么是偏置电路晶体管构成的放大器要做到不失真地将信号电压放大,就必须保证晶体管的发射结正偏、集电结反偏。即应该设置它的工作点。所谓工作点就是通过外部电路的设置使晶体管的基极、发射极和集电极处于所要求的...
minicaihong 2020-10-22 16:27
MOS管偏置电路-MOS管直流、恒流等偏置电路图文及方程详解
MOS管偏置电路MOS管直流偏置电路MOS管的单电源直流偏置电路有两种:1、只能用于结型和耗尽型MOS管的自给偏置电路。2、可用于各种MOS管的分压式偏置电路自给MOS管偏置电路(1)图解法根据图中电...
minicaihong 2020-05-27 09:50
sprintf 格式化字符串
sprintf 格式化字符串好久没写博客了,又遇到自己觉得很傻的问题,格式化字符串还要找下定义和用法sprintf() 函数把格式化的字符串写入变量中。arg1、arg2、++ 参数将被插入...
minicaihong 2020-05-25 15:07
12T和1T的单片机
标准51是12T的,就是说12个时钟周期(晶振周期,例如12M的,周期是1/12M,单位秒),机器做一个指令度周期,刚好就是1/12M*12=1uS,常见指令例如nop就是一个周期,刚好1uS,其他的...
minicaihong 2020-05-23 16:22
4HC595驱动8*8点阵屏
74HC595驱动8*8点阵屏置顶 菜袅1号 2020-05-19 10:00:03   52   收藏展开该项目使用国产M0核单片机,驱动方式类似于stm32平台;点阵驱动芯片:...
EE直播间
更多
我要评论
1
8
关闭 站长推荐上一条 /3 下一条