历史上的今天
返回首页

历史上的今天

今天是:2025年07月31日(星期四)

正在发生

2019年07月31日 | STM32L031低功耗深度睡眠RTC唤醒注意事项

2019-07-31 来源:eefocus

0. 第一可以进入休眠,第二次无法进入休眠,折腾了好久。后来想想应该是进入休眠后立刻被唤醒了,应该是上次的唤醒中断没清除。在启动唤醒前加入以下语句,问题解决。


__HAL_RTC_WAKEUPTIMER_EXTI_CLEAR_FLAG(); //清除标志,否则第二次以后无法进入休眠

   // HAL_RTCEx_SetWakeUpTimer_IT(&hrtc, 0xB4D8, RTC_WAKEUPCLOCK_RTCCLK_DIV16); //20s

   HAL_RTCEx_SetWakeUpTimer_IT(&hrtc, 0xffff, RTC_WAKEUPCLOCK_RTCCLK_DIV16); //28s


1. 发现进入睡眠后,电流1.2uA,满足要求。结果唤醒后,第二次进入睡眠后,电流跳到了19uA,且一直保持下去。结果看了https://blog.csdn.net/zzw3255/article/details/54342878的介绍,把串口干掉了,电流下降到了2.6uA。




2. 去掉了串口,第一次进入睡眠1.2uA,第二次进入睡眠2.6uA。又陷入了僵局,没开串口、没开GPIO,啥事都没干,怎么回事?谁能帮忙解决下?


网上搜索了一下资料,遇到和我这样的情况的人还真不少。例如:


https://blog.csdn.net/zhufeng88/article/details/66968101#commentsedit


说是清除唤醒标志就好了,明天按照这个思路,改代码试试看。(但是本文第0点,不是已经清除了吗?该文指的的标志是哪个标志?)


相关文章:


https://blog.csdn.net/flydream0/article/details/52511311《STM32L152的低功耗测试》


3. 按照昨天的思路,清除唤醒标志


/* Clear all related wakeup flags */

__HAL_PWR_CLEAR_FLAG(PWR_FLAG_WU);

但是问题依旧,第一次进入睡眠1.2uA,第二次进入睡眠2.6uA。抓狂中。


看了文档,多于的1.4uA可能来源于IVREFINT,如下图所示:



但是我的程序已经将VREFINT关闭了,调试后也看到标志位已经确认关闭了,但是还是有2.6uA的电流。


/* Enable Ultra low power mode */

  HAL_PWREx_EnableUltraLowPower();

/* Enable Fast WakeUP */

HAL_PWREx_EnableFastWakeUp();



到这里真的就没招了,重新理了下思路,看了代码,发现自己代码改得太乱了,之前的中断标志清除的语句在调试过程中注释掉了,重新加回来。问题解决。


4. 附上源码


void enter_stop_rtc(unsigned stoptime)

{

/* Enable Ultra low power mode */

  HAL_PWREx_EnableUltraLowPower(); //必须要加,否则多出1.4uA的电流

/* Enable Fast WakeUP */

HAL_PWREx_EnableFastWakeUp();

    /* Disable Wakeup Counter */

    HAL_RTCEx_DeactivateWakeUpTimer(&hrtc);

/*To configure the wake up timer to 4s the WakeUpCounter is set to 0x242B:

RTC_WAKEUPCLOCK_RTCCLK_DIV = RTCCLK_Div16 = 16 

Wakeup Time Base = 16 /(~37KHz) = ~0,432 ms

Wakeup Time = ~5s = 0,432ms  * WakeUpCounter

==> WakeUpCounter = ~5s/0,432ms = 11562 */

 

    HAL_RTCEx_SetWakeUpTimer_IT(&hrtc, stoptime*2396, RTC_WAKEUPCLOCK_RTCCLK_DIV16);

   

   system_power_config();

 

/* Enter Stop Mode */

    HAL_PWR_EnterSTOPMode(PWR_LOWPOWERREGULATOR_ON, PWR_STOPENTRY_WFI);

  /* Clear all related wakeup flags */

__HAL_PWR_CLEAR_FLAG(PWR_FLAG_WU); //必须要加,否则多出1.4uA的电流

__HAL_RTC_WAKEUPTIMER_EXTI_CLEAR_FLAG(); //清除标志,否则第二次以后无法进入休眠

  SystemClock_Config();

}


5. 最终,待机电流定格在1.2uA,满足项目需求。




6. 关于lpuart休眠后异常的问题。因为每次休眠后,都要重新初始化串口。但是发现使用hal库初始化的时候并没有成功,因为里面有个标志,初始化后就不再允许再次初始化了,所以,每次初始化时,需重置标志并位。


/* LPUART1 init function */

static void MX_LPUART1_UART_Init(void)

{

 

  hlpuart1.Instance = LPUART1;

  hlpuart1.Init.BaudRate = 115200;

  hlpuart1.Init.WordLength = UART_WORDLENGTH_8B;

  hlpuart1.Init.StopBits = UART_STOPBITS_1;

  hlpuart1.Init.Parity = UART_PARITY_NONE;

  hlpuart1.Init.Mode = UART_MODE_TX_RX;

  hlpuart1.Init.HwFlowCtl = UART_HWCONTROL_NONE;

  hlpuart1.Init.OneBitSampling = UART_ONE_BIT_SAMPLE_DISABLE;

  hlpuart1.AdvancedInit.AdvFeatureInit = UART_ADVFEATURE_NO_INIT;

hlpuart1.gState = HAL_UART_STATE_RESET; //休眠后初始化要重置该标志位

  if (HAL_UART_Init(&hlpuart1) != HAL_OK)

  {

    _Error_Handler(__FILE__, __LINE__);

  }

 

}

推荐阅读

史海拾趣

DuPont公司的发展小趣事

早在20世纪初,DuPont公司就开始涉足电子材料的研发。当时,随着电子技术的飞速发展,对于高性能、高可靠性的电子材料的需求日益迫切。DuPont凭借其深厚的化学技术积累,成功开发了一系列具有优异性能的电子材料,如高性能绝缘材料、导电材料和封装材料等。这些材料的推出,不仅极大地推动了电子行业的发展,也为DuPont公司在电子材料领域奠定了坚实的基础。

BH Electronics公司的发展小趣事

近年来,随着环保意识的提高,BH Electronics积极响应国家绿色发展的号召,开始了绿色转型之路。公司加大了对环保技术的研发和应用力度,推出了一系列绿色环保产品。同时,BH Electronics还优化了生产流程,减少了能源消耗和废物排放。这些举措不仅提升了公司的环保形象,也为公司的可持续发展注入了新的动力。

这五个故事只是BH Electronics发展历程中的一部分,但它们却生动地展现了这家公司在电子行业中的崛起之路。从初创时期的筚路蓝缕,到技术创新的突破;从国际化战略的拓展,到品质管理的提升;再到绿色发展的转型,BH Electronics始终保持着敏锐的市场洞察力和不懈的创新精神。正是这些因素的共同作用,使得BH Electronics能够在激烈的市场竞争中脱颖而出,成为电子行业中的佼佼者。

Gems Sensors & Controls公司的发展小趣事

随着技术的不断积累和市场的不断拓展,Gems Sensors & Controls公司成功加盟了全球知名的世界500强企业丹纳赫集团。这一举措不仅为公司带来了更多的资源和支持,也加速了Gems的全球化布局。如今,Gems的生产基地遍布北美、欧洲和亚洲,并在全球范围内设立了销售、设计和服务办事处,能够为客户提供更加全面和便捷的服务。

Carroll & Meynell Transformers Ltd公司的发展小趣事

在环保意识日益增强的今天,Carroll & Meynell Transformers Ltd公司积极响应国家绿色发展的号召,致力于研发和生产绿色环保的变压器产品。公司采用环保材料和节能技术,减少生产过程中的能源消耗和环境污染。同时,公司还加强了对废旧产品的回收和处理工作,实现了资源的循环利用。这种绿色环保的发展理念不仅为公司赢得了良好的社会声誉,也为公司的可持续发展奠定了坚实基础。

Eris Technology Corp公司的发展小趣事

进入21世纪后,汽车电子市场蓬勃发展,为Eris Tech提供了新的发展机遇。公司凭借在半导体技术方面的积累,成功开发出多款适用于汽车电子系统的半导体产品,如功率管理芯片、传感器等。这些产品不仅提高了汽车电子系统的性能,还降低了成本,赢得了汽车厂商的广泛认可。随着汽车电子市场的不断扩大,Eris Tech的营收也实现了快速增长。

Fullywell Semiconductor Co Ltd公司的发展小趣事

Fullywell Semiconductor成立于2005年,由一群在半导体领域拥有多年经验的工程师和投资人共同创立。公司初期专注于研发高性能模拟集成电路,以解决当时市场上对于低功耗、高精度信号处理芯片的迫切需求。通过不懈的努力,Fullywell成功推出了其首款产品——一款针对移动通信设备的低功耗射频前端芯片,迅速获得了市场的认可。这一技术创新不仅为公司赢得了首批重要客户,也为后续的发展奠定了坚实的技术基础。

问答坊 | AI 解惑

指纹传感器介绍

1、电容式指纹传感器介绍 电容式指纹传感器是目前市场上的主流半导体指纹传感器。 电容式指纹传感器最早是由美国Veridicom公司生产的FPS100指纹传感器。但是,FPS100指纹传感器由于抗静电指标比较低(只有5KV),存在指纹残留的问题,基本上没 ...…

查看全部问答>

霍尔传感器应用

从理论方面介绍了霍尔传感器的各种基础知识…

查看全部问答>

GSM模块

GSM模块将GSM射频芯片、基带处理芯片、存储器、功放器件等集成在一块线路板上,具有独立的操作系统、GSM射频处理、基带处理并提供标准接口的功能模块。因此,GSM模块具有发送SMS短信,语音通话,GPRS数据传输等基于GSM网络进行通信的所有基本功能。 ...…

查看全部问答>

请帮忙推荐一些高精度高稳定性的稳压管

各位大哥,我现在要做一台测量仪器,需要两个高精度的稳压管,要求如下: 第1个:电压 0.5v~1V之间 第2个:电压 6.0~10V之间 请各位多多帮忙!!!…

查看全部问答>

help:使用THUMB编译后运行死机

程序用ARM mode编译后能正常运行,改为Thumb mode编程就死机。用的是IAR的编译器、Jlink、ST的库代码和启动代码。…

查看全部问答>

基于FPGA的高速数据采集系统的研究

基于FPGA的高速数据采集系统的研究…

查看全部问答>

【问TI】关于28027的FLASH API问题??

    最近在研究28027的FLASH远程更新,参考的为2812的《TMS320F281x Boot ROM Serial Flash Programming》文档,对比之下,发现28027和2812的CKFA程序相差甚大,28027的参考文档为《Flash2802x_API_V200_using_CCS3.3v_and_CCS4.0v_ ...…

查看全部问答>

DIY 电源 进度

目前,已经初步浏览了如下datesheet,目的是对相关功能模块有一个大致的概念,以便后续项目遇到时能知道用什么。 HRPWM 和CLA 部分是需要重新学习的。特别是CLA的汇编语言,只待在项目中遇到需求具体学习。  …

查看全部问答>

基于MSP-EXP430FR5739的POV制作

利用MSP-EXP430FR5739,实现了简易的利用POV原理制作的摇摇棒。摇摇棒有16只高亮度LED,一个水银传感器,一个上拉电阻组成。利用430单片机的IO口中断功能,结合水银传感器来检测摇摇棒的运动方向,同方向时,按一定顺序刷新LED,实现文字,图案的显 ...…

查看全部问答>

讨论一下RC滤波器

RC滤波器是模拟电路中最常用的一种简单的滤波器,大家讨论一下R和C分别对电路特性的影响吧,对于截止频率一定的电路,也就是RC乘积定了之后该如何选择R和C…

查看全部问答>