RTCRTC

ops/2024/10/19 6:16:42/

上边的PRL是计数目标,写入6就是7分频,写入9就是10分频,因为计数值包含了0,重装值写入n就是n+1分频,下边的DIV就是每来一个时钟记一个数,DIV计数器是一个自减计数器,每来一个时钟DIV的值自减一次,自减到0的时候,再来一个输入时钟,DIV输出一个脉冲产生溢出信号,同时DIV从PRL获取重装值,回到重装值继续自减。

        举个例子,RTCCLK为36728Hz时,为了分频后得到1Hz,PRL就要给32727,这个数值是始终不变的,DIV可以保持初始值为0,第一个输入时钟到来时,DIV立刻溢出产生溢出信号给后续电路,同时DIV变为重装值32767,第二个时钟DIV自减变为32766,第三个时钟DIV变为32765,之后来一个时钟自减一次直到为0,再来一个输入时钟会产生一个溢出信号,同时DIV回到32767,这样的话每来32768个输入脉冲,计数器溢出一次,产生一个输出脉冲,分频后输出的频率是1Hz,提供给后边的秒计数器

        32位可编程计数器RTC_CNT,就是计时最核心的部分,可以把这个计数器看成是UNIX时间戳的秒计数器,借助time.h函数可方便的获得年月日时分秒,这个RTC还设计有闹钟寄存器RTC_ALR,这个ALR也是32位的寄存器,和CNT等宽,作用就是设置闹钟,可以在ALR写一个秒数设定闹钟,当CNT和ALR设定的闹钟一样时,代表闹钟响,这时会产生一个RTC_Alarm信号通向右边的中断系统,在中断函数里可以执行相应的操作。闹钟兼具一个功能,闹钟信号可以让STM32退出待机模式,比如设计一个数据采集设备需要再环境非常恶劣的地方工作,要求是每天中午12点采集一次数据,其他时间为了节省电量芯片需处于待机模式,此时就可以使用RTC自带的闹钟功能,时间到闹钟响,采集数据完成继续待机。闹钟值是一个定值,只能响一次,如果想实现周期性的闹钟,在每次闹钟响之后都需要重新设置下一个闹钟时间

中断输出使能和NVIC部分:

        在右边的中断系统中可以注意到有3个信号可以出发中断:

                第一个是RTC_Second,秒中断,来源是CNT的输入时钟,如果开启这个中断,那么程序就会每秒进一次RTC中断,

                第二个是RTC_Overflow溢出中断,来源是CNT的右边,意思是CNT的计数器计满溢出后会触发一次中断,这个中断一般不会触发,因为CNT定义的是无符号数,到2106年才会溢出

                第三个RTC_Alarm闹钟中断,当计数器和闹钟值相等时触发闹钟中断,同时可以将设备从待机模式唤醒

        中断信号到右边的地方,那一块是中断标志位和中断输出控制,F(Flag)结尾的是对应中断标志位,IE(Interrupt Enable)结尾的是中断使能最后三个信号通过一个或门汇聚到NVIC中断控制器

APB1总线的读写部分:

        APB总线和APB1接口是程序读写寄存器的地方,读写寄存器可以通过APB1总线完成,也可以看出RTC是APB1总线上的设备

PWR关联的部分:

        下边的退出待机模式,还有一个WKUP(wake up)引脚,闹钟信号和WKUP引脚都可以唤醒设备,接在PA0的引脚上


http://www.ppmy.cn/ops/26870.html

相关文章

C#应用程序实现多屏显示

前言 随着业务发展,应用程序在一些特定场景下,只在一个显示器上展示信息已经不能满足用户需求。我们如何把主屏运行程序中多个窗体移动到各个扩展屏幕位置显示呢?C# 是通过什么方式来实现的,下面介绍 C# 使用 Screen 类的方式来实…

【语音识别】搭建本地的语音转文字系统:FunASR(离线不联网即可使用)

参考自: 参考配置:FunASR/runtime/docs/SDK_advanced_guide_offline_zh.md at main alibaba-damo-academy/FunASR (github.com)参考配置:FunASR/runtime/quick_start_zh.md at 861147c7308b91068ffa02724fdf74ee623a909e alibaba-damo-aca…

【PyTorch 实战3:YOLOv5检测模型】10min揭秘 YOLOv5 检测网络架构、工作原理以及pytorch代码实现(附代码实现!)

YOLOv5简介 YOLOv5(You Only Look Once, Version 5)是一种先进的目标检测模型,是YOLO系列的最新版本,由Ultralytics公司开发。该模型利用深度学习技术,能够在图像或视频中实时准确地检测出多个对象的位置及其类别&…

Python----增加派对名单

第一题: 描述 为庆祝驼瑞驰在牛爱网找到合适的对象,驼瑞驰通过输入的多个连续字符串创建了一个列表作为派对邀请名单,在检查的时候发现少了他最好的朋友“Allen”的名字,你能使用append函数将这个名字加到列表末尾吗&#xff1f…

腾讯安全客户端(电脑管家部门)一面

上来介绍部门,之后自我介绍 说了是个喜欢每天都学点新东西的人,然后平常也会在课余时间之外去做点项目方面的学习,比如Web项目做出来就是因为兴趣。喜欢结构性的东西,有一门课叫电路电子学一次考试是专业第二。其他也都还可以&am…

2013NOIP普及组真题 4. 车站分级

线上OJ: 一本通:http://ybt.ssoier.cn:8088/problem_show.php?pid1964 核心思想: 1、原文中提到 “如果这趟车次停靠了火车站 x,则始发站、终点站之间所有级别大于等于火车站 x 的都必须停靠”,如果设停靠站为A&…

【漏洞复现】艺创科技智能营销路由器后台命令执行漏洞

漏洞描述: 成都艺创科技有限公司是一家专注于新型网络设备研发、生产、销售和服务的企业,在大数据和云时代,致力于为企业提供能够提升业绩的新型网络设备。 智能营销路由器存在后台命令执行漏洞,攻击者可利用漏洞获取路由器控制…

HarmonyOS开发案例:【排行榜页面】

介绍 本课程使用声明式语法和组件化基础知识,搭建一个可刷新的排行榜页面。在排行榜页面中,使用循环渲染控制语法来实现列表数据渲染,使用Builder创建排行列表布局内容,使用装饰器State、Prop、Link来管理组件状态。最后我们点击…