STM32H7-RTC介绍与测试,Wakeup Timer测试,alarm测试

2024-02-01 04:30

本文主要是介绍STM32H7-RTC介绍与测试,Wakeup Timer测试,alarm测试,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

功能框图

在这里插入图片描述

功能描述

入侵检测

在这里插入图片描述
什么是入侵检测,我在网上搜索到了一个应用,假如你的设备有外壳,在外壳缝隙连接一个开关电路,另一端连接到上图中的RTC_TAMPx中。当设备被外界打开的时候,检测到入侵,清除备份寄存器和备份RAM。这里从上图可以看到,过欠压和过温的时候,也可以触发入侵。

​ 入侵事件发生的时候,默认触发时间戳记录,时间戳在下一节

时间戳

在这里插入图片描述

时间戳这个功能主要用于,当我们检测到外界的某个信号时候,保存当前的实时时间。上图可以看到,时间戳寄存器有两个来源,一个是外界引脚,一个是影子寄存器(当前时间的一个备份寄存器)。时间戳可以触发TSF中断

日历

在这里插入图片描述
日历是RTC的核心功能,日历时钟来源有外部参考时钟,LSE,分频HSE,LSI,最终输入到RTC。RTC有一个实时计数器,我们如果直接读取该计数器的数据可能会出现数据不一致的问题,如下面的例子,读完的数据比实际时间快约一整天
在这里插入图片描述
所以,STM32内部放了影子寄存器,当时间变化的时候实时计数器里的数据被复制到影子寄存器。我们读取影子寄存器的时候有硬件锁定机制,保证数据一致性。

周期唤醒定时器

在这里插入图片描述
简单的一个定时器,做长定时的话可用。最长定时可达到36H,可触发中断WUTF

闹钟

STM32H750有两个闹钟,通过比对预设值和影子寄存器中的值是否一致来触发闹钟。可以设置比对日历中的任何一个字段,比如3秒钟的时候闹钟“响”,26分钟的时候响,今天早上8点半响,2099年响。。。。。

闹钟可输出到引脚,可以触发中断/事件

闹钟AB都有输出功能,AB没有区别,图上只画了A

多一嘴:RTC输出源除了闹钟,还可以是两个级联的分频器(1HZ)
在这里插入图片描述

测试

cubemx

只测试了闹钟和定时器

开启闹钟A,唤醒定时器

设置当前时间为0时0分0秒,日期也全0

唤醒定时器设置为1Hz,计数器默认向下计数自动重装,初值设置为4

开启闹钟中断和唤醒定时器中断
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

代码编写

RTC_TimeTypeDef time;RTC_DateTypeDef data;uint32_t wakeup_data;//这里必须选清除wakeup中断标志位,否则可能触发不了中断__HAL_RTC_WAKEUPTIMER_CLEAR_FLAG(&hrtc, RTC_FLAG_WUTF);while (1){HAL_RTC_GetTime(&hrtc,&time,RTC_FORMAT_BIN);HAL_RTC_GetDate(&hrtc,&data,RTC_FORMAT_BIN);wakeup_data = HAL_RTCEx_GetWakeUpTimer(&hrtc);printf("%d h	%d min	 %d s\r\n", time.Hours,time.Minutes,time.Seconds);HAL_GPIO_TogglePin(LEDB_GPIO_Port,LEDB_Pin);HAL_Delay(1000);}
//重写中断处理函数
void HAL_RTC_AlarmAEventCallback(RTC_HandleTypeDef *hrtc)
{printf("%s\r\n",__FUNCTION__);
}
void HAL_RTCEx_WakeUpTimerEventCallback(RTC_HandleTypeDef * hrtc)
{printf("%s\r\n",__FUNCTION__);
}

现象

在这里插入图片描述

补充

什么是亚秒?
RTC clock要想分频到1HZ,要经过第一个异步分频器和第二个同步分频器,之后时钟周期才是1秒钟。第二个分配器计数值从0计满为1秒,其中的数值就是亚秒。一般来说第一个分频器分频值为128,第二个为256,两者相乘为32768。所以1亚秒等于1/256秒。

这篇关于STM32H7-RTC介绍与测试,Wakeup Timer测试,alarm测试的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/666083

相关文章

Java中HashMap的用法详细介绍

《Java中HashMap的用法详细介绍》JavaHashMap是一种高效的数据结构,用于存储键值对,它是基于哈希表实现的,提供快速的插入、删除和查找操作,:本文主要介绍Java中HashMap... 目录一.HashMap1.基本概念2.底层数据结构:3.HashCode和equals方法为什么重写Has

Springboot项目构建时各种依赖详细介绍与依赖关系说明详解

《Springboot项目构建时各种依赖详细介绍与依赖关系说明详解》SpringBoot通过spring-boot-dependencies统一依赖版本管理,spring-boot-starter-w... 目录一、spring-boot-dependencies1.简介2. 内容概览3.核心内容结构4.

setsid 命令工作原理和使用案例介绍

《setsid命令工作原理和使用案例介绍》setsid命令在Linux中创建独立会话,使进程脱离终端运行,适用于守护进程和后台任务,通过重定向输出和确保权限,可有效管理长时间运行的进程,本文给大家介... 目录setsid 命令介绍和使用案例基本介绍基本语法主要特点命令参数使用案例1. 在后台运行命令2.

基于Python Playwright进行前端性能测试的脚本实现

《基于PythonPlaywright进行前端性能测试的脚本实现》在当今Web应用开发中,性能优化是提升用户体验的关键因素之一,本文将介绍如何使用Playwright构建一个自动化性能测试工具,希望... 目录引言工具概述整体架构核心实现解析1. 浏览器初始化2. 性能数据收集3. 资源分析4. 关键性能指

MySQL常用字符串函数示例和场景介绍

《MySQL常用字符串函数示例和场景介绍》MySQL提供了丰富的字符串函数帮助我们高效地对字符串进行处理、转换和分析,本文我将全面且深入地介绍MySQL常用的字符串函数,并结合具体示例和场景,帮你熟练... 目录一、字符串函数概述1.1 字符串函数的作用1.2 字符串函数分类二、字符串长度与统计函数2.1

zookeeper端口说明及介绍

《zookeeper端口说明及介绍》:本文主要介绍zookeeper端口说明,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录一、zookeeper有三个端口(可以修改)aVNMqvZ二、3个端口的作用三、部署时注意总China编程结一、zookeeper有三个端口(可以

Python中win32包的安装及常见用途介绍

《Python中win32包的安装及常见用途介绍》在Windows环境下,PythonWin32模块通常随Python安装包一起安装,:本文主要介绍Python中win32包的安装及常见用途的相关... 目录前言主要组件安装方法常见用途1. 操作Windows注册表2. 操作Windows服务3. 窗口操作

c++中的set容器介绍及操作大全

《c++中的set容器介绍及操作大全》:本文主要介绍c++中的set容器介绍及操作大全,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考下吧... 目录​​一、核心特性​​️ ​​二、基本操作​​​​1. 初始化与赋值​​​​2. 增删查操作​​​​3. 遍历方

使用Python进行GRPC和Dubbo协议的高级测试

《使用Python进行GRPC和Dubbo协议的高级测试》GRPC(GoogleRemoteProcedureCall)是一种高性能、开源的远程过程调用(RPC)框架,Dubbo是一种高性能的分布式服... 目录01 GRPC测试安装gRPC编写.proto文件实现服务02 Dubbo测试1. 安装Dubb

HTML img标签和超链接标签详细介绍

《HTMLimg标签和超链接标签详细介绍》:本文主要介绍了HTML中img标签的使用,包括src属性(指定图片路径)、相对/绝对路径区别、alt替代文本、title提示、宽高控制及边框设置等,详细内容请阅读本文,希望能对你有所帮助... 目录img 标签src 属性alt 属性title 属性width/h