关于解除stm32读/写保护(level1) 以我手上板子型号为stm32f103c8t6烧录器为st-link2为例就刚才我使用ai进行linux与stm32进行can通信通过keil5烧录开发将ai生成的代码烧录进去后发现后续再烧录会出现错误我一开始以为是电脑识别问题或者板子烧毁后面再问ai说有可能是出现读写保护废话不多说,下面讲解解除读写保护但是先警告解除读写保护将会清除板子上原有程序算法上几乎等于恢复出厂设置首先要去下载STM32 ST-LINK UtilitySTSW-LINK004 |软件- 意法半导体https://www.st.com/en/development-tools/stsw-link004.html下载的时候如果你想注册账户需要在一分钟内注册完成接下来进入软件这里先将软件与板子连接连接过程要按住reset键不松手按住stm32板子的reset键等待三秒再点击上方的插口连接图标再等待三秒后松开reset键就会连接到板子如果显示这些有反应说明是进入读写保护否则板子真的可能是烧毁或者连接不良接下来点击上方的target再点击option bytes接下来弹出这个窗口enable是开启保护disable是关闭保护我们要先开启保护再关闭保护这里我先选择enable开启保护下方是flash保护的内存如果不懂就直接选unselect all(其实我也不懂)再点击apply这样子板子就开启了读写保护状态这里显示更新成功说明完全进入了读写保护状态我们再重复一次target-option bytes,这次选disableunselect allapply这样子我们就已经解除了读写保护了再烧录之前记得将连接断掉:点击上方的target的disconnect就可以断开连接了我们就可以回到keil5重新烧录了!尾言读写保护分三个等级level0无保护任意读写level1读写保护但可逆可以取消读写保护但取消的同时将会擦除flash内存这将会导致原本烧录的程序消失level2读写保护不可逆意思是只能用你的板子了别人无法通过任何接口程序读到你的程序。或许你有疑惑既然level1已经能够保证别人读不到我的程序了那为什么还有有level2因为虽然level1在解除的同时虽然擦除flash能使别人读不到你的代码但是仍有高手能够读取到你的寄存器这些敏感的数据所以说level2还是有存在的必要的目前有资料说stm32f103c8t6型号板子没有level2保护这仍是有争议的但是现实中确实无法造成这种型号的level2保护还有一个你可能对于解除读写保护有疑问为什么第一次要选择enable后面再选择disable这不是多此一举吗我已经试过了如果第一次就选disable将会出现错误无法解开保护。以我的实战经历猜测一开始烧录的时候进入读写保护我认为进入的状态介于无保护和保护之间的。我们都知道一开始显示的就是板子当前的状态那么我一开始进入到界面中为什么显示的是disable这说明板子当前是无保护状态吗但是以烧录的情况来看确确实实是进入了保护状态的所以我才认为进入的状态是介于无保护和保护之间的。所以我进一步猜测软件开发人员有可能设置了这样的算法if(goal_statecurrent_state{throw...catch}