stm32 备份寄存器 读写数据

发布者:梦中的额吉最新更新时间:2019-05-22 来源: eefocus关键字:stm32  备份寄存器  读写数据 手机看文章 扫描二维码
随时随地手机看文章

1. 首先 检查RTC电池是否装载,没电池的话,设备掉电也保存不了数据。


 备份寄存器就是普通的RAM,需要配合外接电池使用,如果没有电池,就不能掉电保持数据。

 因为是普通RAM,所以不存在写入次数的问题,理论上是无限次的。


其次在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();


2. 然后就可以开始读写功能了。


void WriteBKP(u16 Data,u8 DRNumber)       // 还可加入一些加密算法;DRNumber (1-9)

{

    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;


                 case 0x10:                 

                BKP_WriteBackupRegister(BKP_DR10,Data); 

                

                break;


        default:    


                        BKP_WriteBackupRegister(BKP_DR1,Data);


    }

    BKP_WriteBackupRegister(BKP_DR10,CHECK_CODE);


}


u8 CheckBKP(void)


{

    if( BKP_ReadBackupRegister(BKP_DR1) == 0x89)   // 如果此位数据丢失,则BPK数据丢失


        return 1;

    else

        return 0;

}


3.调试总结:


可以在IAR或者keil的watch 中查看值是否写入,输入BKP_DR1,可以查看BKP_DR1中的数据是否写入正确,其他的备份寄存器类似操作。


另外在程序中有RTC程序的话,要注意配置顺序,因为RTC也对备份寄存器操作。我就是程序中有RTC程序,所以写入的数据老是被清零(RTC程序会初始化备份寄存器中的数据),浪费了点时间才找到原因所在。


关键字:stm32  备份寄存器  读写数据 引用地址:stm32 备份寄存器 读写数据

上一篇:STM32---系统滴答定时器(systick)应用
下一篇:STM32 看门狗学习笔记

推荐阅读最新更新时间:2024-11-12 11:53

基于机智云物联网云平台+STM32的瓦斯监测控制管理系统
本项目由吉林建筑大学何冬雪、岳俊华开发设计完成,该基于单片机的瓦斯监测控制系统,其硬件主要由 STM32 单片机、甲烷气体传感器、温湿度传感器、Wi-Fi 模块、蜂鸣器报警电路模块、控制电路及显示电路模块等组成。 系统以单片机为核心,能够实时检测到煤矿中的有毒气体,当有害气体的浓度超标时,蜂鸣器会发生声音进行报警提醒工作人员撤离,并开启继电器控制风扇排气,增加空气流通;还结合温湿度传感器采集煤矿的环境,实现煤矿数据的采集与设定阈值对比后,并通过蜂鸣器报警。同时结合 Wi-Fi 模块实现机智云电脑端页面显示和控制,最后还能够通过有机发光二极管显示屏显示。 01 引 言 随着科技的日益进步,人们对能源的需求不断增加。在中国的基本能
[单片机]
基于机智云物联网云平台+<font color='red'>STM32</font>的瓦斯监测控制管理系统
STM32-快速上手ADC
1. ADC端口映射 ADC肯定要外部输入信号的,通过IO口进行采集,IO与ADC通道的对应关系如下: 2. 配置 2.1 配置步骤 开启需要用到的ADCx时钟和对应的IO时钟 ADC模块和GPIO模块都在APB2时钟下 void RCC_APB2PeriphClockCmd(uint32_t RCC_APB2Periph, FunctionalState NewState); 配置ADCx预分频器分频系数 void RCC_ADCCLKConfig(uint32_t RCC_PCLK2); 配置需要用到的对应IO设置为模拟输入 void GPIO_Init(GPIO_TypeDef* GPIOx, GPIO_InitTyp
[单片机]
STM32-快速上手ADC
关于STM32 DMAMUX模块具体的应用示例代码
个人也发现,虽然STM32片内的DMAMUX不是什么新模块,似乎还是很多人并不太熟悉。这里借机聊聊这方面的内容,重点演示相关功能的实现,以供参考。 其实,DMAMUX作为一个外设模块,操作它并不需要添加太多用户代码,尤其是当我们基于STM32CubeMx进行配置时。它的主要功能就是为各种DMA请求做DMA传输通道的灵活调度与安排,并配合DMA使用,我们可以把它看成DMA控制器的前端拓展。 DMAMUX模块大体上由DMA请求转发通道和DMA请求发生器组成,其中每个DMA请求转发通道还配有同步控制单元。DMA请求发生器可以基于某些事件产生DMA请求申请DMA传输。至于同步控制单元,可以简单理解为每个DMA请求最终是否被转发出去的一
[单片机]
关于<font color='red'>STM32</font> DMAMUX模块具体的应用示例代码
STM32怎么读取输出口电平
其实你自己在库函数源文件也能找到,以PC13为例: 要是你设置为输入: GPIO_ReadInputDataBit(GPIOC,GPIO_Pin_13);//读取输入口PC13值 要是你设置为输出: GPIO_ReadOutputDataBit (GPIOC,GPIO_Pin_13); //读取输入口PC13值 我看的原函数,两个读取函数操作区别在于读取的寄存器不一样,分别是: GPIOx- IDR GPIOx- ODR
[单片机]
STM32的IWDG使用
关于独立看门狗,很简单,打开喂狗,就这么简单,很多书上讲了很多什么寄存器什么的,对于初学者而言,这些还不是很重要,重要的是先学会用,用了之后慢慢去消化,为什么这东西要这么设置。好了下面来看看我的程序,很简单: void Iwdg_Init(void) { IWDG_WriteAccessCmd(IWDG_WriteAccess_Enable); IWDG_SetPrescaler(IWDG_Prescaler_256); IWDG_SetReload(0xfff);//设置这个就可以调整IWDG的喂狗时间 //如果在这段时间内没有喂狗,那么就会重启 IWDG_ReloadCounter(); IWDG_Enable(); IWDG
[单片机]
工程师STM32单片机学习基础手记(4):用PWM实现荧火虫灯(四)
补充一些硬件知识      SEGGER 给出的Jlink引脚图      开发板上的连接图      标准的JTAG连接图,供对照参考。   调试方式既可以用JTAG,也可以用SW。   以下是转载:   SWD 仿真模式概念简述   先所说 SWD 和传统的调试方式有什么不一样:   首先给大家介绍下经验之谈:   (一): SWD 模式比 JTAG 在高速模式下面更加可靠。 在大数据量的情况下面 JTAG 下载程序会失败, 但是 SWD 发生的几率会小很多。 基本使用 JTAG 仿真模式的情况下是可以直接使用 SWD 模式的, 只要你的仿真器支持。 所以推荐大家使用这个模式。   (二): 在大家
[模拟电子]
工程师<font color='red'>STM32</font>单片机学习基础手记(4):用PWM实现荧火虫灯(四)
STM32启动文件(Reset_Handler函数)
该文件主要实现目的: 设置初始SP 设置初始PC=Reset_Handler 设置向量表入口地址,并初始化向量表 调用SystemInit,把系统时钟配制成72M,SystemInit在库文件system_stm32f10.c定义 调转到 标号_main,最终来到C程序文件 ; Reset handler Reset_Handler PROC EXPORT Reset_Handler IMPORT __main IMPORT SystemInit LDR R0, =SystemInit BLX R0
[单片机]
基于STM32单片机的火灾防盗系统设计
一.系统概述 本次式设计的系统是以 STM32 单片机作为核心控制器,可以控制烟雾传感器、火焰传感器对相关数据进行采集,可以通过红外对是否有人进行监测,当监测到火焰会控制短信提醒火灾危险,当红外识别到人且输入密码错误的时候会短信提醒有人闯入。需要有一个密码输入的功能。 二.仿真概述 1.系统内可以检测烟雾浓度、检测是否有火焰、检测是否有人,检测到火灾发生且有人闯入就会通过GSM进行远程提醒。使用矩阵键盘来输入密码的,当检测到人且密码输入不正确就会认为是有人闯入。 2. 调节烟雾传感器的滑动变阻器可以调节烟雾的模拟输出量,烟雾的改变可以在显示端体现。 3. 拨动人体检测的开关即模拟检测到人和检测不到人,在显示屏端也会相
[单片机]
基于<font color='red'>STM32</font>单片机的火灾防盗系统设计
小广播
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved