BKP与RTC基本简介

本文介绍了BKP备份寄存器在保存用户数据和系统时钟管理方面的特性,包括在电源断电后的供电支持,以及RTC实时时钟的独立定时和日历功能,详细讲解了如何访问和操作这些模块。

 BKP简介

  • BKP(Backup Registers)备份寄存器
  • BKP可用于存储用户应用程序数据。当VDD(2.0~3.6V)电源被切断,他们仍然由VBAT(1.8~3.6V)维持供电。当系统在待机模式下被唤醒,或系统复位或电源复位时,他们也不会被复位
  • TAMPER引脚产生的侵入事件将所有备份寄存器内容清除
  • RTC引脚输出RTC校准时钟、RTC闹钟脉冲或者秒脉冲
  • 存储RTC时钟校准寄存器
  • 用户数据存储容量:     20字节(中容量和小容量)/ 84字节(大容量和互联型)

BKP基本结构

 

RTC简介

  • RTC(Real Time Clock)实时时钟
  • RTC是一个独立的定时器,可为系统提供时钟和日历的功能
  • RTC和时钟配置系统处于后备区域,系统复位时数据不清零,VDD(2.0~3.6V)断电后可借助VBAT(1.8~3.6V)供电继续走时
  • 32位的可编程计数器,可对应Unix时间戳的秒计数器
  • 20位的可编程预分频器,可适配不同频率的输入时钟
  • 可选择三种RTC时钟源:     HSE时钟除以128(通常为8MHz/128)     LSE振荡器时钟(通常为32.768KHz)     LSI振荡器时钟(40KHz)

RTC框图

RTC基本结构

RTC操作注意事项

  • 执行以下操作将使能对BKP和RTC的访问:     设置RCC_APB1ENR的PWREN和BKPEN,使能PWR和BKP时钟     设置PWR_CR的DBP,使能对BKP和RTC的访问
  • 若在读取RTC寄存器时,RTC的APB1接口曾经处于禁止状态,则软件首先必须等待RTC_CRL寄存器中的RSF位(寄存器同步标志)被硬件置1
  • 必须设置RTC_CRL寄存器中的CNF位,使RTC进入配置模式后,才能写入RTC_PRL、RTC_CNT、RTC_ALR寄存器
  • 对RTC任何寄存器的写操作,都必须在前一次写操作结束后进行。可以通过查询RTC_CR寄存器中的RTOFF状态位,判断RTC寄存器是否处于更新中。仅当RTOFF状态位是1时,才可以写入RTC寄存器

硬件电路图

06-12
### RTC_BKP 配置使用说明及相关技术 RTC(实时时钟)和 BKP(后备寄存器)是 STM32 微控制器中用于时间管理数据保存的重要外设。以下内容详细说明了 RTCBKP 的配置方法及其相关技术。 #### 1. 开启时钟 在使用 RTCBKP 功能之前,必须先开启相关的时钟。具体操作包括: - 开启 PWR 和 BKP 的时钟。 - 使用 PWR 外设来使能对 BKPRTC 的访问。 代码示例如下: ```c RCC_APB1PeriphClockCmd(RCC_APB1Periph_PWR | RCC_APB1Periph_BKP, ENABLE); ``` 此外,需要确保 VBAT 供电电压为 3V 而非 5V,以避免损坏硬件[^3]。 #### 2. 进入配置模式 为了写入 RTC 的相关寄存器(如 `RTC_PRL`、`RTC_DIV` 和 `RTC_CNT`),需要将 `RTC_CRL` 寄存器中的 `CNF` 位置 1,使 RTC 进入配置模式。在此模式下,可以完成初始化设置。 #### 3. 等待同步 在初始化过程中,RTC 需要等待同步操作完成。这一步通过查询 `RTC_CR` 寄存器中的 `RTOFF` 标志位实现。仅当该标志位为 1 时,才能进行后续的写操作。 #### 4. 写入后备寄存器 BKP 提供了多个后备寄存器(`BKP_DR0` 到 `BKP_DR42`),用于存储关键数据。这些寄存器可以在系统复位或掉电后保留数据。通过以下函数可实现对后备寄存器的读写操作: - 写入后备寄存器: ```c BKP_WriteBackupRegister(RTC_BKP_DR1, 0x1234); // 将值 0x1234 写入 BKP_DR1 ``` - 读取后备寄存器: ```c uint16_t data = BKP_ReadBackupRegister(RTC_BKP_DR1); // 从 BKP_DR1 中读取数据 ``` #### 5. 设置 RTC 输出源 可以通过 `BKP_RTCOutputConfig` 函数选择 RTC 输出信号的类型。例如: - `BKP_RTCOutputSource_None`: 不输出任何信号。 - `BKP_RTCOutputSource_CalibClock`: 输出校准时钟信号。 - `BKP_RTCOutputSource_Alarm`: 输出报警脉冲信号。 - `BKP_RTCOutputSource_Second`: 输出秒脉冲信号。 #### 6. 防篡改功能 STM32 提供了防篡改引脚功能,可通过以下函数配置: - 配置防篡改引脚的有效电平: ```c BKP_TamperPinLevelConfig(BKP_TamperPinLevel_High); // 设置防篡改引脚为高电平有效 ``` - 使能或失能防篡改引脚: ```c BKP_TamperPinCmd(ENABLE); // 使能防篡改引脚 ``` #### 7. 中断标志处理 BKP 支持中断功能,可通过以下函数管理中断状态: - 获取篡改引脚事件标志: ```c FlagStatus tamper_flag = BKP_GetFlagStatus(); // 获取篡改引脚事件标志 ``` - 清除篡改引脚事件标志: ```c BKP_ClearFlag(); // 清除篡改引脚事件标志 ``` - 获取 BKP 中断状态: ```c ITStatus it_status = BKP_GetITStatus(); // 获取 BKP 中断状态 ``` - 清除中断标志位: ```c BKP_ClearITPendingBit(); // 清除中断标志位 ``` ### 注意事项 - 在对 RTC 寄存器进行写操作时,必须确保前一次写操作已完成,即 `RTOFF` 标志位为 1。 - 后备寄存器的地址范围为 `RTC_BKP_DR0` 至 `RTC_BKP_DR42`,超出此范围的操作可能导致未定义行为[^1]。 - 配置 RTC 时,需确保系统时钟 RTC 时钟源已正确同步[^3]。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

¥sunrise

来自大牛的认可,是我梦寐以求的

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值