目录

 

一、CubeMX配置RTC

1.RTC实时重要一环——BKP 寄存器

2.RTC实时时钟

2.1打开RTC并设置时间

2.2打开外部低速时钟

2.3代码实现:

二、单片机工作模式

1.低功耗睡眠模式(Sleep)

2.低功耗停止模式(Stop)

3.低功耗待机模式(StandBy)

三、看门狗

1.独立看门狗

2.窗口看门狗


一、CubeMX配置RTC

1.RTC实时重要一环——BKP 寄存器

BKP寄存器简介
BKP(Backup Registers)备份寄存器
BKP可用于存储用户应用程序数据。当VDD(2.03.6V)电源被切断,他们仍然由VBAT(1.83.6V)维持供电。当系统在待机模式下被唤醒,或系统复位或电源复位时他们也不会被复位
TAMPER引脚产生的侵入事件将所有备份寄存器内容清除
RTC引脚输出RTC校准时钟、RTC闹钟脉冲或者秒脉冲
存储RTC时钟校准寄存器
用户数据存储容量:
20字节(中容量和小容量)/ 84字节(大容量和互联型)

小实验将要实现的现象:单片机掉电后,不会遗忘BKP寄存器中的数值!

硬件连接:(需要额外供电给VB引脚)

第一次先写:

HAL_RTCEx_BKUPWrite(&hrtc,RTC_BKP_DR1,100);
uint32_t Ret= HAL_RTCEx_BKUPRead(&hrtc,RTC_BKP_DR1);//断电后靠VBAT供电

OLED_ShowNum(0, 0, Ret, 4, 12);

运行后,第二次注释掉HAL_RTCEx_BKUPWrite(&hrtc,RTC_BKP_DR1,100);并且把单片机供电拔了,继续运行,按道理说,这个Ret数值就会随着单片机断电变成0,但是当VDD电源被切断,他仍然由VBAT维持供电!所以数值会维持不变!

CubeMX配置简单使用BKP寄存器:

BKP 寄存器通常与 RTC 一起使用,在CubeIDE中假如需要使用BKP寄存器,需要先打开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_I2C2_Init();MX_RTC_Init();/* USER CODE BEGIN 2 */OLED_Init();//OLED初始化OLED_CLS();//	HAL_RTCEx_BKUPWrite(&hrtc,RTC_BKP_DR1,100);//写BKPuint32_t Ret= HAL_RTCEx_BKUPRead(&hrtc,RTC_BKP_DR1);//断电后靠VBAT供电。读BKPOLED_ShowNum(0, 0, Ret, 4, 12);//显示数值/* USER CODE END 2 *//* Infinite loop *//* USER CODE BEGIN WHILE */while (1){/* USER CODE END WHILE *//* USER CODE BEGIN 3 */}/* USER CODE END 3 */
}

2.RTC实时时钟

CubeMX配置:

2.1打开RTC并设置时间

2.2打开外部低速时钟

配置RTC时钟源为LSE外部低速时钟

2.3代码实现:

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_RTC_Init();MX_I2C2_Init();/* USER CODE BEGIN 2 */RTC_TimeTypeDef RTC_Time ;//时分秒RTC_DateTypeDef RTC_Date; //年月日OLED_Init();OLED_CLS();OLED_ShowStr(0, 0, "Data:20  -   -", 2);OLED_ShowStr(0, 2, "Time:", 2);/* USER CODE END 2 *//* Infinite loop *//* USER CODE BEGIN WHILE */while (1){/* USER CODE END WHILE *//* USER CODE BEGIN 3 */HAL_RTC_GetDate(&hrtc, &RTC_Date, RTC_FORMAT_BIN);HAL_RTC_GetTime(&hrtc,&RTC_Time, RTC_FORMAT_BIN);OLED_ShowNum(57, 0, RTC_Date.Year, 2, 16);OLED_ShowNum(78, 0, RTC_Date.Month, 2, 16);OLED_ShowNum(100, 0, RTC_Date.Date, 2, 16);OLED_ShowNum(57, 2, RTC_Time.Hours , 2, 16);OLED_ShowNum(78, 2, RTC_Time.Minutes, 2, 16);OLED_ShowNum(100, 2, RTC_Time.Seconds, 2, 16);}/* USER CODE END 3 */
}

效果:

二、单片机工作模式

1.低功耗睡眠模式(Sleep)

使用

HAL_PWR_EnterSLEEPMode(PWR_MAINREGULATOR_ON,PWR_SLEEPENTRY_WFI);

打开睡眠模式。由于Hal库与标准库在管理系统时钟和低功耗模式时的处理方式不同,Hal库中需要多手动关闭SysTick定时器,因为SysTick定时器会周期性触发中断,会唤醒睡眠模式。

HAL_SuspendTick();//关闭SysTick定时器
HAL_PWR_EnterSLEEPMode(PWR_MAINREGULATOR_ON,PWR_SLEEPENTRY_WFI);
HAL_ResumeTick();//恢复SysTick定时器

2.低功耗停止模式(Stop)

HAL_PWR_EnterSTOPMode(PWR_MAINREGULATOR_ON,PWR_STOPENTRY_WFI);//进入Stop模式
SystemClock_Config();//恢复时钟

3.低功耗待机模式(StandBy)

配置PA0为唤醒引脚:

代码:

HAL_PWR_EnableWakeUpPin(PWR_WAKEUP_PIN1);
__HAL_PWR_CLEAR_FLAG(PWR_FLAG_WU);while(1)
{__HAL_RCC_PWR_CLK_ENABLE();HAL_PWR_EnterSTANDBYMode();
}

三、看门狗

1.独立看门狗

打开独立看门狗并设置预分频器和重装值:

HAL_IWDG_Refresh(&hiwdg);//初始化完成后执行一次喂狗
//获取当前的复位是IWDG造成的复位还是按Rst键造成的复位
if (__HAL_RCC_GET_FLAG(RCC_FLAG_IWDGRST) != RESET) 
{// IWDG reset flag is setOLED_ShowString(2, 1, "IWDGRST"); //OLED闪烁IWDGRST字符串HAL_Delay(500);OLED_ShowString(2, 1, " ");HAL_Delay(100);__HAL_RCC_CLEAR_RESET_FLAGS();
}
else
{OLED_ShowString(3, 1, "RST"); //OLED闪烁RST字符串HAL_Delay(500);OLED_ShowString(3, 1, " ");HAL_Delay(100);
}while (1)
{HAL_IWDG_Refresh(&hiwdg);//喂狗HAL_Delay(1100);
}

2.窗口看门狗

代码:

//获取当前的复位是WWDG造成的复位还是按Rst键复位,这里代码有大耗时,需要在
MX_WWDG_Init(); 之前
if (__HAL_RCC_GET_FLAG(RCC_FLAG_WWDGRST) != RESET) 
{// IWDG reset flag is setOLED_ShowString(2, 1, "WWDGRST"); //OLED闪烁IWDGRST字符HAL_Delay(500);OLED_ShowString(2, 1, " ");HAL_Delay(100);__HAL_RCC_CLEAR_RESET_FLAGS();
}
else
{OLED_ShowString(3, 1, "RST"); //OLED闪烁RST字符HAL_Delay(500);OLED_ShowString(3, 1, " ");HAL_Delay(100);
}MX_WWDG_Init();
while (1)
{HAL_Delay(40);HAL_WWDG_Refresh(&hwwdg);//喂狗HAL_GPIO_WritePin(LED_GPIO_Port, LED_Pin, GPIO_PIN_RESET);//开
}

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

如若内容造成侵权/违法违规/事实不符,请联系英文站点网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

9.Docker的容器数据卷使用(挂载)

什么是容器数据卷技术? 到这里,我算是入门docker了! docker的理念:将环境和应用打包成一个镜像!直接安装就能使用 如果数据都在容器中,那么我们一旦将容器删除,数据就会丢失!因为…

使用 TCollector 写入 TDengine

TCollector 是 openTSDB 的一部分,它用来采集客户端日志发送给数据库。 只需要将 TCollector 的配置修改指向运行 taosAdapter 的服务器域名(或 IP 地址)和相应端口即可将 TCollector 采集的数据存在到 TDengine 中,可以充分利用…

高斯消元法详解

文章目录 概念用法特殊情况 我的奇怪方法 概念 什么是高斯消元?让我们看一看 OI-Wiki 的解释: 高斯消元法(Gauss–Jordan elimination)是求解线性方程组的经典算法,它在当代数学中有着重要的地位和价值,是线性代数课…

暴雨服务器成功中标华中科技大学集成电路学院服务器采购项目

近日,武汉暴雨信息发展有限公司在激烈的竞争中脱颖而出,成功中标华中科技大学集成电路学院的服务器采购项目。此次中标产品为暴雨旗下的塔式重装AM400服务器,这一成果标志着暴雨信息在高性能计算领域的卓越实力得到了高校科研机构的高度认可。…

集群聊天服务器---MySQL数据库的建立

数据库的建立表格 user表 字段名称字段类型字段说明约束idINT用户idPRIMARY KEY, AUTO_INCREMENTnameVARCHAR(50)用户名NOT NULL, UNIQUEpasswordVARCHAR(50)用户密码NOT NULLstateENUM(online, offline)当前登录状态DEFAULT offline friend表 字段名称字段类型字段说明约束…

MongoDB 安装使用教程

一、MongoDB 简介 MongoDB 是一个高性能、开源的 NoSQL 文档型数据库,使用 BSON(二进制 JSON)格式存储数据。适合存储大规模、高并发的非结构化数据,常用于大数据、日志存储、微服务架构中。 二、下载安装 2.1 官网下载 访问 …

FastAPI 小白教程:从入门级到实战(源码教程)

目录 1. FastAPI 基本介绍 安装 FastAPI 2. 简单的 CRUD 示例 2.1 创建基本应用 2.2 添加 CRUD 操作​​​​​​​ 3. 处理跨域请求 (CORS) 4. 普通案例:待办事项 API​​​​​​​ 5. 企业案例:认证和数据库集成 5.1 使用 SQLAlchemy 和 JWT…

java中jasypt是用来做什么的?

思路: 简要介绍Jasypt:一句话说明它的作用。配置解析:分别解释password和algorithm的作用。工作流程:说明如何加密敏感数据并在配置文件中使用。安全提醒:强调密钥管理的重要性。 最终回答: Jasypt&…

牛客周赛 Round 98

1.小红与奇数 解题思路&#xff1a;如果给定的数是偶数, 由于1是任意正数的因子, 偶数1奇数 若给定的数是奇数, 1/自身, 都变成了偶数 #include <bits/stdc.h> using namespace std; void solve() {int x;cin >> x;if (x & 1)cout << "No" <…

(2)手摸手-学习 Vue3 之 变量声明【ref 和 reactive】

手摸手-学习 Vue3 之 变量声明【ref 和 reactive】 前言refreactive 前言 vue3 前端代码开发过程中&#xff0c;必然会涉及变量声明&#xff0c;会用到&#xff1a;ref、reactive 。本章节 进行讲解说明。 演示的项目&#xff0c;经处理后的结构如下&#xff1a; ref 用途…

[Terence Tao访谈] 无限 | 关注模型 | 矢量场 | 策略性“作弊” | Lean

关注模型 改变视角真的很重要 无限&#xff1a;假设是球形的奶牛 陶哲轩&#xff1a;一个很好的例子是数学中的塞迈雷迪定理&#xff0c;于1970年代得以证明&#xff0c;它涉及在一组数字集合中寻找某种类型的模式&#xff0c;即等差数列&#xff0c;例如3、5、7或10、15、20。…

汽车v型推力杆总成三维5自由度性能及疲劳测试系统

V型推力杆总成装置&#xff0c;通常设置在载重汽车中、后桥上&#xff0c;成对使用。其一端通过球面销与车架铰接&#xff0c;另一端则安装在车桥上&#xff0c;通过关节轴承与车桥铰接&#xff0c;其主要作用是稳定车桥&#xff0c;保持车桥的稳定位置&#xff0c;同时克服弹簧…

制动系统故障定义与诊断标准

核心定义&#xff1a; 制动不足 (Brake Insufficiency) 定义&#xff1a;制动系统产生的实际制动力低于预期制动力&#xff0c;但未完全丧失制动能力 关键特征&#xff1a; 制动距离增加20%以上 减速度低于预期值30%-50% 制动踏板行程异常增长 等效物理描述&#xff1a;&a…

server-rs

今天早上 看到有人 用cursor写rust东西了 效果不错遂尝试写一下web serverserver本身这个词就不确指单单这一个东西在与cursor交流中,还是越来越明白了之前 没有管过的一些"常识"一个业务服务之所以能“一直处理请求”&#xff0c;是因为有一个“东西”在背后做着持续…

python打卡day59@浙大疏锦行

知识点回顾&#xff1a; SARIMA模型的参数和用法&#xff1a;SARIMA(p, d, q)(P, D, Q)m模型结果的检验可视化&#xff08;昨天说的是摘要表怎么看&#xff0c;今天是对这个内容可视化&#xff09;多变量数据的理解&#xff1a;内生变量和外部变量多变量模型 统计模型&#xff…

Redisson的分布式锁源码分析2

文章目录Redisson的读写锁使用加锁源码分析释放锁源码分析&#xff1a;Redisson一次加多个锁RedissonMultiLock加锁源码分析&#xff1a;RedissonMultiLock释放锁源码分析&#xff1a;RCountDownLatch介绍&#xff1a;RCountDownLatch源码分析&#xff1a;RSemaphore分布式信号…

系统架构设计师论文分享-论软件过程模型及应用

我的软考历程 摘要 2023年2月&#xff0c;我所在的公司通过了研发纱线MES系统的立项&#xff0c;该系统为国内纱线工厂提供SAAS服务&#xff0c;旨在提升纱线工厂的数字化和智能化水平。我在该项目中担任架构设计师&#xff0c;负责该项目的架构设计工作。本文结合我在该项目…

云原生Kubernetes系列 | etcd3.5集群部署和使用

云原生Kubernetes系列 | etcd3.5集群部署和使用 1. etcd集群部署2. etcd集群操作3. 新增etcd集群节点1. etcd集群部署 etcd3.5官网站点:    https://etcd.io/docs/v3.5/op-guide/clustering/    https://etcd.io/docs/v3.5/tutorials/how-to-setup-cluster/ [root@localh…

helm安装配置jenkins

1、k8s1.28.2、helm3.12.0&#xff0c;集群搭建 查看节点运行情况 kubectl get node -o wide openebs部署情况 kubectl get sc -n openebs 2、添加Jenkins Helm仓库 helm repo add jenkins https://charts.jenkins.iohelm repo update# 查看版本 helm search repo -l jen…

Wagtail - Django 内容管理系统

文章目录 一、关于 Wagtail1、项目概览2、相关链接资源3、功能特性 二、安装配置三、使用入门1、快速开始2、兼容性 四、其它社区与支持1、社区资源2、商业支持 开发贡献参考项目参考文献 一、关于 Wagtail 1、项目概览 Wagtail 是一个基于 Django 构建的开源内容管理系统&am…