|
本帖最后由 yangpeng012 于 2020-8-6 20:46 编辑
下面是设置读保护的代码,设置后读出来验证是没问题的,但是实际上下一次重启(软件重启、硬件重启),或者断电重启都无效。。。
- int FLASH_SetRDP(uint8_t level)
- {
- FLASH_OBProgramInitTypeDef OBInit;
- if (level == OB_RDP_LEVEL_2) {
- return -1;
- }
-
-
- __HAL_FLASH_PREFETCH_BUFFER_DISABLE();
- printf("\n==> 0x%08x\n", (*(__IO uint32_t*)(OPTCR_BYTE0_ADDRESS)));
- HAL_FLASHEx_OBGetConfig(&OBInit);
- if(OBInit.RDPLevel == OB_RDP_LEVEL_0 && level == OB_RDP_LEVEL_1)
- {
- printf("set RDP to %02x\n", OB_RDP_LEVEL_1);
- OBInit.OptionType = OPTIONBYTE_RDP;
- OBInit.RDPLevel = OB_RDP_LEVEL_1;
-
- HAL_FLASH_Unlock();
- HAL_FLASH_OB_Unlock();
-
- //Flash interface register: 0x40023C00 - 0x40023FFF
- HAL_FLASHEx_OBProgram(&OBInit);
-
- HAL_FLASH_OB_Lock();
- HAL_FLASH_Lock();
- } else {
- printf("RDP Level already: 0x%02x\n", OBInit.RDPLevel);
- }
-
- __HAL_FLASH_PREFETCH_BUFFER_ENABLE();
-
- return 0;
- }
复制代码 |
本帖子中包含更多资源
您需要 登录 才可以下载或查看,没有帐号?注册
x
阿莫论坛20周年了!感谢大家的支持与爱护!!
一只鸟敢站在脆弱的枝条上歇脚,它依仗的不是枝条不会断,而是自己有翅膀,会飞。
|