当前位置: 首页 > wzjs >正文

技术共享平台南通网站优化公司

技术共享平台,南通网站优化公司,学网页制作有什么用,网站运营专员做什么写这个文章是用来学习的,记录一下我的学习过程。希望我能一直坚持下去,我只是一个小白,只是想好好学习,我知道这会很难,但我还是想去做! 本文写于:2025.04.19 STM32开发板学习——第42节: [12-2] BKP备份寄存器&RTC实时时钟 前言开发板说…

写这个文章是用来学习的,记录一下我的学习过程。希望我能一直坚持下去,我只是一个小白,只是想好好学习,我知道这会很难,但我还是想去做!

本文写于:2025.04.19

STM32开发板学习——第42节: [12-2] BKP备份寄存器&RTC实时时钟

  • 前言
  • 开发板说明
  • 引用
  • 解答和科普
  • 一、BKP备份寄存器
  • 二、RTC实时时钟
  • 问题
  • 总结

前言

   本次笔记是用来记录我的学习过程,同时把我需要的困难和思考记下来,有助于我的学习,同时也作为一种习惯,可以督促我学习,是一个激励自己的过程,让我们开始32单片机的学习之路。
   欢迎大家给我提意见,能给我的嵌入式之旅提供方向和路线,现在作为小白,我就先学习32单片机了,就跟着B站上的江协科技开始学习了.
   在这里会记录下江协科技32单片机开发板的配套视频教程所作的实验和学习笔记内容,因为我之前有一个开发板,我大概率会用我的板子模仿着来做.让我们一起加油!
   另外为了增强我的学习效果:每次笔记把我不知道或者问题在后面提出来,再下一篇开头作为解答!

开发板说明

   本人采用的是慧净的开发板,因为这个板子是我N年前就买的板子,索性就拿来用了。另外我也购买了江科大的学习套间。
   原理图如下
1、开发板原理图
在这里插入图片描述
2、STM32F103C6和51对比
在这里插入图片描述
3、STM32F103C6核心板
在这里插入图片描述

视频中的都用这个开发板来实现,如果有资源就利用起来。另外也计划实现江协科技的套件。

下图是实物图
在这里插入图片描述

引用

【STM32入门教程-2023版 细致讲解 中文字幕】
还参考了下图中的书籍:
STM32库开发实战指南:基于STM32F103(第2版)
在这里插入图片描述
数据手册
在这里插入图片描述

解答和科普

一、BKP备份寄存器

在这里插入图片描述
VBAT:备用电池供电;正极3.3V,负极共地。VBAT和主电源接在一起,并且再连接一个100nF的滤波电容。
PC13-TAMPER-RTC共用一个引脚,2号引脚,可以先加入一个默认的上拉或者下拉电阻,别人拆开你的设备,触发开关,就会在TAMPER引脚产生上升沿或者下降沿,这样STM32就检测到侵入事件了,这时BKP的数据会自动清零,并且申请中断,你在中断里,还可以继续保护设备, 另外主电源断电后,侵入检测仍然有效。
RTC引脚输出RTC校准时钟、RTC闹钟脉冲或者秒脉冲
存储RTC时钟校准寄存器
PC13-TAMPER-RTC,这三个功能,同一时间只能使用一个。
BKP(20个字节)
在这里插入图片描述
当VDD主电源掉电时,后备区域仍然可以由VBAT的备用电池供电,当VDD主电源上电后,后备区域供电会由VBAT切换到VDD,也就是主电源有电时,VBAT不会用到,这样可以节省电池电量。
RTC和时钟配置系统处于后备区域,系统复位时数据不清零,VDD(2.0~ 3.6V)断电后可借助VBAT(1.8~3.6V)供电继续走时。

二、RTC实时时钟

在这里插入图片描述
32位的可编程计数器,可对应Unix时间戳的秒计数器,在读取时间时,先读取这个秒数,然后使用time.h模块的localtime函数,就可以得到年月日时分秒的信息了。在写入时间时,先填充年月日时分秒信息到struct tm结构体,然后用mktime函数,得到秒数,再写入到这个32位计数器即可,这样操作这个秒数计数器的思路就清晰了。
在这里插入图片描述
因为时间戳的设计,只需要一个32位计数器寄存器就行了,不需要年月日,小时分钟的寄存器了,都不需要再设计了。硬件也不需要考虑大月小月、平年闰年,直接秒一直加,软件就要进行计算了。
驱动时钟需要是1Hz的信号,但是实际提供给RTC模块的时钟,也就是RTCCLK,一般频率都比较高,所以我们显然要在这里加一个分频器,给RTCCLK降频率,保证分频器输出给计数器的频率为1Hz,为了适配各种RTCCLK,就加了一个20位分频器。1~ 2^20分频。

在这里插入图片描述
可选择三种RTC时钟源:
HSE时钟除以128(通常为8MHz/128) 为了分频到1hz。
LSE振荡器时钟(通常为32.768KHz) 自然移出1Hz
LSI振荡器时钟(40KHz)
在这里插入图片描述
本身就是专供的RTC时钟,LSE振荡器时钟(通常为32.768KHz),可以通过VBAT供电。
在这里插入图片描述
在这里插入图片描述
RTC时钟可以唤醒设备,退出待机模式。有灰色的部分都处于后备区域,这些电路在主电源掉电后,可以使用备用电池维持工作,另外还写了,这些模块在待机时都会继续维持供电。有关睡眠、停机、待机,这些低功耗相关的内容,下节学PWR的时候再细讲。
首先,看分频和计数计时部分,这一块的输入时钟是RTCCLK,RTCCLK的来源需要再RCC里进行配置,可选择的选项是这三个,主要选择中间这一路。RTCCLK进来,需要首先经过RTC预分频器进行分频,这个分频器由两个寄存器组成,上面这个是重装寄存器RTC_PRL,下面这个是,RTC_DIV,手册里叫作余数寄存器,但实际上,这一块跟我们之前定时器时基单元里的计数器CNT和重装值ARR,是一样的作用,可能是右边已经有了一个计数器CNT了,所以就比较奇怪,叫做余数寄存器。但实际上它还是计数器的作用。分频器其实就是一个计数器,计几个数溢出一次,那就是几分频,对于可编程的分频器来说,需要有两个寄存器,一个寄存器用来不断地计数,另一个寄存器,写入一个计数目标值,用来配置是几分频,那在这里,上面这个PRL,就是技术目标,写入6,那就是7分频;因为计数值包含了0,所以写入几,那就是几+1分频,这个和定时器是一样的;下面这个DIV就是每来一个时钟计一个数的用途了,是一个自减计数器,每来一个时钟,DIV的值自减一次,自减到0,再来一个输入时钟,DIV输出一个脉冲,产生溢出信号,同时DIV从PRL获取重装值,回到重装值继续自减,比如是32.768KHz,32768HZ,为了分频得到1HZ,PRL就要给32767,这个数值是始终不变的,DIV可以保持初始值为0,那在第一个时钟到来时,DIV就立刻溢出,产生溢出信号给后续电路,同时DIV变为重装值32767,然后继续自减,直到变为0,然后再来一个时钟,产生一个脉冲。每来32768个输入脉冲,计数器溢出一次,产生一个输出脉冲,这就是32768分频了,分频后的时钟频率是1HZ,t提供给后面的秒计数器。计数计数部分,32位可编程计数器RTC_CNT,就是计时最核心的部分,可以把这个计数器看作是Uinx时间戳的秒计数器,这样借用tim.h的函数,就可以很方便地的到年月时分秒了。这个下面,RTC还设计的有一个闹钟寄存器RTC_ALR,这个ALR也是一个32位的寄存器,和上面这个CNT是等宽的,它的作用,顾名思义,就是设置闹钟,可以在ALR写一个秒数,设定闹钟,当CNT的值跟ALR设定的闹钟值一样时,也就是这里画的等号,如果它俩值相等,就代表闹钟响了,这时候就会产生RTC_Alarm闹钟信号,通往右边的中断系统,在中断函数里,你可以执行相应的操作,同时闹钟还兼具一个功能,就是下面这里的,闹钟信号可以让STM32退出待机模式,这个功能就可以对应一些用途,比如你设计一个数据采集设备,需要在环境恶劣的地方工作,比如高原、海底、深井这些地方,然后要求是每天中午12点采集一次环境数据,其他时间,为了节省电量,避免频繁换电池,芯片都必须处于待机模式,这样的话,就可以使用这个RTC自带的闹钟功能,定一个中午12点的闹钟,闹钟一响,芯片唤醒,采集数据,完成后,继续待机。闹钟是个定值只能响一次,所以如果你想实现周期性的闹钟,那在每次闹钟响之后,都需要重新设置一下下一个闹钟时间,这就是闹钟和闹钟唤醒的一个用途。

在往右边看,这就是中断部分了,左边这里有3个信号可以触发中断,第一个RTC_Second秒中断,它的来源就是CNT的输入时钟,如果开启这个中断,那么程序就会每秒进一次RTC中断,第二个是RTC_Overflow,溢出中断,它的来源是CNT的右边,意思就是CNT的32位计数器计满溢出了,会触发一次中断,所以这个中断一般不会触发(2106年)。第三个RTC_Alarm,闹钟中断,当计数值和闹钟值相等时,触发中断,同时,闹钟信号可以把设备从待机模式唤醒,好,这就是三个中断信号,中断信号到右边,这一块是中断标志位和中断输出控制,IE是中断使能,F结尾是对应的中断标志位,最后3个信号通过一个或门,汇聚到NVIC中断控制器。

APB1和APB1接口就是我们程序读写寄存器的地方了,读写寄存器可以通过APB1总线来完成,另外也可以看出,RTC是APB1总线上的设备,
最后下面这一块,退出待机模式,还有一个WKUP引脚,闹钟信号和WKUP引脚,都可以唤醒设备。

在这里插入图片描述
在这里插入图片描述
最左边是RTCCLK时钟来源,这一块需要在RCC配置,3个时,钟选择一个当作RTCCLK,
之后,RTCCLK先通过预分频器,对时钟进行分频,余数计数器是一个自减计数器,存储当前的计数值,重装寄存器是计数目标,决定分频值,分频之后,得到1Hz的秒计数信号,通向32位计数器,一秒自增一次,下面还有一个32位的闹钟值,可以设定闹钟,右边有三个信号可以触发中断,分别是秒信号,计数器溢出信号和闹钟信号,三个信号先通过中断输出控制,进行中断使能,使能的中断才能通向NVIC,然后向CPU申请中断。在程序中,配置这个数据选择器,可以选择时钟来源,配置重装寄存器,可以选择分频系数,配置32位计数器,可以进行日期时间的读写,需要闹钟的话,配置32位闹钟值即可,需要中断的话,先允许中断,再配置NVIC,最后写对应的中断函数即可。

在这里插入图片描述
在这里插入图片描述
电路设计可以看看参考手册。
在这里插入图片描述
第一步,设置RCC_APB1ENR的PWREN和BKPEN,使能PWR和BKP时钟;
第二步,设置PWR_CR的DBP,使能对BKP和RTC的访问。
对应库函数,等待RTC同步:若在读取RTC寄存器时,RTC的APB1接口曾经处于禁止状态,则软件首先必须等待RTC_CRL寄存器中的RSF位(寄存器同步标志)被硬件置1,因为是RTCCLK的时钟,PCL1的频率,与RTCCLK时钟不同步,读出的通常是0,要等一下RTCCLK来一个上升沿,只有有一个上升沿,RTC把它的寄存器的值同步到APB1总线上。这样之后读取的值,就都是没问题的了。
配置标志位:必须设置RTC_CRL寄存器中的CNF位,使RTC进入配置模式后,才能写入RTC_PRL、RTC_CNT、RTC_ALR寄存器。
调用一个等待函数,对RTC任何寄存器的写操作,都必须在前一次写操作结束后进行。可以通过查询RTC_CR寄存器中的RTOFF状态位,判断RTC寄存器是否处于更新中。仅当RTOFF状态位是1时,才可以写入RTC寄存器,还是因为PCLK1和RTCCLK时钟频率不一样,你用PCLK的频率写入之后,这个值还不能立刻更新到RTC的寄存器里,因为RTC寄存器是由RTCCLK驱动的,所以PCLK1写完之后,得等一下RTCCLK的时钟,RTCCLK的时钟来一个上升沿,值更新到RTC寄存器里,整个写入过程才算结束。

在这里插入图片描述
在这里插入图片描述
CNT自增,相较于分频器重装的时机是慢了一个RTCCLK时钟的,之后CNT一直增呀增,直到等于4,此时CNT等于闹钟值,闹钟信号的触发时机,是在CNT=4期间的末尾时刻,和秒信号的上升沿一起的。然后闹钟标志位也会在此刻置1挂起。开启中断,则会进入中断,在中断函数里,由软件清除这个闹钟标志位。
在这里插入图片描述
16位的寄存器:
在这里插入图片描述

问题

总结

本节课主要是了解BKP备份寄存器,实现掉电不丢失,还有RTC实时时钟的操作。


文章转载自:

http://sawb5RvX.hbnwr.cn
http://aXF77WDn.hbnwr.cn
http://aYA1Mv9M.hbnwr.cn
http://WnHWfcOW.hbnwr.cn
http://c4PAfElo.hbnwr.cn
http://3L7EL1I7.hbnwr.cn
http://yWr4JY3S.hbnwr.cn
http://UztgdjYk.hbnwr.cn
http://YfpDM4ce.hbnwr.cn
http://rBtfm8BO.hbnwr.cn
http://J6O5F3QZ.hbnwr.cn
http://vdKixyZZ.hbnwr.cn
http://7ii6SlTy.hbnwr.cn
http://Z2GE1IqU.hbnwr.cn
http://S818Iv7K.hbnwr.cn
http://s0p3f3Yy.hbnwr.cn
http://qYEvVtHo.hbnwr.cn
http://IJ66guPZ.hbnwr.cn
http://UOxR8359.hbnwr.cn
http://j3VAsFC5.hbnwr.cn
http://5YLHZXgO.hbnwr.cn
http://icVdIAxP.hbnwr.cn
http://tgnkrWPL.hbnwr.cn
http://OfuK2xT5.hbnwr.cn
http://jtwQBz8M.hbnwr.cn
http://tpEM0Mm5.hbnwr.cn
http://jILHu2aY.hbnwr.cn
http://iRyjJUwW.hbnwr.cn
http://M7cFzQ40.hbnwr.cn
http://BaMI3XAP.hbnwr.cn
http://www.dtcms.com/wzjs/753775.html

相关文章:

  • 微信后台网站开发知识体系电子商务网站建设的开发方案
  • 网站编程入门教程实时军事热点
  • 海口制作网站企业wordpress前台修改用户头像
  • 网站建设利弊三星网上商城优惠券
  • 网站建设培训会讲话视频拍摄公司
  • 试述网站建设的步骤截屏的图片wordpress不能显示
  • 帮助网站源码徐州自助建站模板
  • 做网站需要什么专业方向的员工下载宝硬盘做网站
  • 网站页面静态化方案ftp给网站做备份
  • 营销型网站制作服务商福州高端建站
  • 网站策划书的基本内容中国建筑业协会官方网站
  • 网站图片计时器怎么做行政助手网站开发
  • 网站建设的问题疑问电商实训网站建设报告
  • 西安网站seo收费山东网站建设网站
  • 营销型网站的具体例子工业互联网平台首先要提高数据的挖掘能力
  • 上海做推广网站陕西关键词优化推荐
  • 怎么识别一个网站爱站seo排名可以做哪些网站
  • 网站产品演示外贸网站 源
  • 中国建设银行官方网站网上银行微信公众平台登录方法
  • 有什么超好用的做简历的网站购物网站 缓存
  • 做钓鱼网站违法吗服务器网站模板
  • 有哪些网站用vue做的网店美工是做什么的
  • 如何自己动手做网站人工智能软件定制
  • 凡科建站网址做网站网页排版错误
  • asp.net3.5网站开发实例教程wordpress 评论者邮箱
  • 小型电子商务网站建设与发展优秀的手机网站案例
  • 招聘网站建设推广ps怎么做响应式网站布局图
  • 银川网站开发公司策划网络营销活动方案
  • 织梦仿asp网站ui设计好就业吗
  • 江苏省交通运输厅门户网站建设管理wordpress图片排版