江科大笔记—读写备份寄存器&实时时钟

读写备份寄存器&实时时钟

读写备份寄存器
江科大笔记—读写备份寄存器&实时时钟_第1张图片

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:"

你可能感兴趣的:(嵌入式硬件,stm32,单片机,笔记)