读写备份寄存器&实时时钟
读写备份寄存器
VBAT接STKINL的3.3V引脚,PB1接按键。
BKP初始化步骤:
第一步,开启PWR和BKP的时钟
第二步,使用PWR_CR的DBP函数,使能对BKP和RTC的访问。
第三步,写入数据,使用BKP写入数据函数;读取数据,使用BKP读取数据函数。
BKP常用库函数:
void BKP_DeInit(void); // 恢复缺省配置,将所有配置清0 纽扣电池一直有电后不会自动清0的。
// 用于Tamper侵入检测功能
void BKP_TamperPinLevelConfig(uint16_t BKP_TamperPinLevel); // 侵入检测功能 配置Tamper引脚有效电平高电平、低电平触发
void BKP_TamperPinCmd(FunctionalState NewState); // 是否开启侵入检测功能
void BKP_ITConfig(FunctionalState NewState); // 配置中断
void BKP_RTCOutputConfig(uint16_t BKP_RTCOutputSource); // 时钟输出功能的配置 可以选择在RTC引脚上输出时钟信号 输出RTC校准时钟RTC闹钟脉冲或者秒脉冲
void BKP_SetRTCCalibrationValue(uint8_t CalibrationValue); // 设置RTC校准值(写入RTC校准寄存器)
// 读写BKP
void BKP_WriteBackupRegister(uint16_t BKP_DR, uint16_t Data); //写备份寄存器;第一个参数指定,写在哪个DR里,第二个参数,写入的数据
uint16_t BKP_ReadBackupRegister(uint16_t BKP_DR); //读备份寄存器
FlagStatus BKP_GetFlagStatus(void);
void BKP_ClearFlag(void);
ITStatus BKP_GetITStatus(void);
void BKP_ClearITPendingBit(void);
PWR外设库函数
void PWR_DeInit(void);
void PWR_BackupAccessCmd(FunctionalState NewState); //备份寄存器访问使能 前面讲的设置PWR_CR的DBP,使能对BKP和RTC的访问
void PWR_PVDCmd(FunctionalState NewState);
void PWR_PVDLevelConfig(uint32_t PWR_PVDLevel);
void PWR_WakeUpPinCmd(FunctionalState NewState);
void PWR_EnterSTOPMode(uint32_t PWR_Regulator, uint8_t PWR_STOPEntry);
void PWR_EnterSTANDBYMode(void);
FlagStatus PWR_GetFlagStatus(uint32_t PWR_FLAG);
void PWR_ClearFlag(uint32_t PWR_FLAG);
main.c
#include "stm32f10x.h" // Device header
#include "Delay.h"
#include "OLED.h"
#include "Key.h"
uint8_t KeyNum; //定义用于接收按键键码的变量
uint16_t ArrayWrite[] = {
0x1234, 0x5678}; //定义要写入数据的测试数组
uint16_t ArrayRead[2]; //定义要读取数据的测试数组
int main(void)
{
/*模块初始化*/
OLED_Init(); //OLED初始化
Key_Init(); //按键初始化
/*显示静态字符串*/
OLED_ShowString(1, 1, "W:"