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. C++ Primer 5th 第10章 泛型算法

    练习10.1:头文件algorithm中定义了一个名为count的函数,它类似find,接受一对迭代器和一个值作为参数.count返回给定值在序列中出现的次数.编写程序,读取int序列存入vector ...

  2. Spring3.0提供的表达式语言spel

    package com.zf.spel; import java.lang.reflect.Method; import java.util.ArrayList; import java.util.D ...

  3. 数据结构 --- 线性表学习(php模拟)

    线性表:零个或多个数据元素的有限序列(注:以下都是用的整型数据模拟) 一 顺序存储结构(用一段地址连续的存储单元一次存储线性表的数据元素) 1.1 三个属性:存储空间的起始位置:最大存储容量:当前长度 ...

  4. history对象属性和方法

    history对象保存着用户上网的历史记录,从窗口被打开的那一刻算起,history是window对象的属性,因此每个浏览器窗口.每个标签页乃至每个框架,都有自 己的history对象和特定的wind ...

  5. C# 基于委托的事件

    事件基于多播委托的特性. 多播委托事实上就是一组类型安全的函数指针管理器,调用则执行顺序跳转到数组里所有的函数指针里执行. class Program { public class CarInfoEv ...

  6. java中dynamic web project与web project 的区别 [转]

    原帖地址:http://blog.sina.com.cn/s/blog_46726d2401013jlk.html 文章框架: 1.Dynamic  Web Project 概念 2.eclipse ...

  7. 打印机PCL漏洞原理分析

    0x01 漏洞概要 PCL代表打印机控制语言(Printer Control Language),由惠普公司开发,并被广泛使用的一种打印机协议.关于另一种页面描述语言,应该提一提由Adobe设计的Po ...

  8. 『Python』爬行搜索引擎结果获得指定主机二级域名及IP信息

    0x 00 前言 前天自己在玩的时候,自己通过百度搜索主机的二级域名感觉好麻烦,自已要一页页的去翻 而且人工识别是否是重复的二级域名也够蛋疼的,正好最近在学正则表达式,权当练手了 0x 00 代码 # ...

  9. js blog

    http://www.csdn.net/article/2013-12-16/2817820-javascript-survey-results 近日DailyJS社区发起了一项针对JavaScrip ...

  10. JavaScript and html的关系

    HTML--------------------------->DOM, BOM, Event Request/Response------------->Ajax 日期处理 http:/ ...