BKP实验

1. 什么是BKP? 备份寄存器是42个16位的寄存器,可用来存储84个字节的用户应用程序数据。他们处在备份域里,当VDD电 源被切断,他们仍然由VBAT维持供电。当系统在待机模式下被唤醒,或系统复位或电源复位时,他们也不会 被复位。

此外, BKP控制寄存器用来管理侵入检测和RTC校准功能。 复位后,对备份寄存器和RTC的访问被禁止,并且备份域被保护以防止可能存在的意外的写操作。执行以下 操作可以使能对备份寄存器和RTC的访问:

1.通过设置寄存器RCC_APB1ENR的PWREN和BKPEN位来打开电源和后备接口的时钟。

2.电源控制寄存器(PWR_CR)的DBP位来使能对后备寄存器和RTC的访问。

   用户数据存储容量:

20字节(中容量和小容量)/ 84字节(大容量和互联型)

rtc.c文件

#include "rtc.h"


RTC_HandleTypeDef rtc_handle ={0};
void rtc_init(void)
{
    __HAL_RCC_PWR_CLK_ENABLE();
    __HAL_RCC_BKP_CLK_ENABLE();
    HAL_PWR_EnableBkUpAccess();
    
    rtc_handle.Instance =RTC;
    rtc_handle.Init.AsynchPrediv =32767;
    rtc_handle.Init.OutPut = RTC_OUTPUTSOURCE_NONE;
    HAL_RTC_Init(&rtc_handle);
    


}

uint16_t rtc_read_bkr(uint8_t bkrx)     //其中参数bkrx为指定哪个寄存器
{
    uint32_t data =0;
    data = HAL_RTCEx_BKUPRead(&rtc_handle,bkrx);
    return (uint16_t)data;

}

void rtc_write_bkr(uint8_t bkrx,uint16_t data)     //其中参数bkrx为指定哪个寄存器  data为写什么东西
{
    HAL_RTCEx_BKUPWrite(&rtc_handle,bkrx,data);

}

BKP实验_第1张图片

你可能感兴趣的:(STM32的HAL库,单片机,嵌入式硬件)