【极海APM32替代笔记】低功耗模式下的RTC唤醒(非闹钟唤醒,而是采用RTC_WAKEUPTIMER)
【极海APM32替代笔记】低功耗模式下的RTC唤醒(非闹钟唤醒,而是采用RTC_WAKEUPTIMER)
【STM32笔记】低功耗模式配置及避坑汇总
前文:
blog.csdn.net/weixin_53403301/article/details/128216064
【STM32笔记】HAL库低功耗模式配置(ADC唤醒无法使用、低功耗模式无法烧录解决方案)
低功耗模式如图所示
停止模式有三种 分别是0 1 2
其中 0 1可以由串口唤醒
2只能由LPUART唤醒
在手册里可以查到
进入也很简单:
/*!* @brief 进入低功耗模式 ** @param [in] mode_flag: 模式标志* 0/大于4 不进入任何模式,1 进入睡眠,2 进入停止,3 进入待机,4 关机* [in] WakeUpPinPolarity: 待机模式下WKUP唤醒引脚极性配置,其他模式无用** @return None*/
void Enter_Low_PWR(uint8_t mode_flag,uint32_t WakeUpPinPolarity)
{ __HAL_RCC_PWR_CLK_ENABLE();switch(mode_flag){case 0:{printf("[INFO] 不进入低功耗模式\n");break;}case 1:{printf("[INFO] 进入睡眠模式\n");delay_ms(10); //消抖__HAL_PWR_CLEAR_FLAG(PWR_FLAG_WU); HAL_PWR_EnterSLEEPMode(PWR_MAINREGULATOR_ON,PWR_SLEEPENTRY_WFI);break;}case 2:{printf("[INFO] 进入停止模式\n");delay_ms(10); //消抖__HAL_PWR_CLEAR_FLAG(PWR_FLAG_WU);HAL_PWR_EnterSTOPMode(PWR_LOWPOWERREGULATOR_ON,PWR_SLEEPENTRY_WFI);break;}case 3:{printf("[INFO] 三秒后进入待机模式\n");delay_ms(3000);printf("[INFO] 进入待机模式\n");HAL_PWR_EnableWakeUpPin(WakeUpPinPolarity);delay_ms(10); //消抖__HAL_PWR_CLEAR_FLAG(PWR_FLAG_WU);HAL_PWR_EnterSTANDBYMode();break;}case 4:{printf("[INFO] 三秒后进入关机模式\n");delay_ms(3000);printf("[INFO] 进入关机模式\n");HAL_PWR_EnableWakeUpPin(WakeUpPinPolarity);delay_ms(10); //消抖__HAL_PWR_CLEAR_FLAG(PWR_FLAG_WU);HAL_PWREx_EnterSHUTDOWNMode();break;}default:{printf("[INFO] 不进入低功耗模式\n");break;}}
}
要进入停止2模式则需要在pwr_ex.c中配置
HAL_PWREx_EnterSTOP2Mode();函数
其中
HAL_PWR_EnterSTOPMode中的PWR_MAINREGULATOR_ON、PWR_LOWPOWERREGULATOR_ON分别是开启稳压器和关闭稳压器 分别对应STOP 0和1
所有的模式都可以用RTC唤醒
可以在手册里面找到外部中断线 所以RTC可以唤醒任一模式
RTC开启Internal WakeUp
在Wake Up配置中 完全不用设置(后面的语句可以直接配)
另外开启唤醒中断
在进入低功耗前 需要先调用RTC唤醒中断配置
HAL_RTCEx_SetWakeUpTimer_IT(&hrtc,counter,clock);
同样 退出时 要在注册的回调里面关闭中断
void HAL_RTCEx_WakeUpTimerEventCallback(RTC_HandleTypeDef *hrtc)
{__HAL_RCC_PWR_CLK_ENABLE();SystemClock_Config();__HAL_RTC_WAKEUPTIMER_EXTI_DISABLE_IT();
}
注意:该唤醒方式其实是将RTC中断作为EXTI在使用
打包一下就是:
/*!* @brief 配置RTC在低功耗模式下的唤醒 ** @param [in] counter: 计数值* [in] clock: 时钟值* [in] EnableNotDisable: 使能或者关闭** @return None*/
void Ctrl_RTC_WakeUp(uint32_t counter,uint32_t clock,bool EnableNotDisable)
{ if(EnableNotDisable){HAL_RTCEx_SetWakeUpTimer_IT(&hrtc,counter,clock);}else{__HAL_RTC_WAKEUPTIMER_EXTI_DISABLE_IT(); }
}
调用:
Ctrl_UART_StopMode_WakeUp(&huart2,true);Ctrl_RTC_WakeUp(2000,RTC_WAKEUPCLOCK_RTCCLK_DIV16,true);Enter_Low_PWR(2,0);/* USER CODE END 2 *//* Infinite loop *//* USER CODE BEGIN WHILE */while (1){printf("[INFO] ADC: %f\n",Get_Real_ADC_Value(&hadc2));Count_ADXL345();Count_TMP75();TIM_Delay_ms(1000,&htim6);Ctrl_UART_StopMode_WakeUp(&huart2,true);Ctrl_RTC_WakeUp(2000,RTC_WAKEUPCLOCK_RTCCLK_DIV16,true);Enter_Low_PWR(2,0);/* USER CODE END WHILE *//* USER CODE BEGIN 3 */}
【极海APM32替代笔记】低功耗模式下的RTC唤醒(非闹钟唤醒,而是采用RTC_WAKEUPTIMER)相关推荐
- 【极海APM32替代笔记】低功耗模式配置及配置汇总
[极海APM32替代笔记]低功耗模式配置及配置汇总 文章总结:(后续更新以相关文章为准) [STM32笔记]低功耗模式.WFI命令等进入不了休眠的可能原因(系统定时器SysTick一直产生中断) [S ...
- 【STM32笔记】低功耗模式下的RTC唤醒(非闹钟唤醒,而是采用RTC_WAKEUPTIMER)
[STM32笔记]低功耗模式下的RTC唤醒(非闹钟唤醒,而是采用RTC_WAKEUPTIMER) [STM32笔记]低功耗模式配置及避坑汇总 前文: blog.csdn.net/weixin_5340 ...
- stm32f103 低功耗调试笔记 低功耗模式下一直有个800多uA的电流
最新在做一个低功耗项目 ,用到stm32f103芯片,用到的stop模式和standby模式. 因 stop 只比 standby 模式多1-3uA,最终选用了 stop 模式.下面是官方文档中对几种 ...
- STM32低功耗模式下GPIO如何配置最节能?
目录 1.将未使用的GPIO 配置为模拟输入模式 2.调节GPIO 速度 3.GPIO不使用时禁用寄存器时钟 4.避免悬空未使用的引脚 STM32低功耗模式下GPIO如何配置最节能,这里总结了一下四点 ...
- stm32低功耗模式下mcu的实际功耗(ST芯片手册)
STM32F103xC. STM32F103xD和STM32F103xE增强型产品支持三种低功耗模式,可以在要求低 功耗.短启动时间和多种唤醒事件之间达到最佳的平衡. ● 睡眠模式 在睡眠模式,只有C ...
- android 默认静音模式设置,Android:如何在振动设置之间进行切换(始终,永不,仅在静音模式下,仅在非静音模式下)?再访...
寻找方法来切换之间:从不模式模式 始终 仅在静音 仅在非静音 这些选择是通过路径找到的 - - 菜单>>设置>>声音>>振动---在手机上. 它是简单的导航手机上的 ...
- 国鼎代理极海APM32系列MCU智能扫地机方案
为智能家居新概念的领跑者,扫地机器人正站在"懒人经济"的风口,备受市场追捧.据奥维云网数据预计,2022年国内扫地机市场规模将达178亿. APM32智能扫地机应用方案 作为国产M ...
- APM飞控学习笔记——自动模式下一分钟自动降落
提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 前言 一.自动模式简介 二.添加自动降落功能 1.飞控主循环调用逻辑 2.功能添加 总结 前言 APM是一款功能齐全的开源多 ...
- 【STM32笔记】低功耗模式配置及避坑汇总
[STM32笔记]低功耗模式配置及配置汇总 文章总结:(后续更新以相关文章为准) [STM32笔记]低功耗模式.WFI命令等进入不了休眠的可能原因(系统定时器SysTick一直产生中断) [STM32 ...
最新文章
- CVPR2020:点云分析中三维图形卷积网络中可变形核的学习
- 如何用初中知识理解机器学习到底在干什么事情
- 企业项目开发--分布式缓存memcached(3)
- 【Paper】2011_Distributed fault detection for interconnected second-order systems
- 序列二次规划_最优控制与规划
- php修改linux文件权限设置,linux怎么给文件设置权限
- Java好学吗?Java能做什么?如何快速入门Java?
- ios显示gif格式图片
- java实现小说采集_Java实现一个小说采集程序的简单实例
- 各大著名汽车标志图 来历
- 你一定没见过的windows操作系统——windows93
- Win11投屏时禁止通知的方法
- solr mysql dih_Solr结构化数据导入DIH
- 最强特殊字符、表情符号、Unicdeo字符串处理
- 团队作业-博客2(团队介绍)
- Celery源码阅读 result
- 和俞军老师聊产品经理如何突破发展瓶颈
- 乐享集团控股股东分道扬镳:朱子南独掌大权,张之的退出董事会
- 字体的基础知识:英文字体区分练习
- 高清电视HDTV概述
热门文章
- win8.1系统如何激活
- WPF应用ocx控件
- 跨地区信息服务SP许可证(不含互联网信息服务业务)是什么许可证?
- 计算机专业的大学生活演讲稿,【我的大学规划1000字大一新生】_演讲稿我的大学生活规划我大一新生学校让写我的大学...
- LittleVGL踩坑指南03:Arduino下显示和触摸驱动配置(TFT_eSPI)
- JavaScript交互式网页设计 • 【第5章 JavaScript对象】
- 笔记本电脑 音频输出 杂音 问题的解决方案
- 下载网络图片两种方式
- 教你一招,element表格行轻松上下移动
- C#使用FastReport 报表初步体验(图文)