功能::
讀保護設置后將不能讀出flash 的內容;當解除讀保護的時候stm32 會自動擦出
整篇flash;
設置:
讀保護設置:在程序的開頭加入“讀保護”代碼,即實現了讀保護功能;(每次程序
運行先
開保護)
解除讀保護:解除讀保護可以設置在按鍵里面,方便實現解鎖,也不可不設;
(1)設置讀保護:
if(FLASH_GetReadOutProtectionStatus() != SET)
{
//FLASH_Unlock();不解鎖FALSH 也可設置讀保護???
FLASH_ReadOutProtection(ENABLE);
}
(2)解除讀保護
if(FLASH_GetReadOutProtectionStatus() != RESET)
{
FLASH_Unlock();
FLASH_ReadOutProtection(DISABLE);
}
這些函數在stm32f10x_flash 里面;
注意:調用上面這個庫的時候需在#include "stm32f10x_flash.h"前加#define
_FLASH_PROG;
否則報(沒有定義)錯;
************************************************************************
/* Flash讀保護使能 */
if (FLASH_GetReadOutProtectionStatus() == RESET)
{
FLASH_Unlock();
FLASH_ReadOutProtection(ENABLE);
}
/* 清除Flash讀保護 */
if (FLASH_GetReadOutProtectionStatus() == SET)
{
/* 會擦除Flash */
FLASH_Unlock();
FLASH_ReadOutProtection(DISABLE);
}
CPU Flash讀保護使能后,仿真器調試會失敗。J-LINK有個解鎖菜單,需要解鎖才能正常再次燒寫程序。當然解鎖會導致Flash內容被全部擦出。
啟動"J-Flash ARM"工具,Target->unsercure chip 就解除了芯片的讀保護。
Target->unsercure chip 后一定要上電復位,系統復位是不行的。
一定要上電復位,系統復位是不行的!
STM32對內部Flash的保護措施
1、STM32對內部Flash的保護措施
所有STM32的芯片都提供對Flash的保護,防止對Flash的非法訪問 - 寫保護和讀保護。
1)、讀保護即大家通常說的“加密”,是作用于整個Flash存儲區域。一旦設置了Flash的讀保護,內置的Flash存儲區只能通過程序的正常執行才能讀出,而不能通過下述任何一種方式讀出: 通過調試器(JTAG或SWD);
從RAM中啟動并執行的程序;
2)、寫保護是以四頁(1KB/頁) Flash存儲區為單位提供寫保護,對被保護的頁實施編程或擦除操作將不被執行,同時產生操作錯誤標志。
讀與寫設置的效果見下表:
讀保護 寫保護 對Flash的操作功能
有效 有效 CPU只能讀,禁止調試和非法訪問。
有效 無效 CPU可以讀寫,禁止調試和非法訪問,頁0~3為寫保護。
無效 有效 CPU可讀,允許調試和非法訪問。
無效 無效 CPU可以讀寫,允許調試和非法訪問。
2、當Flash讀保護生效時,http://tiyubisai.com/video_news/news_135620.html CPU執行程序可以讀受保護的Flash區,但存在兩個例外情況:
1)、調試執行程序時;
2)、從RAM啟動并執行程序時
STM32還提供了一個特別的保護,即對Flash存儲區施加讀保護后,即使沒有啟用寫保護,Flash的第 0 ~ 3 頁也將處于寫保護狀態,這是為了防止修改復位或中斷向量而跳轉到RAM區執行非法程序代碼。
3、Flash保護相關函數
FLASH_Unlock(); //Flash解鎖
FLASH_ReadOutProtection(DISABLE); //Flash讀保護禁止
FLASH_ReadOutProtection(ENABLE); //Flash讀保護允許
現在總結一下FLASH讀保護和解除讀保護的步驟:
(1)設置讀保護
int main(void)
{
....
if(FLASH_GetReadOutProtectionStatus() != SET)
{
//FLASH_Unlock();
FLASH_ReadOutProtection(ENABLE);
}
......
while(1)
{
.....
}
}
(2)解除讀保護:在程序中的某個操作中(如按鍵等)加入如下代碼,執行后
代碼自己殺死了自己,哈哈!!!
if(FLASH_GetReadOutProtectionStatus() != RESET)
{
FLASH_Unlock();
FLASH_ReadOutProtection(DISABLE);
}
如果沒有在程序中加入解除讀保護代碼,也不要緊,可以寫段RAM中運行的程序
用于解除讀保護,執行后,FLASH會自動全部擦除。代碼如下:
int main(void)
{
Chinp_Init();
FLASH_Unlock();
FLASH_ReadOutProtection(DISABLE);
}
※對于在RAM中運行程序,說明如下:
(1)我使用IAR + J-Link,不用把Boot0和boot1腳設置成從RAM啟動也可在RAM中調試(我是設置成從FLASH啟動)。
(2)在IAR環境中設置Link文件為lnkarm_ram.xcl
(3)Debuger選項Download tab中勾全部去掉。
按上面設置完成后,按Debug按鈕,執行上面程序,讀保護可解除。
上一篇:STM32F4+FreeRTOS+FreeRTosTcpIp移植教程
下一篇:stm32 定時器5輸入捕獲
推薦閱讀
史海拾趣
隨著全球經濟的不斷發展,Desoutter公司開始實施國際化戰略,積極開拓國際市場。公司通過與全球知名企業的合作,如大眾集團、捷豹路虎集團等,成功進入了歐洲、北美等地區的市場。同時,Desoutter公司還在全球范圍內建立了多個生產基地和研發中心,以更好地滿足不同地區客戶的需求。
隨著全球經濟的不斷發展,Desoutter公司開始實施國際化戰略,積極開拓國際市場。公司通過與全球知名企業的合作,如大眾集團、捷豹路虎集團等,成功進入了歐洲、北美等地區的市場。同時,Desoutter公司還在全球范圍內建立了多個生產基地和研發中心,以更好地滿足不同地區客戶的需求。
面對數字化浪潮的沖擊,Hitachi Metals積極擁抱變革,致力于數字化轉型。公司推出了全球級別的物聯網平臺Lumada,該平臺能夠為客戶提供從企業擴建、價值核查到設備和系統管理的全方位解決方案。Lumada平臺的成功應用不僅提升了日立金屬自身的運營效率和管理水平,還為客戶帶來了顯著的價值增長。通過Lumada平臺,日立金屬與全球范圍內的合作伙伴建立了更加緊密的聯系,共同推動電子行業的數字化轉型進程。
進入21世紀,電子行業迎來了快速發展的黃金時期。為了適應市場需求的變化,Cableform Inc不斷加大研發投入,致力于技術創新。公司成功開發出了一系列具有自主知識產權的電磁控制產品,涵蓋了從直流電機控制到高精度磁鐵控制等多個領域。這些技術創新不僅提升了公司的核心競爭力,也為客戶提供了更加高效、可靠的解決方案。
進入21世紀,電子行業迎來了快速發展的黃金時期。為了適應市場需求的變化,Cableform Inc不斷加大研發投入,致力于技術創新。公司成功開發出了一系列具有自主知識產權的電磁控制產品,涵蓋了從直流電機控制到高精度磁鐵控制等多個領域。這些技術創新不僅提升了公司的核心競爭力,也為客戶提供了更加高效、可靠的解決方案。
隨著全球環保意識的不斷提高,Coleman Cable積極響應綠色發展的號召,將環保理念融入公司的生產和經營中。公司研發出環保型電纜產品,采用環保材料和工藝,減少生產過程中的環境污染。同時,公司還加強廢棄電纜的回收和處理工作,推動資源的循環利用,為行業的綠色發展做出了貢獻。
我請教各位大俠,我現在有一個問題,要開發一個小船,可以自主避開障礙物,如何用單片機或PIC來控制他的驅動,即分別控制他的左右車輪,有沒有相關的資料或者程序可以參考,謝謝,希望有知道的可以不吝賜教一下,也可以是源程序方面的,或者是總體 ...… 查看全部問答∨ |
|
本文的說明依據STM32參考手冊(RM0008)第10版: 英文:http://www.st.com/stonline/products/literature/rm/13902.pdf 中譯文:http://www.stmicroelectronics.com.cn/stonline/mcu/images/STM32_RM_CH_V10_1.pdf 在STM32參考手冊的第13、 ...… 查看全部問答∨ |
|
調試器不能連接到STM32的問題與解決辦法 發布時間:2010-01-12 15:24:04 很多人都碰到過調試器不能連接到STM32的問題,不管是IAR的J-Link還是Keil的ULink,或者是ST的ST-Link。出現這個問題時,調試軟件會提示不能建立與Cortex- ...… 查看全部問答∨ |
圖像質量 圖像質量一直都是用戶最關心的網絡攝像機性能標準之一。尤其是一些傳統行業,如金融、電力、交通,以及公安系統等,他們對畫質的要求更高,像銀行有的部位就要求達到D1的畫質,柜臺有時需要看清票額;而公安系統由于事后查 ...… 查看全部問答∨ |
設計資源 培訓 開發板 精華推薦
- 將低功耗設計進行到底——評論、轉發贏大禮!
- 芯幣競拍:感恩教師節專場
- Keysight示波器主題月有獎系列活動之 注冊大獎天天抽 搶樓踩中亦有獎
- Microchip有獎直播:VectorBlox™ SDK 報名中
- 有獎直播|ADI 慣性MEMS應用那些事
- 借助 Microchip 生態系統中的 PIC® 和 AVR® 單片機開啟嵌入式到云端之旅 系列在線研討會
- 帶你零起點入門STM32(專為嵌入式應用而開發的內核)
- 福祿克首款熱成像萬用表Fluke-279FC 即將上市!填寫問卷贏好禮嘍!
- EEWorld Datasheet 伴你同行!快來領取200芯積分福利啦~
- 泰克福袋:示伴功倍,萬能福袋派送中