普冉MCU单片机PY32烧录程序后无法再次烧录的解决方案

使用PY32开发过程中,经常会一不小心把烧录脚配置成其他模式,这时想要再次烧录就提示swd口无法识别到了,这时候有几种解决方式,一种是在程序一开始加几秒延时,后面每次烧录都要重新上电,在他跑到配置IO程序之前把新程序重新烧录进去,但是这样每次都要插拔供电口,比较麻烦,而且如果此时已经烧录进去的程序没加延时,就无法再次烧录了

除了烧录脚复用了,还有其他情况可能也会使MCU烧录不了,比如程序中进入了stop/sleep低功耗模式,MCU配置了读保护等都有可能,这时候其实 也有其他办法。

就是先完全断掉MCU的电源,再重新上电,在MCU跑到用户程序之前,使用SWD接口时序对MCU进行复位并Halt CPU。这主要是使CPU和外围设备进入已知状态,并禁止CPU在编写程序时意外运行部分代码。

具体操作步骤如下:

a)Write 0xA05F0001 to DHCSR, which halting debug enabled.

b)Write 0x01 to DEMCR. This enable Reset Vector Catch.

c)Write 0xFA050004 to AIRCR. This reset the core.

现在,内核将在第一条指令时暂停,所有外围设备和寄存器(调试寄存器除外)都将设置为复位值

暂停MCU内核后,这时如果擦除MCU的程序,恢复默认option选项字节(清楚读保护之类的),就可以实现重新烧录程序了,下面这个工具也就实现了这个流程,并加入了DAP仿真功能,使用上位机下载芯片数据后,就可以一边调试一边恢复(而且还不需要接复位脚),不用担心调试过程中烧录不了了

作者:鲜衣怒马少年时\’\’\’

物联沃分享整理
物联沃-IOTWORD物联网 » 普冉MCU单片机PY32烧录程序后无法再次烧录的解决方案

发表回复