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

STM32G071中FLASH_CR寄存器中强制选项字节加载位(OBL_LAUNCH)置1,仿真器就连接不了MCU

[复制链接]
whj_1984 提问时间:2021-9-9 14:15 /
使用STM32G071碰到一个问题,好几天了,一直没有找到问题,各位帮忙看下。系统在执行的过程中需要对当前的加密位进行判断,如果没有加密就要进行加密,但是在执行FLASH_CR寄存器中OBL_LAUNCH位置1,仿真器就连接不了MCU。
    HAL_FLASHEx_OBGetConfig(&OBInit);
    if(OBInit.RDPLevel == OB_RDP_LEVEL_0){                      //判断程序是否加密
        OBInit.OptionType = OPTIONBYTE_RDP;
        OBInit.RDPLevel = OB_RDP_LEVEL_1;
        g_OPTR = OBInit.RDPLevel;

        HAL_FLASH_Unlock();
        HAL_FLASH_OB_Unlock();
        HAL_FLASHEx_OBProgram(&OBInit);
        HAL_FLASH_OB_Launch();                             //执行FLASH_CR寄存器中OBL_LAUNCH位置1
    }

收藏 评论4 发布时间:2021-9-9 14:15

举报

4个回答
xmshao 回答时间:2021-9-9 17:49:53
当你设置了读写保护后,会触发芯片的保护机制,此时调试口就会断开与外面的连接,此时就不能进行调试仿真了。这是正常现象
whj_1984 回答时间:2021-9-9 18:00:46
xmshao 发表于 2021-9-9 17:49
当你设置了读写保护后,会触发芯片的保护机制,此时调试口就会断开与外面的连接,此时就不能进行调试仿真了 ...

保护级别2的时候才是断开和仿真器的连接,级别1的时候是没有断开的,可以使用仿真器从级别1调成级别0,并擦除程序代码。STM32F系列的是没有这个问题的。
butterflyspring 回答时间:2021-9-13 10:13:00
whj_1984 发表于 2021-9-9 18:00
保护级别2的时候才是断开和仿真器的连接,级别1的时候是没有断开的,可以使用仿真器从级别1调成级别0,并 ...

当设置了读保护级别1的时候,肯定是禁止调试的,否则读保护级别1就没有了意义了。 但是可以烧录optionbyte的RDP位,以便恢复空片,
whj_1984 回答时间:2021-9-13 16:07:41
butterflyspring 发表于 2021-9-13 10:13
当设置了读保护级别1的时候,肯定是禁止调试的,否则读保护级别1就没有了意义了。 但是可以烧录optionbyt ...

是我之前没有表述清楚,是禁止调试没有错。但是现在的问题是程序改板RDP等级后,STM32CubeProgrammer通过STLINK就找不到目标板,从而改变不了RDP位,不知道是什么问题。
关于意法半导体
我们是谁
投资者关系
意法半导体可持续发展举措
创新和工艺
招聘信息
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
关注我们
st-img 微信公众号
st-img 手机版