塊擦寫flash任意位置的修改

2021-06-21 14:05:35 字數 757 閱讀 1122

大部分的微控制器flash都是只支援塊擦寫,所以都需要一塊一塊的擦除和寫入,為了應用的方便,可以保證隨時隨地的改寫任意位址的任意長度資料,而不影響位址所在塊其他位置的資料,所以單獨寫乙個函式,實現也比較簡單,記錄下來方便今後直接使用,實現原理就是查詢當前位址所在塊,讀取出來改塊資訊,修改相應位置資訊後擦除原位置塊重新寫入,同時用迴圈保證資料位置跨塊或資料長度超過塊長度是的分次寫入,下面直接貼**。

void changeflashany(uint32_t addr,unsigned char *pdata, int length)

flasherase(block_addr_start);

block_len = (offset + length) > 512 ? (512 - offset) : length;

for(uint16_t i = 0;i < block_len;i++)

length = length - block_len;

pdata = pdata + block_len;

writeflash(block_addr_start,flash_data_temp,512);

block_addr_start = block_addr_start + 512;

offset = 0;

}}

程式中的擦除,寫入和讀取的**和塊大小視實際微控制器而定,我是在msp430微控制器環境下測試的,430的flash以512位元組為一塊,使用時只要傳入flash任意位置位址,修改的資料指標和資料長度就可以了。

如何提高FLASH的擦寫次數

在實際應用中,使用者經常需要在程式執行過程中儲存或讀取一些資料,這些資料在工作中經常會變化,而且掉電後也不能丟失,所以需要及時地進行儲存,儲存這些資料常用的儲存器是eeprom。hxm6002雖然本身不帶eeprom,但是它支援自程式設計技術,可以利用flash來模擬eeprom,這樣不僅簡化了設計...

python小操作 修改文件任意位置的內容

python基本文件操作 讀入文件 f open test.txt r 寫入文件 f open output.txt w 注意!如果你想讀文件,卻寫錯了關鍵字,把 r 寫成 w 並執行了程式,那麼你的文件就會變成空白的,因為你什麼都沒有寫入。修改文件裡面指定行的內容 比如你用 實現了自動生成文字和符...

任意修改的Dialog

實際開發過程中總是對彈窗樣式的要求總是比較高的,但是由於自帶的dialog總是預設載入一些屬性,所以導致顯示的效果和繪製的樣式不一致,所以需要對dialog設定一些屬性.1.在style.xml裡面新增該style my dialog parent android style theme.dialo...