STM32CUBEMX 待机模式最简单的RTC定时唤醒(低功耗电池产品必备)

这篇具有很好参考价值的文章主要介绍了STM32CUBEMX 待机模式最简单的RTC定时唤醒(低功耗电池产品必备)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

文章意义:

看到很多技术帖子讲述RTC定时唤醒功能的时候,老是需要去读取当前时间,再设定下一个闹钟唤醒时间,无形中多了很多变量和操作。所以我决定分享一种简单的RTC定时唤醒方法,适合于不需要实现具体时间获取的场合,仅实现RTC定时唤醒的功能。

RTC定时唤醒的意义:

电池类便携式产品一般都要求低功耗,以延长产品工作时间。电池类产品开机方式一般有按键开启(电动牙刷等)、隔空感应式开启(自动冲厕类产品等),定时开启(具备预约功能类产品)等。
单片机低功耗唤醒方式一般有两种,一种是通过按键或者外部传感器的唤醒信号进行外部中断唤醒,传感器可以实现无接触唤醒,但这要求传感器自身具备低功耗属性,即其自身具有打盹方式唤醒检测,或者其检测时仍具备低功耗属性。另一种方式为采用RTC定时唤醒(打盹方式),比如1秒内唤醒系统检测5毫秒,剩下的时间则进入低功耗模式。

接下来记录一下stm32cubemx 采用stm32f030f4单片机实现RTC定时唤醒的方法,个人认为是最简单的实现方法了:

1.打开cubemx软件,选择对应MCU,然后使能SW仿真,默认使用内部晶振:
STM32CUBEMX 待机模式最简单的RTC定时唤醒(低功耗电池产品必备)
STM32CUBEMX 待机模式最简单的RTC定时唤醒(低功耗电池产品必备)

2.选择RTC,使能时钟源、日历、闹钟(3个打钩):
STM32CUBEMX 待机模式最简单的RTC定时唤醒(低功耗电池产品必备)

3.接下来设置定时唤醒的时间,与Asynchronous Predivider value 和Synchronous Predivider value以及所使用的时钟有关,下面是一张采用不同时钟设置1秒唤醒时两个参数的配置值:STM32CUBEMX 待机模式最简单的RTC定时唤醒(低功耗电池产品必备)
其计算方法也十分简单,比如我采用LSI内部40KHz时钟,则计算方法为:

1/(40000/128)*312=0.9984≈1秒,

所以我们只需要更改Synchronous Predivider value的值来更改定时时间就行了,比如我们需要500毫秒唤醒一次,只需要把311改为155便可以了。记住我们设置的参数要比计算参数小1才行,因为他们都是默认从1开始计数的。

这里我采用40KHz内部时钟设置1秒RTC唤醒(红箭头的参数需要注意设置为与图中一致即可):
STM32CUBEMX 待机模式最简单的RTC定时唤醒(低功耗电池产品必备)
STM32CUBEMX 待机模式最简单的RTC定时唤醒(低功耗电池产品必备)
四个使能之后闹钟在同一时刻唤醒,即实现了RTC在我们设置的时间计时到达之后便会唤醒。

4.使能RTC对应的唤醒中断:STM32CUBEMX 待机模式最简单的RTC定时唤醒(低功耗电池产品必备)

5.设置空闲引脚高阻输入,以避免无效功耗(打钩后无配置功能的引脚则会默认为高阻输入状态):
STM32CUBEMX 待机模式最简单的RTC定时唤醒(低功耗电池产品必备)

6.设置工程名,保存工程路径,设置保存类型(我用的是keil工程),生成工程:STM32CUBEMX 待机模式最简单的RTC定时唤醒(低功耗电池产品必备)

这样RTC唤醒功能在RTC初始化后便开始计时唤醒了,接下来我们去工程里面实现进入待机模式和RTC唤醒:

进入待机模式:

void sys_enter_standby_mode(void)
{
    __HAL_RCC_PWR_CLK_ENABLE();                                                // 使能PWR时钟
    __HAL_PWR_CLEAR_FLAG(PWR_FLAG_WU);                                         // 清除唤醒标记
	  HAL_PWR_EnterSTANDBYMode();                                                //进入待机模式
}

main函数,PA4接了1个LED灯(教程没配置,需你们自行配置),程序内容为RTC初始化后便开始1秒计时,同时点亮LED灯500毫秒后进入待机模式,进入待机模式后各种变量和配置都会被清除,所以灯也会熄灭;再经过500毫秒后RTC定时唤醒时间到,系统将被唤醒然后从头开始执行,再次点亮灯,所以我们只需要看灯是否有闪烁,便知道系统是否进入了待机模式并成功实现了RTC唤醒:

int main(void)
{
  /* USER CODE BEGIN 1 */

  /* USER CODE END 1 */

  /* MCU Configuration--------------------------------------------------------*/

  /* Reset of all peripherals, Initializes the Flash interface and the Systick. */
  HAL_Init();

  /* USER CODE BEGIN Init */

  /* USER CODE END Init */

  /* Configure the system clock */
  SystemClock_Config();

  /* USER CODE BEGIN SysInit */

  /* USER CODE END SysInit */

  /* Initialize all configured peripherals */
  MX_GPIO_Init();
  MX_ADC_Init();
  //MX_RTC_Init();
  MX_TIM3_Init();
  MX_TIM14_Init();
  MX_USART1_UART_Init();
  /* USER CODE BEGIN 2 */
	MX_RTC_Init();//1s触发1次RTC唤醒中断
  /* USER CODE END 2 */

  /* Infinite loop */
  /* USER CODE BEGIN WHILE */
  while (1)
  {
    /* USER CODE END WHILE */

    /* USER CODE BEGIN 3 */
		HAL_GPIO_WritePin(GPIOA,GPIO_PIN_4,GPIO_PIN_SET);
		HAL_Delay(500);
		sys_enter_standby_mode();
	}
}

下面是我自己做的一个隔空操控的低功耗唤醒小项目,功能为每1秒唤醒5毫秒检测人手,检测到人手之后系统唤醒工作,实现从左到右挥手实现调光亮,从右到左挥手实现切换照明灯的手势识别功能,期间不再自行进入待机模式,直到人手隔空操控系统关机,则重新进入打盹模式等待唤醒工作。

**添加链接描述

有需要的可以留言一下,等下次有空的话我会再写一篇文章分享这个项目,感谢阅读!文章来源地址https://www.toymoban.com/news/detail-435166.html

到了这里,关于STM32CUBEMX 待机模式最简单的RTC定时唤醒(低功耗电池产品必备)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • STM32CubeMX教程10 RTC 实时时钟 - 周期唤醒、闹钟A/B事件和备份寄存器

    开发板(正点原子stm32f407探索者开发板V2.4) STM32CubeMX软件(Version 6.10.0) keil µVision5 IDE(MDK-Arm) ST-LINK/V2驱动 野火DAP仿真器 XCOM V2.6串口助手 使用STM32CubeMX软件配置STM32F407开发板 实现RTC周期唤醒、闹钟A/B事件功能 ,具体为在周期唤醒时利用串口输出当前RTC记录时间,当闹钟

    2024年02月03日
    浏览(51)
  • STM32CubeMX教程25 PWR 电源管理 - 睡眠、停止和待机模式

    开发板(正点原子stm32f407探索者开发板V2.4) STM32CubeMX软件(Version 6.10.0) 野火DAP仿真器 keil µVision5 IDE(MDK-Arm) ST-LINK/V2驱动 XCOM V2.6串口助手 使用STM32CubeMX软件配置STM32F407开发板的 PWR电源管理,并了解STM32的睡眠、停止和待机模式 睡眠模式可以立即进入,也可以在退出优先级

    2024年02月19日
    浏览(35)
  • 【STM32CubeMX】低功耗模式

      本文讲解STM32F10X的低功耗模式,部分资料参考自STM32手册。STM32F10X提供了三种低功耗模式:睡眠模式(Sleep mode)、停机模式(Stop mode)和待机模式(Standby mode)。这些低功耗模式可以有效减少系统功耗,延长电池寿命,对于需要长时间运行的电池供电设备尤为重要。 ST

    2024年02月12日
    浏览(85)
  • STM32F4_待机唤醒详解

    目录 1. 低功耗模式 1.1 降低系统时钟速度 1.2 外设时钟门控 2. 睡眠模式 2.1 进入睡眠模式 2.2 退出休眠模式 3. 停止模式 3.1 进入停止模式 3.2 退出停止模式 4. 待机模式 4.1 进入待机模式 4.2 退出待机模式 4.3 电源控制寄存器:PWR_CR 4.4 电源控制/状态寄存器:PWR_CSR 5. 库函数配置进

    2024年02月16日
    浏览(39)
  • 【STM32】HAL库的STOP低功耗模式UART串口唤醒,第一个接收字节出错的问题(已解决)

    【STM32】HAL库的STOP低功耗模式UART串口唤醒,第一个接收字节出错的问题(已解决) 最近做项目时 用到了STOP1停止模式的串口唤醒 唤醒配置如下: 【STM32】HAL库低功耗STOP停止模式的串口唤醒(解决进入以后立马唤醒、串口唤醒和回调无法一起使用、接收数据不全的问题) 我

    2024年01月15日
    浏览(49)
  • 【STM32笔记】HAL库低功耗STOP停止模式的串口唤醒(解决进入以后立马唤醒、串口唤醒和回调无法一起使用、接收数据不全的问题)

    【STM32】HAL库低功耗STOP停止模式的串口唤醒(解决进入以后立马唤醒、串口唤醒和回调无法一起使用、接收数据不全、首字节错误的问题) 【STM32笔记】低功耗模式配置及避坑汇总 前文: blog.csdn.net/weixin_53403301/article/details/128216064 【STM32笔记】HAL库低功耗模式配置(ADC唤醒无

    2024年02月14日
    浏览(36)
  • 【STM32】HAL库的STOP低功耗模式UART串口唤醒,解决首字节出错的问题(全网第一解决方案)

    【STM32】HAL库的STOP低功耗模式UART串口唤醒,解决首字节出错的问题(全网第一解决方案) 前文: 【STM32】HAL库的STOP低功耗模式UART串口唤醒,第一个接收字节出错的问题(疑难杂症) 目前已解决 并更新了我的gitee库: 基于HAL库建立自己的低功耗模式配置库(STM32L4系列低功耗

    2024年01月18日
    浏览(47)
  • STM32 CubeMX 定时器(普通模式和PWM模式)

    定时器打开与关闭 开启PWM通道 设置PWM,占空比 方式1 方式2 值越大灯越亮

    2024年02月15日
    浏览(34)
  • STM32cubemx定时外部模式测量10M以上频率

    本文讲解利用定时器的外部时钟功能,巧妙测量高频外部信号频率。范围可以到高达30M以上。 所需工具: 开发板:STM32F103RCT6 STM32CubeMX IDE: Keil-MDK 定时器的时钟 我们在正常使用TIM定时器的时候,在cubemx里面的时钟树里,随便点击配置,就可以选择好定时器的时钟。比如下面这

    2024年02月11日
    浏览(34)
  • STM32CubeMX | 使用STM32定时器的PWM输入模式测量脉冲宽度和周期

    本篇博客以STM32F103C8为例,其他系列MCU可能稍有不同,但原理一样。 相关链接博文: STM32CubeMX | STM32使用HAL库实现定时器PWM输出 STM32CubeMX | STM32使用HAL库进行脉冲宽度和周期测量 1、介绍 以前写过一篇博文,介绍的是如何使用定时器的输入捕获功能测量脉冲的宽度以及周期,适

    2024年02月13日
    浏览(50)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包