普冉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仿真功能,使用上位机下载芯片数据后,就可以一边调试一边恢复(而且还不需要接复位脚),不用担心调试过程中烧录不了了

  • 8
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

鲜衣怒马少年时'''

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值