历史上的今天
今天是:2024年09月09日(星期一)
2019年09月09日 | [正点原子]STM32开发板F103 第41讲 RTC实时时钟备份区域BKP原理
2019-09-09 来源:eefocus
RTC模块与 时钟配置系统在后备区域,在复位时候不会被清除(框图: 中文参考手册)

如何使用RTC实现时钟?RTCCLK
RTC的时钟有几个来源有三种 32.768khz 8Mhz 40khz
RTC_PRL是自动重装载寄存器
RTC_DIV 预分频余数寄存器 RTC_DIV的作用就是 可以提供一个更加精确的时钟,
时钟开启之后会给RTC_PRL写一个值(比如100),那么RTCCLK就会被 /100 之后得到 TR_CLK。 TR_CLK的一个周期有100个 RTCCLK ,RTC_DIV在你装载之后它的值就是100,他在 RTCCLK的控制下每一个时钟 减一,
假如RTCCLK=100hz,那么 RTCCLK/RTC_PRL=100/100=1HZ=TR_CLK
RTC_DIV就是从100往下减, 那么需要RTCCLK的一百个周期,RTC_DIV(向下计数器)就会溢出,那么就是每一个RTCCLK周期RTC_DIV就减一。RTC_DIV 比TR_CLK更精确,那么,由以上公式可知,TR_CLK就是1hz也就是1s。
后面有一个 RTC_CNT 32位可编程计数器(向上计数),
每一个TR_CLK就会加一,一直到overflow(溢出)就会产生中断,
还有一个秒中断 RTC_Second,(一秒钟产生一次中断)
还有一个 RTC_ALR 闹钟中断,当 RTC_ALR=RTC_CNT 的时候就会产生闹钟中断。


BKP备份寄存器的访问,

RTC相关寄存器

RTC 相关的寄存器定义在stm32f10x.h里面有一个结构体。
寄存器的介绍在《中文参考手册》

上图中的 RTC_CRH 控制寄存器主要是一些中断的使能位,如果要开启中断就将相应位使能。

OWF 是溢出标志
ALRF 闹钟标志
SECF 秒标志
位3 RSF 寄存器同步标志,在需要改寄存器之前先要确定RSF寄存器已经同步
位4 CNF位 配置标志 ,如果要修改CRH/CRL 等寄存器的时候,先要将该位置 1,进入配置模式,配置完之后要将他配置为0,退出配置模式。
RTCOFF 在对RTC寄存器进行写操作之前必须先判断上一次写操作已经结束,也就是判断上一次写操作是否置位。

RTC_PRLH 与RTC_PRLL 就是预分频装载寄存器的高位和低位

RTC_DIV 是以RTC_CLK为时钟所以他比TR_CLK要精确

表示当前时间的寄存器,通常会配置为1秒钟加一

以上为闹钟寄存器,也是两个16位的,一共32位,它与计数器寄存器基本上是一样的,因为他要与计数器寄存器相比较相等就会产生中断。

1.先要查询RTOFF位,等待他为 1 表明上一次操作已经完成了。
2设置CNF位为1,进入配置模式
3操作寄存器
4清除CNF位,退出配置模式。
5 查询RTOFF位,直到它为“1”,表明写操作已经完成。

下面就看他的库函数。


时钟源选择函数 时钟使能 在RCC文件当中。




使能电源后备区域的时钟。
使能后备区域的寄存器访问。
史海拾趣
|
最近一直都在调试我的控制板上外扩的ADDA,但是遇到了一个非常让人不爽的问题:同一个程序在不同的电脑上现象不同,在我的笔记本上ADDA都能调通,但是在实验室的电脑死活不行。前一段时间CCS3.3不知道为什么老出问题,我卸了好几次,昨天重装了一遍 ...… 查看全部问答> |
|
U-Boot 1.1.1 (Development build, svnversion: u-boot:已导出 , exec:已导出 ) (Build time: Jan 18 2010 - 21:30:42) BBBdr_hertz=333000000, ddr_ref_hertz=50000000, ddr_config_valid_mask=1 BBBdr_interface_mask=1, ddr_config_valid_mask ...… 查看全部问答> |
|
利用WINCE开发一个无线网络监控程序,希望能扫描得到当前可用的无线资源(这已实现)。 有个问题是,能不能指定扫描的channel呢?就是说,假设有11个CHANNEL可以用,但是我在扫描的时候只想扫描1、3、6号channel,如何在程序中设置呢? 哪位大侠能 ...… 查看全部问答> |
|
用SOPC的IP核生成了一个工程文件(暂时把这个顶层叫vip吧)之后,想要将vip模块作为我一个子模块例化一下。可是这样做了之后编译不能通过,报错如下:Error (10613): VHDL syntax error at video_conver_top.vhd(153): experienced unexpected end- ...… 查看全部问答> |
|
第一套应急灯我做的是3W功率的LED,这个是我独立设计并制作完成的。第二套LED应急灯是灰太狼设计的、我组装的采用MAX16804的应急灯。再次谢谢SOSO 琳子姐姐,还有灰太狼!有机会请你们吃饭!! 下面也是图片展示制作过程:… 查看全部问答> |
|
[诚寻] DSP开发 DSP测试 RF测试工程师 上海 15-22万 非诚勿扰 请自荐或是推荐的朋友发送简历到以下邮箱: Jerome.zhang@focu-search.com QQ:727190736 申请职位请务必在邮件中注明所申请职位的名称、目前的薪酬大致情况和期望、您目前的工作地点。 谢谢! 统招本科 硕士优先(本科3年左右 硕士2 ...… 查看全部问答> |
|
最近在调STM32F439的板子,想用双ADC同时采样,发现ADC1数据正常,ADC2无数据,求大神指点。 下边是程序代码: uint16_t ADC_Value[8]; #define ADC1_DR_ADDR 0x4001204C //ADC1_DR 地址 static void Init ...… 查看全部问答> |
|
基于串口的数字万用表创意进度帖+RL78G14开发环境的安装 有朋友问我怎么安装开发环境,过程中遇到了一些问题,特别是注册那个激活码。 我这里重新搞一遍,与大家分享一下经验 如图,建议把所带光盘使用UltraISO软碟通将光盘制作成ISO文件,然后加载到虚拟光驱,这样运行速度更快.安装更省时. 然后运行根目 ...… 查看全部问答> |




