1. iap遠端更新機制說明
3. stm32內部flash的操作函式
stm32 操作內部flash的函式介面
#include
"inflash.h"
#include
"stm32f10x_flash.h"
/*! * 功 能: 不檢查的寫入內部flash
* param1: 起始位址
* param2: 要寫入的資料指標
* param3: 要寫入的資料的個數
* return: 無返回值
*/void
inflashwritenocheck
(uint32_t writeaddr, uint16_t *pbuffer, uint16_t numtowrite)
}/*!
* 功 能: 從指定位址開始寫入指定長度的資料
* param1: 起始位址(此位址必須為2的倍數!!)
* param2: 要寫入的資料指標
* param3: 半字(16位)數 (就是要寫入的16位資料的個數.)
* return: 成功返回 0
* 失敗返回 -1
*/int
inflashwrite
(uint32_t writeaddr, uint8_t *pbuffer, uint16_t numtowrite)
flash_unlock()
;// 解鎖
flash_setlatency
(flash_latency_2)
;// 因為系統時鐘為72m所以要設定兩個時鐘週期的延時
flash_clearflag
(flash_flag_bsy | flash_flag_pgerr | flash_flag_wrprterr | flash_flag_eop)
;// 寫入頁之前要擦除整頁,並判斷是否擦除成功
while
(flash_erasepage
(writeaddr)
!= flash_complete)
;// 寫入資料,小端儲存,資料的高位元組儲存在高位址
if(numtowrite ==1)
else
}flash_lock()
;// 上鎖
return0;
}/*!
* 功 能: 讀取指定位址的半字(16位資料)
* param1: 讀位址(此位址必須為2的倍數!!)
* return: 讀取到的資料
*/uint16_t inflashreadhalfword
(uint32_t faddr)
/*! * 功 能: 從指定位址開始讀出指定長度的資料
* param1: 起始位址(此位址必須為2的倍數!!)
* param2: 要儲存的緩衝區的位址
* param3: 要讀取的半字(16位)數 (就是要讀取的16位資料的個數.)
* return: 無返回值
*/void
inflashread
(uint32_t readaddr, uint16_t *pbuffer, uint16_t numtoread)
}/*!
* 功 能: 測試函式,往內部flash寫入乙個位元組的資料
* param1: 起始位址
* param2: 要寫入的資料
* return: 成功返回0
*/int
inflashwritechar
(uint32_t writeaddr, uint8_t writedata)
stm32 讀寫內部Flash
stm32的flash分為主儲存塊和資訊塊。主儲存塊用於儲存具體的程式 和使用者資料,資訊塊用於負責由stm32出廠是放置2kb的啟動程式 bootloader 和512b的使用者配置資訊區。主儲存塊是以頁為單位劃分的,一頁大小為1kb。範圍為從位址0x08000000開始的128kb內。對flas...
STM32 讀寫內部Flash
flash模組組織 儲存器被組織為程式儲存器模組,資料eeprom模組和資訊塊。程式儲存器塊分為4 kb的扇區,每個扇區都是進一步分成16頁,每頁256位元組。該操作用於擦除程式儲存器中的頁面 64個字 要做到這一點 解鎖flash pecr暫存器 1.將pekey1 0x89abcdef寫入程式設...
STM32關於操作內部FLASH整理
stm32的flash分為主儲存塊 資訊塊和快閃儲存器儲存器介面暫存器等 3 部分組成。主儲存塊用於儲存具體的程式 和使用者資料。起始位址0x08000000,b0和b1接gnd從這裡開始執行程式。資訊塊用於負責由stm32出廠時放置2kb的啟動程式 bootloader 和512b的使用者配置資訊...