STM32可以對存儲在flash上的程式進行讀保護. 啟動讀保護後,用戶就不能再讀寫程式了. 所以,在燒寫程式之前,需要程式調用關閉讀保護.關閉讀保護後,會自動清空flash上的程式 頭文件位於:#include "stm32f10x_flash.h" 啟動保護,用在main()函數初始化時調用: ...
STM32可以對存儲在flash上的程式進行讀保護.
- 啟動讀保護後,用戶就不能再讀寫程式了.
- 所以,在燒寫程式之前,需要程式調用關閉讀保護.關閉讀保護後,會自動清空flash上的程式
頭文件位於:#include "stm32f10x_flash.h"
啟動保護,用在main()函數初始化時調用:
void Set_Protect(void) //啟動保護 { if(FLASH_GetReadOutProtectionStatus() != SET) { FLASH_Unlock(); //解鎖 FLASH_ReadOutProtection(ENABLE); FLASH_Lock();//上鎖 } }
註意:
當代碼第一次調用Set_Protect()函數啟動讀保護時。
期間不能再次調用Off_Protect()函數關閉讀保護,需要重新斷電才能關閉讀保護(因為Flash狀態啟動讀保護後,不能立即設置Status=1)
關閉讀保護,在串口接收某個有效數據或按下某個按鍵時,調用:
void Off_Protect(void) //關閉保護 { if(FLASH_GetReadOutProtectionStatus() != RESET) { FLASH_Unlock(); //不解鎖FALSH也可設置讀保護 FLASH_ReadOutProtection(DISABLE); FLASH_Lock();//上鎖 } }
運行測試
1.第一步,下載程式
2.下載成功後,再次燒寫程式,校驗是否啟動讀保護(因為啟動讀保護後,不能進行讀寫程式了)
3.通過ST-LINK Utility工具嘗試連接晶元,發現確實不能讀數據了
然後只要代碼調用Off_Protect()函數,便可以取消保護了
具體參考:https://wenku.baidu.com/view/e086f59dc8d376eeafaa3116.html