BKP寄存器

1.BKP_DeInit函数的功能是将外设BKP的全部寄存器重设为默认值。

2.BKP_TamperPinLevelConfig函数的功能是设置侵入检测引脚的有效电平。

.BKP_TamperPinLevel可取的值有.BKP_TamperPinLevel_High/_Low.分别是检测高低电平。

3.BKP_TamperPinCmd函数的功能是使能或失能引脚的侵入检测功能。

BKP_TamperPinCmd(enable);

4.BKP_WriteBackupRegister函数的功能是想指定的后备寄存器中写入用户程序数据。他分别可以选用1~10不同的数据寄存器。

BKP_WriteBackupRegister(BKP_DR1,0XA587);

5.BKP_ReadBackupRegister函数的功能是从指定的后备寄存器中读出数据。

u16 Data;

Data = BKP_ReadBackupRegister(BKP_DR1);//从后备寄存器Register1中读出数据。

6.BKP_ClearITPendingBit函数的功能是清除侵入检测中断的待处理位。
BKP.H

#ifndef BKP_H
#define BKP_H

#include “DataType.h”

void InitBKP(void);
void WriteBKP(u8 DRNumber, u16 Data);
void ReadBKP(u8 DRNumber, u16* Data);
void PrintBKP(void);
u8 CheckBKP(void);

#endif

BKP.C

#include “BKP.h”
#include <stm32f10x_conf.h>
#include <stm32f10x_bkp.h> //或者到<stm32f10x_conf.h>里加上
#include <stm32f10x_pwr.h>
#include “stdio.h”

#define CHECK_CODE 0xAE86

void InitBKP(void)
{
PWR_BackupAccessCmd(ENABLE);
BKP_ClearFlag();
BKP_TamperPinLevelConfig(BKP_TamperPinLevel_Low);
BKP_ITConfig(ENABLE);
BKP_TamperPinCmd(ENABLE);
}

void ReadBKP(u8 DRNumber, u16 Data)
{
switch (DRNumber)
{
case 0x01: BKP_WriteBackupRegister(BKP_DR1, Data); break;
case 0x02: BKP_WriteBackupRegister(BKP_DR2, Data); break;
case 0x03: BKP_WriteBackupRegister(BKP_DR3, Data); break;
case 0x04: BKP_WriteBackupRegister(BKP_DR4, Data); break;
case 0x05: BKP_WriteBackupRegister(BKP_DR5, Data); break;
case 0x06: BKP_WriteBackupRegister(BKP_DR6, Data); break;
case 0x07: BKP_WriteBackupRegister(BKP_DR7, Data); break;
case 0x08: BKP_WriteBackupRegister(BKP_DR8, Data); break;
case 0x09: BKP_WriteBackupRegister(BKP_DR9, Data); break;
default: BKP_WriteBackupRegister(BKP_DR1, Data);
}
BKP_WriteBackupRegister(BKP_DR10, CHECK_CODE);
}

void ReadBKP(u8 DRNumber, u16 * Data)
{
switch (DRNumber)
{
case 0x01: *Data = BKP_ReadBackupRegister(BKP_DR1); break;
case 0x02: *Data = BKP_ReadBackupRegister(BKP_DR2); break;
case 0x03: *Data = BKP_ReadBackupRegister(BKP_DR3); break;
case 0x04: *Data = BKP_ReadBackupRegister(BKP_DR4); break;
case 0x05: *Data = BKP_ReadBackupRegister(BKP_DR5); break;
case 0x06: *Data = BKP_ReadBackupRegister(BKP_DR6); break;
case 0x07: *Data = BKP_ReadBackupRegister(BKP_DR7); break;
case 0x08: *Data = BKP_ReadBackupRegister(BKP_DR8); break;
case 0x09: *Data = BKP_ReadBackupRegister(BKP_DR9); break;
default: *Data = BKP_ReadBackupRegister(BKP_DR1); break;
}

}

void PrintBKP(void)
{
printf(“DR1 = 0x%04X\t”, BKP_ReadBackupRegister(BKP_DR1));
printf(“DR2 = 0x%04X\t”, BKP_ReadBackupRegister(BKP_DR2));
printf(“DR3 = 0x%04X\t”, BKP_ReadBackupRegister(BKP_DR3));
printf(“DR4 = 0x%04X\t”, BKP_ReadBackupRegister(BKP_DR4));
printf(“DR5 = 0x%04X\t”, BKP_ReadBackupRegister(BKP_DR5));
printf(“DR6 = 0x%04X\t”, BKP_ReadBackupRegister(BKP_DR6));
printf(“DR7 = 0x%04X\t”, BKP_ReadBackupRegister(BKP_DR7));
printf(“DR8 = 0x%04X\t”, BKP_ReadBackupRegister(BKP_DR8));
printf(“DR9 = 0x%04X\t”, BKP_ReadBackupRegister(BKP_DR9));
printf(“DR10 = 0x%04X\t”, BKP_ReadBackupRegister(BKP_DR10));
}

u8 CheckBKP(void)
{
if (BKP_ReadBackupRegister(BKP_DR10) == 0xAE86) // 如果此位数据丢失,则BPK数据丢失
return 1;
else
return 0;
}
————————————————
版权声明:本文为CSDN博主「vstvr」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/qq_41862220/article/details/95479986

  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值