您好,欢迎访问开云体育入口设备有限公司!​ 设为首页| 加入收藏

图片名

全国服务热线:400-123-4567

新闻中心 NEWS

电话:400-123-4567

手机:13304152517

邮箱:admin@rongshenghg.com

地址:青海省海南藏族自治州兴海县时计大楼783号

行业资讯

当前位置: 首页 > 新闻中心 > 行业资讯

开云体育入口_技术干货:嵌入式中参数存储的一种方式

来源:开云体育入口 发布时间:2023-01-31 次浏览

本文摘要:假如几个设定参数务必储存到Flash中,大家一般不容易如何储存呢?

开云体育入口

假如几个设定参数务必储存到Flash中,大家一般不容易如何储存呢?将有所不同的参数都储存到有所不同的页中,還是将这好多个参数扎成一种建筑结构,每一次修改都另外加载一次呢?将参数储存到同样的地址,则每一个参数都将闲置不用Flash的一个块。而将所有参数绑一起现钱Flash块中,那麼只有一个参数修改时,也务必将所有参数一起遗一遍。那麼有哪些更优的方式吗?前不久通过自学Msos,看到在其中用于的参数储存的方式设计方案的非常好,它将参数的变量地址与值,一起储存进Flash中。引人注意的地方是用于参数的变量地址来标识有所不同的变量。

开云体育入口

一、算法设计这类储存方法用于2个算法设计:typedefstruct{uintAddress;//参数变量的地址uintData;//参数变量的值}CellStruct;要储存某一变量,务必将这一变量的地址和它的值一起储存到储存区。这类储存方法的关键就是这个算法设计。

开云体育入口

那样就可以用于*((uint*)(Address))=Data必需将储存值取值给相匹配的变量。比较简单的讲到便是依据地址值来标识每个有所不同的参数。

2.储存区的算法设计typedefstruct{二、编码分析这类储存方法的用于2个涵数:载入储存区中的变量值并改版变量的值变量的储存涵数2.1参数的载入流程表如上,关键流程以下:依据Flash中存写的变量地址,改版变量的值;将Flash中存写的地址值现钱临时性数组中,并依据地址值鉴别否不会有不断储存的违宪数据信息,并将违宪数组超温;清除Flash储存区,将临时性数组中合理地的变量新的现钱Flash中。根据这种流程,将储存区中储存的变量诵读,并将储存区中的不断的违宪数据清理。下边是源码:#definepUint(address)*((uint*)(address))#definePageSize1024//Stm32F103R8T61Page=1024Byte#defineParameterAddress(FLASH_BASE (63*1024))#defineParameterSpacePageSize/4/2staticvoidReadAllParameter(void){boolCleanFlag;inti,j;2.2参数的加载参数的加载就很比较简单了,依据算法设计中的加载点,将变量的地址与值加载Flash中。

开云体育入口

staticboolWriteParameter(void*dataPointer){2.3用于方式用于方式:每一次通电启动,启用载入所有变量的涵数;修改某一参数的情况下,启用写成参数涵数;三、常见问题在载入参数时,务必在RAM中建立一个ParameterSpace大小的数组,假如这一值过度大,不容易高达栈的尺寸,促使运行内存堵塞。因而储存区没法修建的过多。

四、汇总这类方法用于简易,特别是在是在改版变量值时,依据储存的变量地址改版适度的值。只不过是其实质与大家用于变量名来标识有所不同的变量是一样的。但是也是有缺陷:最先其另外储存变量的地址与变量的值,相当于多用于一倍的储存空间;像上边的常见问题中讲到的,储存区没法修建的太大,不然不容易使临时性数组高达栈的尺寸。


本文关键词:开云体育入口

本文来源:开云体育入口-www.rongshenghg.com