文章目录

  • 前言
  • 一、STM32L4单片机简介
  • 二、程序设计及相关步骤
    • 1.系统时钟设置
    • 2.RTC以及系统电源配置
      • 2.1 RTC配置
      • 2.2 系统电源配置
    • 3.主程序代码
  • 三、测试结果
  • 总结

前言

低功耗设计对于一些便携式产品以及智能穿戴产品尤其重要,其是一种在满足功能、性能要求的前提下,尽量降低集成电路能耗的设计方法。


一、STM32L4单片机简介

STM32L4系列是超低功耗32位ARM MCU+FPU,工作频率高达80MHz,具有100DMIPS,集成了多达1MB闪存,320KB SRAM,USB OTG FS,提供多达三个快速12位ADC(5 Msps),两个比较器,两个运放,两个DAC通路,一个内部基准电压缓冲器,一个低功耗RTC,两个通用32位计时器和两个专用马达控制的16位低功耗计时器,七个通用16位计时器和两个16位低功耗计时器。主要用在包括音频和图像等低功耗的应用。这里主要用到STM32L496,使用STM32CubeMx进行配置。
相关软件设计主要为:系统时钟设置为80 MHz,SysTick编程为每1ms产生一次中断。默认情况下,低速内部(LSI)时钟用作RTC时钟源。EXTI_Line20内部连接到RTC唤醒事件。启动后5秒,系统自动进入待机模式。RTC唤醒被配置为在大约33秒之后的上升沿上产生中断。启用RTC功能的待机模式下的电流消耗可以在这段时间内进行测量。选择超过半分钟的时间以确保电流收敛到最低工作点。从待机模式唤醒后,程序将以与软件复位后相同的方式重新启动。

二、程序设计及相关步骤

1.系统时钟设置

配置如下:

System Clock source PLL (MSI)
SYSCLK(Hz) 80000000
HCLK(Hz) 80000000
AHB Prescaler 1
APB1 Prescaler 1
APB2 Prescaler 1
MSI Frequency(Hz) 4000000

2.RTC以及系统电源配置

2.1 RTC配置

void MX_RTC_Init(void)
{/* USER CODE BEGIN RTC_Init 0 *//* USER CODE END RTC_Init 0 */RTC_TimeTypeDef sTime = {0};RTC_DateTypeDef sDate = {0};RTC_AlarmTypeDef sAlarm = {0};/* USER CODE BEGIN RTC_Init 1 *//* USER CODE END RTC_Init 1 *//** Initialize RTC Only*/hrtc.Instance = RTC;hrtc.Init.HourFormat = RTC_HOURFORMAT_24;hrtc.Init.AsynchPrediv = 127;hrtc.Init.SynchPrediv = 255;hrtc.Init.OutPut = RTC_OUTPUT_ALARMA;hrtc.Init.OutPutRemap = RTC_OUTPUT_REMAP_NONE;hrtc.Init.OutPutPolarity = RTC_OUTPUT_POLARITY_HIGH;hrtc.Init.OutPutType = RTC_OUTPUT_TYPE_OPENDRAIN;if (HAL_RTC_Init(&hrtc) != HAL_OK){Error_Handler();}

2.2 系统电源配置

static void SystemPower_Config(void)
{/* Enable Power Control clock */__HAL_RCC_PWR_CLK_ENABLE();
}

3.主程序代码

int main(void)
{HAL_Init();/* Configure the system clock to 80 MHz */SystemClock_Config();/* Configure RTC */RTC_Config();/* Configure the system Power */SystemPower_Config();/* 检查并处理系统是否从待机模式恢复 */ if(__HAL_PWR_GET_FLAG(PWR_FLAG_SB) != RESET){/* 清除待机标志 */__HAL_PWR_CLEAR_FLAG(PWR_FLAG_SB); }/* 系统启动5s延迟后,进入待机模式 */HAL_Delay(5000);/* 以下为唤醒顺序- 1.禁用所有使用的唤醒源,- 2.清除所有相关的唤醒标志, - 3.重启所有使用的唤醒源,- 4.进入Standby模式.*//* 1.禁用所有使用的唤醒源*/HAL_RTCEx_DeactivateWakeUpTimer(&RTCHandle);/* 2.清除所有相关的唤醒标志 */__HAL_PWR_CLEAR_FLAG(PWR_FLAG_WU);/* 3.重启所有使用的唤醒源*//* ################设置唤醒时间#####################*//* 生成RTC唤醒中断: 唤醒计数器被设置为其最大值,以产生最长的待机时间,使电流达到其最低值,即功耗最低.当RTC_WAKEUPCLOCK_RTCCLK_DIV=RTCCLK_Div16=16时,最大值为0xFFFF,对应于约33秒:Wakeup Time Base = (RTC_WAKEUPCLOCK_RTCCLK_DIV /(LSI))Wakeup Time = Wakeup Time Base * WakeUpCounter = (RTC_WAKEUPCLOCK_RTCCLK_DIV /(LSI)) * WakeUpCounter==> WakeUpCounter = Wakeup Time / Wakeup Time Base要将唤醒计时器配置为33秒,将唤醒计数器设置为0xFFFF:Wakeup Time Base = 16 /(~32 kHz RC) = ~0.5 msWakeup Time = 0.5 ms  * WakeUpCounter因此, wake-up counter =  0xFFFF  = 65,535 Wakeup Time =  0.5 ms *  65,535 = ~ 33 s. */HAL_RTCEx_SetWakeUpTimer_IT(&RTCHandle, 0xFFFF, RTC_WAKEUPCLOCK_RTCCLK_DIV16);/* 4.进入Standby模式 */HAL_PWR_EnterSTANDBYMode();while (1){}
}

三、测试结果

将代码烧进开发板之后,上电5s以后系统进入Standby低功耗模式,大约33s之后被唤醒。这里也是用万用表测量了系统正常工作以及待机模式的功耗:
系统正常工作整机电流:52.1mA

Standby低功耗模式整机电流:2.22mA

总结

由于在测试的时候ST-link没有取下以及有一些飞线,造成有漏电电流,所以造成系统正常工作时电流还是挺大的,但进入Standby低功耗模式之后,电流下降得非常明显,还是非常给力的,如果取下ST-link以及去掉飞线,低功耗电流应该是微安级别的。

如果需要代码可以联系我!
STM32低功耗还有STOP1、STOP2、Sleep等模式,后续还会出其他模式低功耗进入以及唤醒分享!如果觉得有用请点赞加收藏!

STM32L4系列单片机如何使用RTC唤醒定时器进入Standby低功耗模式并唤醒+整机功耗测试相关推荐

  1. STM32L4系列单片机的低功耗问题

    基于STM32L4系列单片机的低功耗问题 首先看ST关于L4系列的官方文档官方给出了多个低功耗模式并且介绍了这几种模式 Sleep mode:CUP时钟关闭,IO口保持与运行状态相同的状态.可由wak ...

  2. ADSP-BF706 低功耗模式及唤醒

    最近在做这个工作,就先写这一片低功耗模式和唤醒方式. 在文档中,写有低功耗模式主要有两种: Deep sleep mode Hibernate mode 前者主要关闭内核和系统的时钟,当进入deep ...

  3. STM32-(33):低功耗模式与唤醒

    上一篇:STM32-(32):窗口看门狗 下一篇:STM32-(34):DMA传输控制(理论) 功耗管理 很多单片机都有低功耗模式,STM32也不例外.在系统或电源复位以后,微控制器处于运行状态.运行 ...

  4. 【STM32】HAL库开发之开启STM32L4系列单片机的FPU

    STM32L4 属于 Cortex M4F 架构,带有 32 位单精度硬件 FPU,支持浮点指令集,相对于Cortex M0 和 Cortex M3 等,高出数十倍甚至上百倍的运算性能. 而我们在处理 ...

  5. STM32L4系列单片机ADC通过内部参考电压精确计算输入电压

    以STM32L476为例,VREFINT与内部ADC1_INP0相连 当VDDA与VREF+引脚连在一起时,该电压可能波动,这将导致ADC转换误差很大,因此可通过利用单片机内部的参照电压来算出该时刻的 ...

  6. STM32进入低功耗模式以及唤醒(RTC+中断)

    此文献给做单片机工作的同僚,希望大家在嵌入式硬件的道路上越走越远,第一篇,望大家多多指导,不喜勿喷! 这里主要说一下,本人在调试STM32低功耗功能时遇到的问题以及解决思路与大家分享一下. 在确认使用 ...

  7. STM32L4+超低功耗单片机介绍,参考手册,培训教程,视频

     ST扩展了STM32L4产品系列及其性能.最新的STM32L4+系列单片机在继承了原有L4优越的超低功耗特性的同时,还提供了更加优越的性能(最高频率可达120 MHz).更大容量的内置存储器(高 ...

  8. 浅谈英飞凌XMC1xxx系列单片机的BMI功能

    文章目录 前言 一.BMI是什么? 二.BMI的作用? 1. 为什么要有BMI这个东西? 2. BMI可以选择哪些启动模式? 三.BMI怎么用? 1. 每种启动模式对应的BMI值 2. BMI值的修改 ...

  9. 【STM32笔记】HAL库低功耗模式配置(ADC唤醒无法使用、低功耗模式无法烧录解决方案)

    [STM32笔记]HAL库低功耗模式配置(ADC唤醒无法使用.低功耗模式无法烧录解决方案) [STM32笔记]低功耗模式配置及避坑汇总 一.低功耗模式简介 系统提供了多个低功耗模式,可在 CPU 不需 ...

  10. 关于stm8l05x系列单片机rtc初始化问题

    关于stm8l05x系列单片机rtc初始化问题 在开始项目时,用到的单片机是stm8l052的单片机,为了降低功耗就要在活跃停止模式和正常运行模式之间切换,即每隔一段时间用rtc唤醒,在进行rtc初始 ...

最新文章

  1. 6个月火速炼成千亿参数大模型!背后是披荆斩棘的华为云哥哥们
  2. android+系统屏幕亮度,android 设置系统屏幕亮度
  3. Linux 设置时区
  4. Mybatis传入参数类型为Map
  5. Leetcode--128. 最长连续序列
  6. Linux——userdel删除用户不完全问题
  7. Python生态概览(二):网络爬虫、web信息提取、网站开发、网络应用开发
  8. python 构造函数_Python和其他编程语言的代码对比
  9. 51单片机实现蜂鸣器播放天空之城
  10. 软件工程毕业设计选题c语言,经典软件工程专业论文选题 软件工程专业论文题目选什么比较好...
  11. Matlab插值与拟合
  12. 爬虫小练(刷访问量)(python+requests(headers+proxy)+Queue+threading)
  13. 计算机关闭账号用户控制好吗,Win10系统彻底关闭用户帐户控制的方法
  14. div布局三栏-左中右
  15. IT十年人生过客-二十四-转型互联网
  16. web前端工作有哪些职业发展方向
  17. 槛外人观察 :语义和语用
  18. 360笔试题2019年4月24日(彩球分篮子问题 )
  19. 移动端SEO技术难但机会大 优化要点总结
  20. 研究生了,你会查文献吗??这里能会有所帮助

热门文章

  1. 使用prometheus+grafana监控k8s集群
  2. IP地址聚合-路由汇聚_共同前缀(1.相似部分2.最后一组二进制比较,取相同,算位数3.转十进制,加位数)
  3. IP 地址聚合 经典算法 已经过验证
  4. HBuilder X如何运行uni-app 项目
  5. 计算机上word如何批量打印,批量打印文件夹中的多个Word文档
  6. Github注册教程
  7. ESP8266 wifi模块代码详解
  8. PAYPAL支付开发简介
  9. Excel高级应用教程:数据处理与数据分析
  10. VS2022开发Arduino(提供Visual.Micro.Processing.Sketch.dll)