STM32 連續操作flash

2021-09-29 06:16:48 字數 2418 閱讀 5801

程式設計和擦除快閃儲存器

主儲存塊容量:

小容量產品主儲存塊最大為4k×64

位,每個儲存塊劃分為32個

1k位元組的頁(見表

2)。

中容量產品主儲存塊最大為16k×64

位,每個儲存塊劃分為

128個

1k位元組的頁(見表

3)。

大容量產品主儲存塊最大為64k×64

位,每個儲存塊劃分為

256個

2k位元組的頁(見表

4)。

互聯型產品主儲存塊最大為32k×64

位,每個儲存塊劃分為

128個

2k位元組的頁(見表

5)。 ─

資訊塊容量:

互聯型產品有

2360×64

位(見表5)。

其它產品有

258×64位

(見表2

30/754、表3、表

4)。

快閃儲存器儲存器介面的特性為:

● 帶預取緩衝器的讀介面

(每字為2×

64位)

● 選擇位元組載入器

● 快閃儲存器程式設計

/擦除操作

● 訪問

/寫保護

大容量每個扇區2048個位元組 

本文需要注意的問題是就是防止棧溢位

1、定義區域性變數需要修改啟動檔案棧的大小(預設設定是0x400=1024個位元組)

2、定義乙個全域性變數

#ifndef __stmflash_h__

#define __stmflash_h__

#include "stm32f1xx_hal.h"

enum flash;

uint32_t read_4byte_flash(uint32_t addr );

uint8_t write_4byte_flash(uint32_t addr ,uint32_t data);

uint8_t write_n_4byte_flash(uint32_t addr ,uint32_t *data,uint32_t len);

uint8_t __neeterease(uint32_t start_addr ,uint32_t len);

#endif /* __stmflash_h__ */

#include "flash.h"

#include "string.h"

#include "stdlib.h"

uint32_t read_4byte_flash(uint32_t addr )

uint8_t write_4byte_flash(uint32_t addr ,uint32_t data)

} }else //不需要擦除就從偏移開始

} }

hal_flash_lock();

return flag;}/*

本函式操作的整型資料 4個位元組;flash是以乙個位元組為乙個位址的

addr 起始位址

data 資料開始位址

surplus 整型資料長度1len=4byte ;最大為 stm32_flash_page_size/4; */

uint8_t write_n_4byte_flash(uint32_t addr ,uint32_t *data,uint32_t len)

else

surplus=len;

for(page_offset=0;page_offsetpage_int_size ? page_int_size:surplus;

base_addr = stm32_flash_base + (start_page+page_offset)*stm32_flash_page_size;

surplus = surplus-erease_size;

} write_one_page_data(base_addr,_offset,data,erease_size);

data+=erease_size;

//_offset=0;

}return 1;

}

STM32 片上Flash 操作

之前iap時候記錄過一些,今天對特定地方寫又加深了印象,寫與擦除都需要先unclock 1 讀取指定位址的半字 16位資料 2 faddr 讀位址 此位址必須為2的倍數 3 返回值 對應資料.4u16 stmflash readhalfword u32 faddr 5stmflash readhal...

STM32關於操作內部FLASH整理

stm32的flash分為主儲存塊 資訊塊和快閃儲存器儲存器介面暫存器等 3 部分組成。主儲存塊用於儲存具體的程式 和使用者資料。起始位址0x08000000,b0和b1接gnd從這裡開始執行程式。資訊塊用於負責由stm32出廠時放置2kb的啟動程式 bootloader 和512b的使用者配置資訊...

STM32內部Flash的操作函式

1.iap遠端更新機制說明 3.stm32內部flash的操作函式 stm32 操作內部flash的函式介面 include inflash.h include stm32f10x flash.h 功 能 不檢查的寫入內部flash param1 起始位址 param2 要寫入的資料指標 param...