STM32备份寄存器的配置与使用

STM32备份寄存器的配置与使用

1.前言

嵌入式系统设计中,用来存储系统运行过程中的数据有很多种方式,而使用STM32的备份寄存器可以实现对少量数据的频繁存储。
因为这种方式时将数据存储在RAM中,掉电则数据丢失,所以需要使用备份电源为芯片供电;也由于是在RAM中,理论上可以无限次存取。

2.配置

  1. 首先需要添加stm32f10x_bkp.c文件和stm32f10x_pwr.c文件添加到工程的库文件FWLib当中;在这里插入图片描述
  2. 其次在 RCC_Configuration( ) 函数中添加以下配置代码;
    /* Enable PWR(电源控制) and BKP clock */   
    RCC_APB1PeriphClockCmd(RCC_APB1Periph_PWR | RCC_APB1Periph_BKP, ENABLE);
    /* Enable write access to Backup domain */    
    PWR_BackupAccessCmd(ENABLE);
    /* Clear Tamper pin Event(TE) pending flag */   
    BKP_ClearFlag();

3.读写数据
在stm32f10x_bkp.c文件中有如下函数,分别为写寄存器和读寄存器在这里插入图片描述在这里插入图片描述
实际使用中我们可以使用一些改造后的函数:

void WriteBKP(u16 Data,u8 DRNumber)
{
    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);
                break;
    }

}

3.数据写入与读取举例

将a1,a2的值写入寄存器1和寄存器2:

int a1 = 1, a2 = 2;

WriteBKP(a1,1);   //写入RAM
WriteBKP(a2,2);

将a1,a2的值从寄存器读出并赋给b1,b2:

int b1, b2;

b1 = BKP_ReadBackupRegister(BKP_DR1);	//读出
b2 = BKP_ReadBackupRegister(BKP_DR2);
  • 1
    点赞
  • 26
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值