STM32-對芯片啟動讀保護,實現加密(詳解)


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

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM