初级会员

- 积分
- 123
- 金钱
- 123
- 注册时间
- 2018-5-9
- 在线时间
- 22 小时
|
本帖最后由 killalljp 于 2020-12-11 14:11 编辑
最近在用HAL库给STM32F103 MCU增加程序读保护功能,在网上找了一些代码,多多少少都有些问题,后来问题解决了。
分享已测试过代码,也请大家指正。
- /****************************************************************
- * Function: Flash_EnableReadProtection
- * Description: Enable the read protection of user flash area.
- * Input: NONE
- * Output: NONE
- * Return: NONE
- *****************************************************************/
- void Flash_EnableReadProtection(void)
- {
- FLASH_OBProgramInitTypeDef OBInit;
-
- __HAL_FLASH_PREFETCH_BUFFER_DISABLE();
-
- HAL_FLASHEx_OBGetConfig(&OBInit);
- if(OBInit.RDPLevel == OB_RDP_LEVEL_0)
- {
- OBInit.OptionType = OPTIONBYTE_RDP;
- OBInit.RDPLevel = OB_RDP_LEVEL_1;
- HAL_FLASH_Unlock();
- HAL_FLASH_OB_Unlock();
- HAL_FLASHEx_OBProgram(&OBInit);
- HAL_FLASH_OB_Lock();
- HAL_FLASH_Lock();
- }
- __HAL_FLASH_PREFETCH_BUFFER_ENABLE();
- }
- /****************************************************************
- * Function: Flash_DisableReadProtection
- * Description: Disable the read protection of user flash area.
- * Input: NONE
- * Output: NONE
- * Return: NONE
- *****************************************************************/
- void Flash_DisableReadProtection(void)
- {
- FLASH_OBProgramInitTypeDef OBInit;
-
- __HAL_FLASH_PREFETCH_BUFFER_DISABLE();
-
- HAL_FLASHEx_OBGetConfig(&OBInit);
- if(OBInit.RDPLevel == OB_RDP_LEVEL_1)
- {
- OBInit.OptionType = OPTIONBYTE_RDP;
- OBInit.RDPLevel = OB_RDP_LEVEL_0;
- HAL_FLASH_Unlock();
- HAL_FLASH_OB_Unlock();
- HAL_FLASHEx_OBProgram(&OBInit);
- HAL_FLASH_OB_Lock();
- HAL_FLASH_Lock();
- }
- __HAL_FLASH_PREFETCH_BUFFER_ENABLE();
- }
复制代码
|
|