MM32 备份域学习(兼容STM32)

内容提要

  • 备份域工作原理
  • 备份域特性
  • 备份域的保护:侵入检测
  • 备份域侵入检测

备份域电源与主要内容



备份域特性

  • 20字节数据后备寄存器(中容量和小容量产品),或 84 字节数据后备寄存器(大容量产品),当Vdd电源被切断,仍由Vbak维持电源。
  • 用来管理防侵入检测并具有中功能的状态/控制寄存器。
  • 用来存储RTC校验值的校验寄存器。
  • 在PC13管脚(当该管脚不用于侵入检测时)上输出 RTC 校准时钟, RTC 闹钟脉冲或者秒脉冲

侵入检测理解

备份域可以存储用户的重要数据,为防止恶意读写,开启侵入检测可以在方式恶意读写备份域时产生复位信号,迫使备份域的数据被清除,保护用户的重要信息。


备份域侵入检测测试

void TamperEventTest()
{
//设置时钟PWR和BKP
RCC_APB1PeriphClockCmd(RCC_APB1Periph_BKP,ENABLE);
RCC_APB1PeriphClockCmd(RCC_APB1Periph_PWR,ENABLE);
PWR_BackupAccessCmd(ENABLE); //使能访问备份域和RTC //侵入引脚时钟设置
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA,ENABLE); //初始化备份域
RCC_BackupResetCmd(ENABLE);
RCC_BackupResetCmd(DISABLE); //设置备份域时钟
RCC_LSEConfig(RCC_LSE_ON); //Configures the External Low Speed oscillator (LSE).
RCC_RTCCLKCmd(ENABLE); //Enables or disables the RTC clock.
RCC_RTCCLKConfig(RCC_RTCCLKSource_LSE); //Configures the RTC clock (RTCCLK). while(!(RCC->BDCR & 0x1<<1)); //External low-speed clock ready flag. BKP_ClearFlag(); //Set CTE bit to clear Tamper Pin Event flag //配置信号控制(PA1)侵入检测的信号(PC13)
GPIO_InitTypeDef GPIO_InitStructure;
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_0;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP;
GPIO_Init(GPIOA, &GPIO_InitStructure); //write backup registers
BKP_WriteBackupRegister(BKP_DR1, 0xA5A5);
BKP_WriteBackupRegister(BKP_DR2, 0x8888);
BKP_WriteBackupRegister(BKP_DR3, 0x6666);
BKP_WriteBackupRegister(BKP_DR4, 0x9999);
BKP_WriteBackupRegister(BKP_DR5, 0x9999);
BKP_WriteBackupRegister(BKP_DR6, 0x9999);
BKP_WriteBackupRegister(BKP_DR7, 0x9999);
BKP_WriteBackupRegister(BKP_DR8, 0x9999);
BKP_WriteBackupRegister(BKP_DR9, 0x9999);
BKP_WriteBackupRegister(BKP_DR10, 0x9999); BKP->CR=0x01;
GPIOA->ODR=1;//set PA[0]=1 >> set PC[13]
while(1)
{
if((BKP->CSR &0x100)==0x100)//tef tamper event flag
{
//A write to the BKP->DRx register is performed while tef is set the value will not be stored
BKP->DR1=0x6666;
BKP->DR2=0x6666;
delay(100);
BKP->CSR=0x1;//clear tamper event flag;侵入检测,将使备份域复位
break;
}
}


实验注意事项

  • 设置了两个GPIO引脚,PA1和PC13,PA1用于控制等待配置完成,然后请自行添加PC13的信号(等到PA1高电平来)即侵入信号。
  • 实验结果应该是备份域被复位,读出数据为0x0。

总结

  1. 复位:RCC中的BDCR设置实现软件复位,另外,侵入检测也可以产生一个复位。
  2. 写操作:电源控制寄存器(PWR_CR)的DBP位控制备份域寄存器与RTC的访问

参考资料

[1]. MM32 miniboard资料

MM32 备份域学习(兼容STM32)的更多相关文章

  1. MM32看门狗学习(兼容STM32)

    MM32看门狗学习(兼容STM32) IWDG独立看门狗 思维导图 IWDG框图与理解 1.独立看门狗分为两个部分,配置寄存器在1.8V供电区,计数器的核心部分在VDD供电区(即使停机/待机模式计数器 ...

  2. MM32 RTC学习(兼容STM32)

    RTC学习 RTC简述 实时时钟是一个独立的定时器. RTC模块拥有一组连续计数的计数器,在相应软件配置下,可提供时钟日历的功能. 修改计数器的值可以重新设置系统当前的时间和日期. RTC模块和时钟配 ...

  3. MM32初识(兼容STM32)

    MM32初识(兼容STM32) 资源与开发环境 keil 5.0 MM32 miniboard 提要 stm32入门(MM32兼容) 点亮LED思路简介 GPIO配置 stm32寄存器理解与操作步骤 ...

  4. MM32Flash读写操作(兼容STM32)

    MM32Flash读写操作(兼容STM32) Flash基础描述 思维导图 编程实现读写操作 主函数结构 #include "delay.h" #include "sys ...

  5. js跨域传值,兼容ie8以上

    js跨域传值,兼容ie8以上 事先说明,此方法并不支持ie8,如果想要支持ie8的话,需要用这种思路(来自微软): if (window.addEventListener) { window.addE ...

  6. LwIP学习笔记——STM32 ENC28J60移植与入门

    0.前言     去年(2013年)的整理了LwIP相关代码,并在STM32上"裸奔"成功.一直没有时间深入整理,在这里借博文整理总结.LwIP的移植过程细节很多,博文也不可能一一 ...

  7. Windows Server 2016-图形化备份域控制器

    上边几章节我们补充了有关Windows Server 2016系统层面的相关内容,本章切回Active Directory正题,继续围绕AD域相关内容进行不断梳理补充.Windows Server B ...

  8. 跨域学习笔记2--WebApi 跨域问题解决方案:CORS

    自己并不懂,在此先记录下来,留待以后学习... 正文 前言:上篇总结了下WebApi的接口测试工具的使用,这篇接着来看看WebAPI的另一个常见问题:跨域问题.本篇主要从实例的角度分享下CORS解决跨 ...

  9. Windows Server 2016-Wbadmin命令行备份域控制器

    在上一章我们讲到Windows Server 2016-图形化备份域控制器的方法,本章我们聊聊如何通过命令行Wbadmin对域控制器进行备份.在Windows Server Active Direct ...

随机推荐

  1. jQuery 选择器和JavaScript 选择器的技巧与异常原因

    jquery的选择器借鉴了css选择器,核心依然依靠JavaScript的getElementById()和getElementsByTagName()方法,但是他封装了2个方法,让jquery选择器 ...

  2. IE6的bug

    借鉴http://css.doyoe.com/ 问题和经验列表,里面应有尽有.写几个常见的: 1.解决IE6及更早浏览器浮动时产生双倍边距的BUG display:inline 2.如何解决IE6下的 ...

  3. JavaScript学习 常用的对话框函数

    JavaScript提供了三个很不错的对话框函数,使用这三个函数可以很方便的显示一个对话框: 一.alert(); <script type="text/javascript" ...

  4. python百科

    Python 编辑词条 添加义项名 B 添加义项 ? Python(英语发音:/ˈpaɪθən/), 是一种面向对象.解释型计算机程序设计语言,由Guido van Rossum于1989年底发明,第 ...

  5. Javascript中的onclick事件

    示例: <script type="text/javascript"> function onSubmit() { alert("保存数据"); } ...

  6. codeforces 232D Fence

    John Doe has a crooked fence, consisting of n rectangular planks, lined up from the left to the righ ...

  7. Glide制作圆形图片

    上效果图: 第一步: AndroidStudio添加依赖库: compile 'com.github.bumptech.glide:glide:3.5.2' 第二步: <ImageView an ...

  8. Altera quartus II遇到的问题

    编译时提示: Warning (13024): Output pins are stuck at VCC or GND Warning (13410): Pin "SCLK" is ...

  9. 兼容各浏览器中的PNG透明效果CSS定义

    <style>.mycls{width: 48px;height: 48px;background: url(20090318230119136.png) no-repeat left t ...

  10. C语言学习笔记--类型定义&联合

    一.类型定义 C语言自定义数据类型 (typedef) C语言提供一个叫做typedef的功能来声明一个已有的数据类型的新名字. typedef int Length; 使得Length成为int类型 ...