OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 4359|回复: 2

STM32F103 HAL库 读保护功能

[复制链接]

1

主题

23

帖子

0

精华

初级会员

Rank: 2

积分
123
金钱
123
注册时间
2018-5-9
在线时间
22 小时
发表于 2018-9-7 14:57:42 | 显示全部楼层 |阅读模式
本帖最后由 killalljp 于 2020-12-11 14:11 编辑

最近在用HAL库给STM32F103 MCU增加程序读保护功能,在网上找了一些代码,多多少少都有些问题,后来问题解决了。
分享已测试过代码,也请大家指正。

  1. /****************************************************************
  2. * Function:    Flash_EnableReadProtection
  3. * Description: Enable the read protection of user flash area.
  4. * Input:       NONE
  5. * Output:      NONE
  6. * Return:      NONE
  7. *****************************************************************/

  8. void Flash_EnableReadProtection(void)
  9. {

  10.   FLASH_OBProgramInitTypeDef OBInit;
  11.   
  12.   __HAL_FLASH_PREFETCH_BUFFER_DISABLE();
  13.   
  14.   HAL_FLASHEx_OBGetConfig(&OBInit);
  15.   if(OBInit.RDPLevel == OB_RDP_LEVEL_0)
  16.   {
  17.     OBInit.OptionType = OPTIONBYTE_RDP;
  18.     OBInit.RDPLevel = OB_RDP_LEVEL_1;
  19.     HAL_FLASH_Unlock();
  20.     HAL_FLASH_OB_Unlock();
  21.     HAL_FLASHEx_OBProgram(&OBInit);
  22.     HAL_FLASH_OB_Lock();
  23.     HAL_FLASH_Lock();
  24.   }
  25.   __HAL_FLASH_PREFETCH_BUFFER_ENABLE();

  26. }

  27. /****************************************************************
  28. * Function:    Flash_DisableReadProtection
  29. * Description: Disable the read protection of user flash area.
  30. * Input:       NONE
  31. * Output:      NONE
  32. * Return:      NONE
  33. *****************************************************************/
  34. void Flash_DisableReadProtection(void)
  35. {

  36.   FLASH_OBProgramInitTypeDef OBInit;
  37.   
  38.   __HAL_FLASH_PREFETCH_BUFFER_DISABLE();
  39.   
  40.   HAL_FLASHEx_OBGetConfig(&OBInit);
  41.   if(OBInit.RDPLevel == OB_RDP_LEVEL_1)
  42.   {
  43.     OBInit.OptionType = OPTIONBYTE_RDP;
  44.     OBInit.RDPLevel = OB_RDP_LEVEL_0;
  45.     HAL_FLASH_Unlock();
  46.     HAL_FLASH_OB_Unlock();
  47.     HAL_FLASHEx_OBProgram(&OBInit);
  48.     HAL_FLASH_OB_Lock();
  49.     HAL_FLASH_Lock();
  50.   }
  51.   __HAL_FLASH_PREFETCH_BUFFER_ENABLE();

  52. }
复制代码

正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

2

主题

13

帖子

0

精华

初级会员

Rank: 2

积分
160
金钱
160
注册时间
2014-7-25
在线时间
40 小时
发表于 2019-5-14 17:37:11 | 显示全部楼层
这个代码用了后,stlink还是可以读出来
回复 支持 反对

使用道具 举报

1

主题

23

帖子

0

精华

初级会员

Rank: 2

积分
123
金钱
123
注册时间
2018-5-9
在线时间
22 小时
 楼主| 发表于 2020-12-11 14:04:53 | 显示全部楼层
ajunbin859 发表于 2019-5-14 17:37
这个代码用了后,stlink还是可以读出来

要重新上下电一次
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-6-23 20:11

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表