-
stm32 备份寄存器 读写数据
2017-09-15 20:54:481. 首先 检查RTC电池是否装载,没... 因为是普通RAM,所以不存在写入次数的问题,理论上是无限次的。 其次在RCC_Configuration(); 中配置备份寄存器的如下: /* Enable PWR(电源控制) and BKP clock */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程序会初始化备份寄存器中的数据),浪费了点时间才找到原因所在。
-
backup ram不稳定 stm32_stm32 备份寄存器 读写数据
2020-12-19 16:17:581. 首先 检查RTC电池是否装载...因为是普通RAM,所以不存在写入次数的问题,理论上是无限次的。其次在RCC_Configuration(); 中配置备份寄存器的如下:/* Enable PWR(电源控制) and BKP clock */RCC_APB1PeriphClock...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程序会初始化备份寄存器中的数据),浪费了点时间才找到原因所在。
-
register 寄存器变量
2019-05-03 14:26:551.寄存器变量可以用来优化加速...这种变量存放在CPU的寄存器中,使用时,不需要访问内存,而直接从寄存器中读写,从而提高效率。寄存器变量的说明符是register。对于循环次数较多的循环控制变量及循环体内反复使用的...1.寄存器变量可以用来优化加速c语言程序
2.声名只需在类型前多加register
当对一个变量频繁被读写时,需要反复访问内存,从而花费大量的存取时间。为此,C语言提供了一种变量,即寄存器变量。这种变量存放在CPU的寄存器中,使用时,不需要访问内存,而直接从寄存器中读写,从而提高效率。寄存器变量的说明符是register。对于循环次数较多的循环控制变量及循环体内反复使用的变量均可定义为寄存器变量,而循环计数是应用寄存器变量的最好候选者。
. 只有局部自动变量和形参才可以定义为寄存器变量。因为寄存器变量属于动态存储方式,凡需要采用静态存储方式的量都不能定义为寄存器变量,包括:模块间全局变量、模块内全局变量、局部static变量。
#include<stdio.h> #define re register//寄存器 int main(){ int n=1000000; for(re int i=1;i<=n;i++){ for(re int j=1;j<=n;j++){ } } }
-
通用寄存器各自的作用
2020-02-14 17:42:19文章目录寄存器的用途他们各自的作用 寄存器的用途 可将寄存器内的数据执行算术及逻辑运算。...作计数器使用,比如rep这个指令的执行次数就要从ECX寄存器中读取 EDX 在某些运算中作为EAX的溢出寄存器...寄存器的用途
- 可将寄存器内的数据执行算术及逻辑运算。
- 存于寄存器内的地址可用来指向内存的某个位置,即寻址。
- 可以用来读写数据到电脑的周边设备。
他们各自的作用
寄存器 作用 EAX 储存某一个程序执行完毕后得到的结果 ECX 作计数器使用,比如rep这个指令的执行次数就要从ECX寄存器中读取 EDX 在某些运算中作为EAX的溢出寄存器,例如乘、除的运算 EBX 通常作为内存偏移指针使用(相对于EAX、ECX、EDX) EBP 这也是一个作为指针的寄存器。通常,它被高级语言编译器用以建造‘堆栈帧’来保存函数或过程的局部变量 ESP 记录当前堆栈的使用情况(用到哪儿了) ESI MOVS指令中的源地址指针 EDI MOVS指令中的目的地址指针 -
寄存器变量的用法
2008-04-18 09:19:00当对一个变量频繁被读写时,需要反复访问内存,从而花费大量的存取时间。...对于循环次数较多的循环控制变量及循环体内反复使用的变量均可定义为寄存器变量,而循环计数是应用寄存器变量的最好候选者。 (1) 只有局部 -
c语言性能优化—使用寄存器变量
2016-09-19 16:35:19c语言性能优化—使用寄存器变量 当对一个变量频繁被读写时,需要反复访问内存,从而...对于循环次数较多的循环控制变量及循环体内反复使用的变量均可定义为寄存器变量,而循环计数是应用寄存器变量的最好候选者。 -
stm32之备份寄存器(BKP)应用(侵入检测中断)
2019-08-20 10:45:25前言:很多的嵌入式设备使用过程中,当系统掉电时,往往需要把一些用户设置的参数保存起来,或者是将掉电前的一些状态信息保存,或者是统计系统重启次数。保存这些动态信息其实有很多种方法,第一种:在系统掉电前... -
teamviewer正在初始化显示参数_将按键次数写入AT24C02,再读出并用1602LCD显示
2020-11-23 17:32:55将按键次数写入AT24C02,再读出并用1602LCD显示#include //包含单片机寄存器的头文件#include //包含_nop_()函数定义的头文件sbit RS=P2^0; //寄存器选择位,将RS位定义为P2.0引脚sbit RW=P2^1; //读写选择位,将RW... -
计算模型
2020-10-13 00:44:32每一基本操作仅需常数时间:寄存器读写(赋值)、四则运算、比较、goto、call、return 在RAM模型中,算法运行的时间正比与算法需要执行的基本操作次数 T(n)=算法在RAM中求解规模为n问题所需要的基本操作次数 ... -
register 和volatile
2017-01-15 10:07:18 什么情况用寄存器变量: 当对一个变量频繁被读写时,需要反复访问内存,从而花费大量的...对于循环次数较多的循环控制变量及循环体内反复使用的变量均可定义为寄存器变量,而循环计数是应用寄存器变量的最好 -
register
2012-08-03 10:09:45使用寄存器变量 当对一个变量频繁被读写时,需要反复访问内存,从而花费...对于循环次数较多的循环控制变量及循环体内反复使 用的变量均可定义为寄存器变量,而循环计数是应用寄存器变量的最好候选者。 (1) 只 -
longjmp前后的自动变量 、全局变量和易变变量(APUE)
2011-12-17 14:08:00寄存器变量: 当对一个变量频繁被读写时,需要反复访问内存,从而...对于循环次数较多的循环控制变量及循环体内反复使用的变量均可定义为寄存器变量,而循环计数是应用寄存器变量的最好候选者。 (1) 只有局部自动... -
汇编基础常识
2020-07-10 18:19:20数据寄存器:CPU上的一个元件(部件),读写速度非常快——保存操作数,保存计算结果。 EAX:累加寄存器,也称累加器; EBX:基地址寄存器;(地址) ECX:计数器寄存器;(循环次数) EDX:数据寄存器;(数据值) 以上... -
regoster变量
2008-05-15 16:31:00一般变量都存放在存储器内,因此当对一个变量频繁读写时,必须要反复访问...寄存器变量的类型说明符是regoster,对于循环次数较多的循环控制变量及循环体内反复使用的变量均可定义为寄存器变量。例:main(){ regoster -
再学王爽的汇编语言
2019-01-02 21:12:328088cpu 数据总线宽度为8,8086CPU总线宽度为16,读写内存次数不一样 物理地址=段地址(CS段寄存器确定)x16+偏移地址(IP指令指针寄存器确定) mov 指令可以完成三种传送:将数据直接送入寄存器 将一个寄存器的内容... -
C的那些琐碎
2010-09-08 14:12:00C的那些琐碎 使用寄存器变量 当对一个变量频繁...对于循环次数较多的循环控制变量及循环体内反复使用的变量均可定义为寄存器变量,而循环计数是应用寄存器变量的最好候选者。 (1) 只有局部自 -
深入理解计算机操作系统 性能优化
2020-10-22 17:39:131减少内存指针的读写次数 2减少函数调用 3消除循环的低效性 4减少过程调用 5消除不必要的内存引用 6提高并行性 7加载性能 依赖流水线的能力和加载单元的延迟 8储存的性能 寄存器写到内存,和加载操作互相关系 ... -
栈顶缓存技术
2020-11-25 18:19:22而操作数栈是存储内存中的,因此频繁的执行读写操作必然会影响执行的速度,于是Java虚拟机提出了栈顶缓存技术,将栈顶的元素全部缓存到物理cpu的寄存器中,降低对内存的续写次数,提升执行引擎的执行效率。... -
零拷贝原理
2018-12-20 05:26:14io读写的方式 中断 DMA 中断方式 中断方式的流程图如下: 1.用户进程发起数据读取请求 2.系统调度为该进程分配cpu 3.cpu向io控制器(ide,scsi)发送io请求 ...缺点:中断次数取决于缓冲寄存器的大小 ... -
JVM——栈顶缓存技术基本了解
2020-12-24 15:40:00目前主流的JVM,基本都是...由于是基于栈的架构,零地址指令方式,所以也有相应的缺点:完成同一个操作需要的更多的出栈和入栈指令,这就意味着将需要更多次的指令分派(instruction dispatch)次数以及内存读写次数。 -
stm32上NRF24L01无法通信的问题。。
2016-04-04 16:33:56之前早就用过这个模块, 但是最近用的时候,反复的调,,就是不能通信,,调了两天,终于调出来了,, 找到了...假如SPI的速度太快,,会导致NRF不正常,,无法读写寄存器。。 当程序下载到stm32上后,按复位键的次数 -
设备驱动中的regmap
2018-07-27 14:31:58regmap 机制是在 Linux 3.1 加入进来的特性。主要目的是减少慢速 I/O 驱动上的重复逻辑,提供一种通用的接口来操作底层硬件上的寄存器。...读写一个寄存器,肯定需要用到i2c_transfer这样的 I2C ... -
3.4、读写多个保持寄存器 先读多个寄存器,然后再写多个寄存器。 eMBMasterReqErrCode eMBMasterReqReadWriteMultipleHoldingRegister( UCHAR ucSndAddr, USHORT usReadRegAddr, USHORT usNReadRegs, USHORT * ...
-
判断sem信号量为零_Linux线程同步(互斥量、信号量、条件变量、生产消费者模型)...
2021-01-08 02:54:24都对一个共享数据读写操作,线程操作共享资源的先后顺序不确定,可能会造成数据的冲突看一个例子两个线程屏行对全局变量count++ (采用一个val值作为中间变量,模拟寄存器工作方式,后面会详解)#include #include #... -
汇编第七日
2017-08-06 21:42:00端口读写用in(从端口读)和out(往端口写)指令: in al 60h 从60h号端口读入一个字节 in和out只能使用ax或al存放从端口读入的数据或要...shl实现逻辑左移,最后一位移出时放入CF位,其左移次数跟cl寄存器有关 ... -
计算机组成原理 练习题与答案 本科
2009-11-16 18:37:18六、(10分)假设某计算机的运算器框图如图B13.1所示,其中ALU为16位的加法器(高电平工作),SA 、SB为16位锁存器,4个通用寄存器由D触发器组成,Q端输出,其读写控制如下表所示: 读控制 写控制 R RA0 RA1 选择 ... -
Java volatile关键字
2016-09-13 15:17:56volatile能够解决线程中数据读取不一致的问题,我们知道每一个线程都有自己的线程栈,自己在自己的线程栈中存放自己线程中所需要的变量,其实可以理解成计算机硬件中的寄存器,目的是为了减少自己对内存的访问次数,... -
NRF24L01配置功能函数.zip
2020-03-08 18:50:49//重发次数 0~15次 u8 NRF24L01_RF_CHf;//设置工作通道频率 0~125 u8 NRF24L01_RF_Speed;//数据传输率 0-1Mbps,1-2Mbps //RF_Speed1Mbps RF_Speed2Mbps u8 NRF24L01_RF_PWR;//发送功率 0,-6,-12,-18dBm// RF_...