STM32的备份寄存器和控制状态寄存器

1 备份寄存器用于RTC时钟

RTC时钟可以在掉电以后继续计数,保证时间的延续,但是重新上电以后需要配置,保证之前的计数不会被清除,可以借助备份寄存器实现,备份寄存器掉电以后也可以保持。

if (BKP_ReadBackupRegister(BKP_DR1) != 0xA5A5)   //检测备份区域寄存器的值

{

RTC_Configuration();    //配置RTC

Time_Adjust();             //调整时间,将UNIX时间设入RTC计数值

BKP_WriteBackupRegister(BKP_DR1, 0xA5A5);      //给BKP_DR1写入0xA5A5

}

else

{                                     //不需要重新配置了,直接等待RTC同步完成

/* Wait for RTC registers synchronization */

RTC_WaitForSynchro();

RTC_ITConfig(RTC_IT_SEC, ENABLE);   //配置RTC中断

/* Wait until last write operation on RTC registers has finished */

RTC_WaitForLastTask();

}

2 控制状态寄存器用于检测系统复位

大而复杂的系统,为了防止程序跑飞,采用开启看门狗,若程序飞掉以后,可以重新复位,然后让系统重新运行。

if(RCC_GetFlagStatus(RCC_FLAG_IWDGRST) != RESET)

{         //如果是独立看门狗复位

/* Clear reset flags */

RCC_ClearFlag();         //清除复位标志

… … …  //此时需要记录复位的时间、原因等信息

… … …

}

STM32的备份寄存器和控制状态寄存器的更多相关文章

  1. STM32定时器的预装载寄存器与影子寄存器之间的关系【转】

    首先转载:   STM32定时器的预装载寄存器与影子寄存器之间的关系 本文的说明依据STM32参考手册(RM0008)第10版:英文:http://www.st.com/stonline/produc ...

  2. IA32寄存器与x86-64寄存器的区别

    IA32寄存器 一个IA32CPU包含一组8个存储32位值的通用寄存器,这些寄存器用来存储整数数据和指针: 31-0 15-0 15-8 7-0 使用惯例 %eax %ax %ah %al 调用者保存 ...

  3. EFLAGS寄存器(标志寄存器)

    这篇文章不是从0开始的,前面还有一些汇编基础指令以及进制,我都没写,时间问题,还是今天空闲,我才想补一下博文,后面我陆续会把前面知识点渐渐补上.我不会重0基础讲起,中间会以.汇编.C.C++交叉的形式 ...

  4. Cortex-M3 R0~R15寄存器组 & 特殊功能寄存器组

    [R0~R15寄存器组] Cortex-M3处理器拥有R0~R15的寄存器组,如: [R0~R12通用寄存器]R0~R12都是32位通用寄存器,用于数据操作.其中: R0~R7为低组寄存器,所有的指令 ...

  5. STM32的备份寄存器测试

    1. 研究STM3的备份寄存器,注意,如果要测试这个例程的话,VBAT不能和VDD接一起,必须分开. 2. 理解,备份寄存器可以有VBAT独立供电,也就是外接电池,备份寄存器在VBAT供电情况下,如果 ...

  6. STM32——GPIO之从库函数到寄存器的前因后果

    例子为单片机的"Hello World"级的流水灯实验--虽然只有一个,其中并不是将完整的代码给出,只是给出关键部分来说明"如何调用ST公司的的库来完成对硬件的控制,以及 ...

  7. 汇编指令-MRS(读)和MSR(写)指令操作CPSR寄存器和SPSR寄存器使用(1)

    1.MSR和MRS指令介绍 MRS 指令:  对状态寄存器CPSR和SPSR进行读操作.通过读CPSR可以获得当前处理器的工作状态.读SPSR寄存器可以获得进入异常前的处理器状态(因为只有异常模式下有 ...

  8. CS 寄存器 和 IP 寄存器

    下面将要介绍的是一组非常非常重要的寄存器,即 CS:IP . CS:IP 两个寄存器指示了 CPU 当前将要读取的指令的地址,其中  CS 为代码段寄存器,而   IP 为指令指针寄存器 . 什么叫做 ...

  9. arduino 中通过寄存器地址访问寄存器内容

    void call_func( void (*func)(void)){ (*func)(); } void setup() { // put your setup code here, to run ...

随机推荐

  1. 【转】百亿级实时大数据分析项目,为什么不用Hadoop?

    百亿数量级的大数据项目,软硬件总体预算只有30万左右,需求是进行复杂分析查询,性能要求多数分析请求达到秒级响应.        遇到这样的项目需求,预算不多的情况,似乎只能考虑基于Hadoop来实施. ...

  2. JavaScript中按键事件的e.keyCode || e.which || e.charCode

    1.浏览器的按键事件 浏览器有3种按键事件——keydown,keypress和keyup,分别对应onkeydown.onkeypress和onkeyup3个事件句柄. 一个典型的按键会产生所有这三 ...

  3. 配置centos7 网卡

    进入root模式,输入 cd /etc/sysconfig/network-scripts/ 按Tab键查看网卡配置文件名称,然后进入编辑: 如: cd /etc/sysconfig/network- ...

  4. 2-3 Sass的函数功能-列表函数

    列表函数主要包括一些对列表参数的函数使用,主要包括以下几种: length($list):返回一个列表的长度值: nth($list, $n):返回一个列表中指定的某个标签值 join($list1, ...

  5. 学习C++从入门到精通的的十本最经典书籍

    原文:http://blog.csdn.net/a_302/article/details/17558369 最近想学C++,找了一下网上推荐的书籍,转载过来给大家分享 转载自http://c.chi ...

  6. 【Python】directory字典类型

    它的基本格式是(key是键,value是值): d = {key1 : value1, key2 : value2 } Example dir = {'Mic':1,'Sun':2} for k in ...

  7. C++模板详解(系转载,但是个人添加了一些内容)

    原文地址:http://www.cnblogs.com/gw811/archive/2012/10/25/2738929.html 零.概述 模板是C++支持参数化多态的工具,使用模板可以使用户为类或 ...

  8. js 获取URL中参数

    function getQueryString() { var result = location.search.match(new RegExp("[\?\&][^\?\& ...

  9. wget 模拟 get post请求

    wget命令 默认采用GET请求, 如果使用POST请求, wget --post-data '' url              // 这样 POST 请求没有请求体.

  10. 移动端fixed的元素抖动的问题

    工作中发现,给一个元素添加fixed属性,让它固定在窗口某个位置,直接加fposition:fixed属性就能实现这个效果: 在安卓手机上的效果都比较好,但是ios系统的个别浏览器兼容性就不好,如QQ ...