【极海APM32替代笔记】低功耗模式下的RTC唤醒(非闹钟唤醒,而是采用RTC_WAKEUPTIMER)

news2024/11/29 14:09:48

【极海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 */
  }

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/363546.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Spring Boot整合RabbitMQ教程

1.首页我们了解一下消息中间件的应用场景异步处理场景说明:用户注册后,需要发注册邮件和注册短信,传统的做法有两种1.串行的方式;2.并行的方式 (1)串行方式:将注册信息写入数据库后,发送注册邮件,再发送注册短信,以上三个任务全部完成后才返回给客户端。…

js实现轮播图

实现的效果图 原理:一次性加载所有图片,使用定位将图片重合在一起,根据opacity,z-index 属性显示当前图片 一、基本的HTML布局 创建一个外部容器来存放图片,prev-next是添加的左右切换按钮,dot存放图片下方的小白点…

《爆肝整理》保姆级系列教程python接口自动化(二十一)--unittest简介(详解)

简介 前边的随笔主要介绍的requests模块的有关知识个内容,接下来看一下python的单元测试框架unittest。熟悉 或者了解java 的小伙伴应该都清楚常见的单元测试框架 Junit 和 TestNG,这个招聘的需求上也是经常见到的。python 里面也有单元 测试框架-unitt…

小熊电器:精品与创意,走上“顶流之路”的两把“宝剑”

回顾2022年,小家电市场降温趋势明显,业绩表现整体低迷,如主打高端路线的北鼎,去年8亿元的营收出现个位数下滑,归母净利润同比下降超56%;苏泊尔营收也出现微降,归母净利润预计同比增长不到10%。而…

教你如何搭建培训机构-招生管理系统,demo可分享

1、简介1.1、案例简介本文将介绍,如何搭建培训机构-招生管理。1.2、应用场景根据意向信息站的收录信息,可批量导入意向信息,在意向信息站转为意向学员,转为意向学员后可进行报名收费成为正式学员。2、设置方法2.1、表单搭建1&…

从零实现深度学习框架:Seq2Seq从理论到实战【实战篇】

来源:投稿 作者:175 编辑:学姐 往期内容: 从零实现深度学习框架1:RNN从理论到实战(理论篇) 从零实现深度学习框架2:RNN从理论到实战(实战篇) 从零实现深度…

JUC-day01

JUC-day01 什么是JUC线程的状态: wait sleep关键字:同步锁 原理(重点)Lock接口: ReentrantLock(可重入锁)—>AQS CAS线程之间的通讯 1 什么是JUC 1.1 JUC简介 在Java中,线程部分是一个重点,本篇文章说的JUC也是关于线程的。JUC就是java.util .con…

活动预告 | GAIDC 全球人工智能开发者先锋大会

大会主题——“向光而行的 AI 开发者” 2023 全球人工智能开发者先锋大会(GAIDC) 由世界人工智能大会组委会、上海市经济和信息化委员会、上海市人才工作领导小组办公室及中国(上海)自由贸易试验区临港新片区管理委员会指导&…

【Java集合类】HashMap(二)- 设计要点

本章将开始探讨JDK中的HashMap,包括HashMap如何避免和解决上一章所说的散列冲突问题,以及Java 8对HashMap的改进 避免散列冲突- 散列函数设计 String.hashcode() Object.hashCode()方法用于返回当前对象的散列值。Object类中也约定了,重写…

【消费战略方法论】认识消费者的恒常原理(一):消费者稳态平衡原理

“消费战略”是塔望咨询基于大量的战略与营销实践经验结合心理学、经济学、传播学等相关专业学科的知识应用进行提炼与创造形成的战略方法体系。消费战略强调以消费者为导向,进行企业、品牌战略、品牌营销的制订和落地,企业经营的每个环节和输出的每个动…

提取括号中的内容

正则能解决不嵌套的括号内容提取问题遇到一个问题,就是需要提取字符串中每一个中括号里的内容,在网上搜了一下,发现用正则表达式(\[[^\]]*\])可以提取中括号中的内容,以下面文本为匹配对象:PerformanceManager[第1个中…

【算法基础】一维差分 + 二维差分

👦个人主页:Weraphael ✍🏻作者简介:目前正在学习c和算法 ✈️专栏:【C/C】算法 🐋 希望大家多多支持,咱一起进步!😁 如果文章有啥瑕疵 希望大佬指点一二 如果文章对你有…

#笨鸟先飞 猴博士电路笔记 第一篇 电路基础

第零课 基础知识串联与并联电源电势与电位差第一课 电阻电路的等效变换电压源串联电流源并联电压源和电流源串联电压源和电流源并联电压源转化为电流源电流源转化为电压源Δ-Y等效变换第二课 基尔霍夫定律基尔霍夫电流定律任一结点上流出电流之和等于流入电流之和。受控电流源&…

Java 集合 --- 如何遍历Map

Java 集合 --- 如何遍历MapMap的基本操作如何遍历MapType of HashMapMap没有继承Collection接口AbstractMap和AbstractCollection是平级关系 Map的基本操作 package map; import java.util.*; /*** This program demonstrates the use of a map with key type String and val…

case的使用

1.x和z值 1.1.定义 x:表示不定值 z:表示高阻态,还有一种表达方式“?” 一个x/z可以用来定义十六进制(h)数的4位二进制的状态,八进制(o)数的3位,二进制&#x…

「我有一剑可开天门」大厂面试真题,这边建议是直接开冲

前言 说一下,最新在重温雪中悍刀行这本小说,故此有了这么一个沙雕标题(小声bb。这本书是真的好看),这套面试题是一个粉丝总结完发给我的,本意是想让我分享出来帮助到更多的人,我整理了一下&…

失眠时还在吃它?有风险,你了解过吗

失眠,是当代人的通病。所以解决失眠也成了刚需,市面上开始出现各种助眠产品。有商业机构调查发现,62%的90后消费者曾买过助眠产品,其中人气选手就是褪黑素。褪黑素本身就是人体天然存在的,与睡眠有关的物质&#xff0c…

第10天-商品服务 - 分层领域模型及规格参数编码实现

1.分层领域模型规约 DO( Data Object): 此对象与数据库表结构一一对应,通过 DAO 层向上传输数据源对象。DTO( Data Transfer Object):数据传输对象, Service 或 Manager 向外传输的…

VSCode远程连接服务器

工作使用服务器的jupyter,直到有一天服务器挂了,然而,代码还没有来得及备份。o(╥﹏╥)o VScode远程连接服务器,使用服务器的资源,代码可以存在本地,可以解决上述困境。 1.官网下载VSCode.网址https://cod…

JAVA并发集合之ConcurrentHashMap

ConcurrentHashMap是一个支持高并发更新与查询的哈希表(基于HashMap)。Hashmap在多线程并发的情况下,是线程不安全的,容易出现死循环、死锁等问题,JDK8后不会出现死锁问题,但依然存在多线程的系列问题,如:数…