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

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

1.前言

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

2.配置

  1. 首先需要添加stm32f10x_bkp.c文件和stm32f10x_pwr.c文件添加到工程的库文件FWLib当中;STM32备份寄存器的配置与使用_第1张图片
  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文件中有如下函数,分别为写寄存器和读寄存器STM32备份寄存器的配置与使用_第2张图片STM32备份寄存器的配置与使用_第3张图片
实际使用中我们可以使用一些改造后的函数:

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);

你可能感兴趣的:(嵌入式)