你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

在使用STM32H7系列芯片时,在用户代码内增加了开启读保护的代码,有设置了通过指令触发解除读保护的代码,再触发解除读保护指令后,使用ST-link查看读保护未

[复制链接]
huiyi 提问时间:2023-6-1 10:29 / 未解决

接触读保护的代码如下:

void Flash_DisableReadProtection(void)

{ FLASH_OBProgramInitTypeDef OBInit;

HAL_FLASHEx_OBGetConfig(&OBInit);

if(OBInit.RDPLevel == OB_RDP_LEVEL_1)

{ OBInit.OptionType = OPTIONBYTE_RDP;

OBInit.RDPLevel = OB_RDP_LEVEL_0;

// OBInit.WRPState = OB_WRPSTATE_DISABLE;

HAL_FLASH_Unlock(); HAL_FLASH_OB_Unlock(); if(HAL_FLASHEx_OBProgram(&OBInit)!=HAL_OK)

{

HAL_FLASH_OB_Launch();

HAL_FLASH_OB_Lock();

HAL_FLASH_Lock();

return; }

HAL_FLASH_OB_Launch();

HAL_FLASH_OB_Lock();

HAL_FLASH_Lock(); }

return; }各位帮忙看看什么问题

收藏 评论3 发布时间:2023-6-1 10:29

举报

3个回答
butterflyspring 回答时间:2023-6-1 11:08:24
一般来说,RDP LEVE1 改到 RDP LEVE0 会引起芯片擦除
Stm32 h7 RDP to level0.PNG
huiyi 回答时间:2023-6-1 11:33:42

butterflyspring 发表于 2023-6-1 11:08
一般来说,RDP LEVE1 改到 RDP LEVE0 会引起芯片擦除

RDP_LEVE1改到RDP_LEVE0会全片擦除,这个我也通过手册了解了。但是在通过这个代码后,用ST-link查看时,读保护没有解除,这可能是什么原因导致?

xmshao 回答时间:2023-6-1 12:01:23
通过用户代码开启RDP保护功能正常操作,但在代码里做读保护解除就有点另类了。


你通过用户代码来解除读保护 导致用户代码都完蛋了,解除的意义是什么呢?


毕竟读保护对用户自身代码是没有妨碍的。


你现在是好奇或纠结的是为何代码里做过解除操作后仍是读保护状态,这个不好说。


个人观点是或不是读保护状态 已经不重要了。可能是因为用户代码只运行一部分


就被干掉了。下面部分来自H7系列参考手册的文字供你参考。


When Level 1 is active, programming the protection option byte (RDP) to Level 0causes the Flash memory and the backup SRAM to be mass-erased. As a result the
user code area is cleared before the read protection is removed.
关于意法半导体
我们是谁
投资者关系
意法半导体可持续发展举措
创新和工艺
招聘信息
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
关注我们
st-img 微信公众号
st-img 手机版