STM32教程系列之FLASH

2021-06-02 05:37:21 字數 2477 閱讀 1051

(原檔名:option.jpg) 引用

rdp:讀出保護選擇位元組

讀出保護功能幫助使用者保護存在快閃儲存器中的軟體。該功能由設定資訊塊中的乙個選擇位元組啟用。寫入正確的數值(rdprt鍵=0x00a5)到這個選擇位元組後,快閃儲存器被開放允許讀出訪問。

user:使用者選擇位元組

這個位元組用於配置下列功能:

− 選擇看門狗事件:硬體或軟體

− 進入停機(stop)模式時的復位事件

− 進入待機模式時的復位事件

data:使用者資料,可由使用者自己分配

wrpx:快閃儲存器寫保護選擇位元組

使用者選擇位元組wrpx中的每個位用於保護主儲存器中4頁的內容,每頁為1k位元組。總共有4個使用者選擇位元組用於保護所有128k主快閃儲存器。

其擦除的過程如下:

-檢查flash_sr暫存器的bsy位,以確認沒有其他正在進行的快閃儲存器操作;

-解除flash_cr暫存器的optwre位;

-設定flash_cr暫存器的opter位為1;

-設定flash_cr暫存器的strt位為1;

-等待bsy位變為0;

-讀出小資訊塊並做驗證。

程式設計過程如下:

//等待前次操作完畢(檢查flash_sr暫存器的bsy位)

status = flash_waitforlastoperation(erasetimeout);

if(status == flash_complete)//如果flash處於可以操作狀態,開始進選擇位元組擦除操作 }

6. 選擇位元組程式設計

選擇位元組的程式設計就是向上面講到的選擇位元組裡面寫入指定的資料,其過程如下:

-檢查flash_sr暫存器的bsy位,以確認沒有其他正在進行的程式設計操作;

-解除flash_cr暫存器的optwre位;

-設定flash_cr暫存器的optpg位為1;

-寫入要程式設計的半字到指定的位址;

-等待bsy位變為0;

-讀出寫入的位址並驗證資料。

程式設計過程如下:

//等待前次操作完畢(檢查flash_sr暫存器的bsy位)

status = flash_waitforlastoperation(programtimeout);

if(status == flash_complete)//如果flash處於可以操作狀態,開始進行程式設計操作

}  7.stm32的**保護

通過選擇位元組的設定,可以實現**的讀保護和寫保護,在上面6中講到的,rdp和wrp分別是讀保護和寫保護,將rdp設定指定的數值,可以實現**的讀保護,也就是不允許任何裝置讀取flash裡面的應用**,將wrp裡設定指定的數值,可以實現**的寫保護,不允許任何裝置改寫flash裡面的應用**。其中設定讀保護的**如下:

//等待前次操作完畢(檢查flash_sr暫存器的bsy位)

status = flash_waitforlastoperation(erasetimeout);

if(status == flash_complete)//如果flash處於可以操作狀態,開始進行指定操作

else//使能讀出操作

//等待寫入完畢

status = flash_waitforlastoperation(erasetimeout); 

if(status != flash_busy) }

寫保護**如下:

//等待前次操作完畢(檢查flash_sr暫存器的bsy位)

status = flash_waitforlastoperation(programtimeout);

if(status == flash_complete)//如果flash處於可以操作狀態,開始進行程式設計操作

if((status == flash_complete) && (wrp1_data != 0xff))

if((status == flash_complete) && (wrp2_data != 0xff))

if((status == flash_complete)&& (wrp3_data != 0xff))

if(status != flash_busy)

}    

8.stm32有3種啟動模式:

第1種:上電前boot0腳為0,boot1腳是0或者1,上電後直接進入flash執行應用程式。

第3種:上電前boot0腳為1,boot1腳為1,上電後進入晶元的sram,一般我們很少使用這個模式

四、程式流程分析

程式流程見附件《stm32例程之flash流程圖.pdf》

五、**例程(不包括庫檔案)

程式的iar例程工程見附件「flash.rar」

ourdev_604189gxbjq5.pdf(檔案大小:38k)

(原檔名:stm32例程之flash流程圖.pdf)

ourdev_604190lp4gfp.rar(檔案大小:223k)

(原檔名:flash.rar)

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字型檔

w25q128!總空間 16m define spi font start 12 從12m開始寫入,其餘是檔案系統 define font16x16 spi addr spi font start 1024 16 4096 16x16字型檔 define font16x16 spi size 282...