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

相关文章

MybatisPlus service接口功能介绍

《MybatisPlusservice接口功能介绍》:本文主要介绍MybatisPlusservice接口功能介绍,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友... 目录Service接口基本用法进阶用法总结:Lambda方法Service接口基本用法MyBATisP

MySQL复杂SQL之多表联查/子查询详细介绍(最新整理)

《MySQL复杂SQL之多表联查/子查询详细介绍(最新整理)》掌握多表联查(INNERJOIN,LEFTJOIN,RIGHTJOIN,FULLJOIN)和子查询(标量、列、行、表子查询、相关/非相关、... 目录第一部分:多表联查 (JOIN Operations)1. 连接的类型 (JOIN Types)

java中BigDecimal里面的subtract函数介绍及实现方法

《java中BigDecimal里面的subtract函数介绍及实现方法》在Java中实现减法操作需要根据数据类型选择不同方法,主要分为数值型减法和字符串减法两种场景,本文给大家介绍java中BigD... 目录Java中BigDecimal里面的subtract函数的意思?一、数值型减法(高精度计算)1.

Pytorch介绍与安装过程

《Pytorch介绍与安装过程》PyTorch因其直观的设计、卓越的灵活性以及强大的动态计算图功能,迅速在学术界和工业界获得了广泛认可,成为当前深度学习研究和开发的主流工具之一,本文给大家介绍Pyto... 目录1、Pytorch介绍1.1、核心理念1.2、核心组件与功能1.3、适用场景与优势总结1.4、优

Java实现本地缓存的常用方案介绍

《Java实现本地缓存的常用方案介绍》本地缓存的代表技术主要有HashMap,GuavaCache,Caffeine和Encahche,这篇文章主要来和大家聊聊java利用这些技术分别实现本地缓存的方... 目录本地缓存实现方式HashMapConcurrentHashMapGuava CacheCaffe

Spring Security介绍及配置实现代码

《SpringSecurity介绍及配置实现代码》SpringSecurity是一个功能强大的Java安全框架,它提供了全面的安全认证(Authentication)和授权(Authorizatio... 目录简介Spring Security配置配置实现代码简介Spring Security是一个功能强

python多线程并发测试过程

《python多线程并发测试过程》:本文主要介绍python多线程并发测试过程,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录一、并发与并行?二、同步与异步的概念?三、线程与进程的区别?需求1:多线程执行不同任务需求2:多线程执行相同任务总结一、并发与并行?1、

JSR-107缓存规范介绍

《JSR-107缓存规范介绍》JSR是JavaSpecificationRequests的缩写,意思是Java规范提案,下面给大家介绍JSR-107缓存规范的相关知识,感兴趣的朋友一起看看吧... 目录1.什么是jsR-1072.应用调用缓存图示3.JSR-107规范使用4.Spring 缓存机制缓存是每一

Java中 instanceof 的用法详细介绍

《Java中instanceof的用法详细介绍》在Java中,instanceof是一个二元运算符(类型比较操作符),用于检查一个对象是否是某个特定类、接口的实例,或者是否是其子类的实例,这篇文章... 目录引言基本语法基本作用1. 检查对象是否是指定类的实例2. 检查对象是否是子类的实例3. 检查对象是否

什么是ReFS 文件系统? ntfs和refs的优缺点区别介绍

《什么是ReFS文件系统?ntfs和refs的优缺点区别介绍》最近有用户在Win11Insider的安装界面中发现,可以使用ReFS来格式化硬盘,这是不是意味着,ReFS有望在未来成为W... 数十年以来,Windows 系统一直将 NTFS 作为「内置硬盘」的默认文件系统。不过近些年来,微软还在研发一款名