欧美性猛交xxxx免费看_牛牛在线视频国产免费_天堂草原电视剧在线观看免费_国产粉嫩高清在线观看_国产欧美日本亚洲精品一5区

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

如果有幾個(gè)設(shè)置參數(shù)需要存儲(chǔ)到Flash中,我們一般會(huì)怎么存儲(chǔ)呢?

GReq_mcu168 ? 來源:未知 ? 作者:李倩 ? 2018-05-14 16:15 ? 次閱讀

如果有幾個(gè)設(shè)置參數(shù)需要存儲(chǔ)到Flash中,我們一般會(huì)怎么存儲(chǔ)呢?將不同的參數(shù)都存儲(chǔ)到不同的頁中,還是將這幾個(gè)參數(shù)捆綁成一種結(jié)構(gòu)體,每次修改都同時(shí)寫入一次呢?

將參數(shù)存儲(chǔ)到固定的地址,則每個(gè)參數(shù)都將占用Flash的一個(gè)塊。而將全部參數(shù)捆綁一起存入Flash塊中,那么只有一個(gè)參數(shù)修改時(shí),也需要將全部參數(shù)一起存一遍。那么有什么更好的方法嗎?

前段時(shí)間學(xué)習(xí)Msos,看到其中使用的參數(shù)存儲(chǔ)的方法設(shè)計(jì)的很好,它將參數(shù)的變量地址與值,一同存儲(chǔ)入Flash中。出彩之處是使用參數(shù)的變量地址來標(biāo)記不同的變量。

一、數(shù)據(jù)結(jié)構(gòu)

這種存儲(chǔ)方式使用兩個(gè)數(shù)據(jù)結(jié)構(gòu):

typedef struct

{

uint Address; //參數(shù)變量的地址

uint Data; //參數(shù)變量的值

}CellStruct;

要存儲(chǔ)某個(gè)變量,需要將這個(gè)變量的地址和它的值一同存儲(chǔ)到存儲(chǔ)區(qū)。這種存儲(chǔ)方式的核心就是這個(gè)數(shù)據(jù)結(jié)構(gòu)。這樣就可以使用*((uint *)(Address)) = Data直接將存儲(chǔ)值賦值給對(duì)應(yīng)的變量。簡單的說就是根據(jù)地址值來標(biāo)記各個(gè)不同的參數(shù)。

2.存儲(chǔ)區(qū)的數(shù)據(jù)結(jié)構(gòu)

typedefstruct{

二、代碼解析

這種存儲(chǔ)方式的使用兩個(gè)函數(shù):

讀取存儲(chǔ)區(qū)中的變量值并更新變量的值

變量的存儲(chǔ)函數(shù)

2.1 參數(shù)的讀取

流程圖如上,主要步驟如下:

根據(jù)Flash中存寫的變量地址,更新變量的值;

將Flash中存寫的地址值存入臨時(shí)數(shù)組中,并根據(jù)地址值判斷是否存在重復(fù)存儲(chǔ)的無效數(shù)據(jù),并將無效數(shù)組失效;

清空Flash存儲(chǔ)區(qū),將臨時(shí)數(shù)組中有效的變量重新存入Flash中。

通過這些步驟,將存儲(chǔ)區(qū)中存儲(chǔ)的變量讀出,并將存儲(chǔ)區(qū)中的重復(fù)的無效數(shù)據(jù)清除。下面是源代碼:

#definepUint(address)*((uint*)(address))#definePageSize1024//Stm32F103R8T61Page=1024Byte#defineParameterAddress(FLASH_BASE+(63*1024))#defineParameterSpacePageSize/4/2staticvoidReadAllParameter(void){boolCleanFlag;inti,j;

2.2 參數(shù)的寫入

參數(shù)的寫入就很簡單了,根據(jù)數(shù)據(jù)結(jié)構(gòu)中的寫入點(diǎn),將變量的地址與值寫入Flash中。

staticboolWriteParameter(void*dataPointer){

2.3 使用方法

使用方法:

每次上電啟動(dòng)時(shí),調(diào)用讀取全部變量的函數(shù);

修改某個(gè)參數(shù)的時(shí)候,調(diào)用寫參數(shù)函數(shù);

三、注意事項(xiàng)

在讀取參數(shù)時(shí),需要在RAM中建立一個(gè)ParameterSpace大小的數(shù)組,如果這個(gè)值太大,會(huì)超過棧的大小,使得內(nèi)存溢出。因此存儲(chǔ)區(qū)不能開辟的太大。四、

總結(jié)

這種方式使用簡便,尤其是在更新變量值時(shí),根據(jù)存儲(chǔ)的變量地址更新相應(yīng)的值。其實(shí)其本質(zhì)與我們使用變量名來標(biāo)記不同的變量是一樣的。不過也有缺點(diǎn):

首先其同時(shí)存儲(chǔ)變量的地址與變量的值,相當(dāng)于多使用一倍的存儲(chǔ)空間;

像上面的注意事項(xiàng)中說的,存儲(chǔ)區(qū)不能開辟的過大,否則會(huì)使臨時(shí)數(shù)組超過棧的大小。

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • 存儲(chǔ)
    +關(guān)注

    關(guān)注

    13

    文章

    4363

    瀏覽量

    86223
  • 變量
    +關(guān)注

    關(guān)注

    0

    文章

    613

    瀏覽量

    28479

原文標(biāo)題:技術(shù)干貨:嵌入式中參數(shù)存儲(chǔ)的一種方式

文章出處:【微信號(hào):mcu168,微信公眾號(hào):硬件攻城獅】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。

收藏 人收藏

    評(píng)論

    相關(guān)推薦

    CS SD NAND在打獵相機(jī)存儲(chǔ)應(yīng)用

    ,如果有獵物出現(xiàn),會(huì)立刻喚醒機(jī)器以極快的速度進(jìn)行抓拍。為什么說這樣的款產(chǎn)品會(huì)用到SD NAND?1、產(chǎn)品要求啟動(dòng)速度非???,獵物出現(xiàn),
    發(fā)表于 04-26 18:40

    MCU產(chǎn)品開發(fā)實(shí)現(xiàn)參數(shù)存儲(chǔ)功能

    在工作,凡是涉及產(chǎn)品開發(fā)幾乎都會(huì)實(shí)現(xiàn)參數(shù)存儲(chǔ)功能,一般參數(shù)
    發(fā)表于 11-10 07:39

    嵌入式軟件如何利用內(nèi)部flash存儲(chǔ)參數(shù)?

    01前言嵌入式軟件中經(jīng)常要存儲(chǔ)些非易失參數(shù),例如用戶設(shè)置、校準(zhǔn)參數(shù)、設(shè)備運(yùn)行參數(shù)等,通常情況下
    發(fā)表于 11-25 08:52

    關(guān)于CH573的存儲(chǔ)映射結(jié)構(gòu)

    ,常用的些代碼參數(shù)可以放在DataFlash內(nèi),共有32KB的存儲(chǔ)空間。系統(tǒng)Bootlader和配置信息InfoFlash內(nèi)的數(shù)據(jù)一般是不操作,InfoFlash內(nèi)的數(shù)據(jù)可通過工具進(jìn)
    發(fā)表于 04-07 11:46

    嵌入式參數(shù)存儲(chǔ)種方式

    如果有幾個(gè)設(shè)置參數(shù)需要存儲(chǔ)
    發(fā)表于 04-20 09:57 ?740次閱讀

    招教你如何使用嵌入式參數(shù)代碼,入門必懂知識(shí)

    如果有幾個(gè)設(shè)置參數(shù)需要存儲(chǔ)
    發(fā)表于 04-30 07:50 ?2742次閱讀

    嵌入式的參數(shù)存儲(chǔ)訣竅分享

    分享:標(biāo)簽:嵌入式 工業(yè)4.0 如果有幾個(gè)設(shè)置參數(shù)需要存儲(chǔ)
    發(fā)表于 10-13 20:24 ?0次下載
    嵌入式的<b class='flag-5'>參數(shù)</b><b class='flag-5'>存儲(chǔ)</b>訣竅分享

    干貨:嵌入式參數(shù)存儲(chǔ)種方式詳細(xì)教程

    如果有幾個(gè)設(shè)置參數(shù)需要存儲(chǔ)
    發(fā)表于 05-18 16:33 ?2078次閱讀

    如何處理嵌入式參數(shù)存儲(chǔ)?

    如果有幾個(gè)設(shè)置參數(shù)需要存儲(chǔ)
    的頭像 發(fā)表于 10-03 10:49 ?3369次閱讀

    pcb布線線寬一般設(shè)置多少

    PCB布線是pcb設(shè)計(jì)很關(guān)鍵的環(huán),有些小伙伴不知道pcb布線線寬一般設(shè)置多少,下面我們就來
    的頭像 發(fā)表于 08-17 15:07 ?6.7w次閱讀

    關(guān)于MCU產(chǎn)品開發(fā)參數(shù)存儲(chǔ)的幾種方案(開源項(xiàng)目持續(xù)收集整理)

    在工作,凡是涉及產(chǎn)品開發(fā)幾乎都會(huì)實(shí)現(xiàn)參數(shù)存儲(chǔ)功能,一般參數(shù)
    發(fā)表于 11-05 18:50 ?10次下載
    關(guān)于MCU產(chǎn)品開發(fā)<b class='flag-5'>參數(shù)</b><b class='flag-5'>存儲(chǔ)</b>的幾種方案(開源項(xiàng)目持續(xù)收集整理<b class='flag-5'>中</b>)

    如果有人用半的數(shù)據(jù)速率為你提供同樣的視頻質(zhì)量,你會(huì)接受嗎?

    如果有人用半的數(shù)據(jù)速率為你提供同樣的視頻質(zhì)量,你會(huì)接受嗎?
    發(fā)表于 11-04 09:50 ?0次下載
    <b class='flag-5'>如果有</b>人用<b class='flag-5'>一</b>半的數(shù)據(jù)速率為你提供同樣的視頻質(zhì)量,你<b class='flag-5'>會(huì)</b>接受嗎?

    如果有精確的時(shí)間基準(zhǔn),為什么還需要鎖相環(huán)

    如果有精確的時(shí)間基準(zhǔn),為什么還需要鎖相環(huán)?? 隨著時(shí)代的不斷進(jìn)步,人類對(duì)于時(shí)間的精確度與準(zhǔn)確性要求越來越高,在許多領(lǐng)域,如通信技術(shù)、電力系統(tǒng)、精密儀器等等都需要
    的頭像 發(fā)表于 09-20 16:28 ?661次閱讀

    如何使用Flash模擬EEPROM存儲(chǔ)參數(shù)?

    在MCU的使用,經(jīng)常遇到需要存儲(chǔ)參數(shù)或掉電保持?jǐn)?shù)據(jù)等功能。其中,Flash和EEPROM是常見的非易失性
    的頭像 發(fā)表于 09-21 09:14 ?1536次閱讀

    嵌入式軟件如何利用內(nèi)部flash存儲(chǔ)參數(shù)

    嵌入式軟件中經(jīng)常要存儲(chǔ)些非易失參數(shù),例如用戶設(shè)置、校準(zhǔn)參數(shù)、設(shè)備運(yùn)行參數(shù)等,通常情況下
    的頭像 發(fā)表于 10-27 14:12 ?1500次閱讀
    嵌入式軟件<b class='flag-5'>中</b>如何利用內(nèi)部<b class='flag-5'>flash</b><b class='flag-5'>存儲(chǔ)</b><b class='flag-5'>參數(shù)</b><b class='flag-5'>呢</b>?