GD32 MCU进入低功耗模式导致无法再进行程序下载怎么办?

很多朋友在调试GD32 MCU的低功耗模式时会遇到一个问题:程序中让MCU进入了Sleep、Deepsleep或者Standby模式,之后MCU就无法再下载程序了。这是因为在低功耗模式下,MCU的SW口和JTAG口是无法访问的。比如下面的程序就会导致该问题发生:

该main函数中第一步是打开PMU时钟,然后马上让MCU进入Deepsleep模式,当你想要再次下载程序时,IDE会有如下错误提示(不同IDE报错不同):

遇到这种情况怎么办呢?难道只能重新换一颗芯片了?不不不,其实有方法解决这个问题的。

方法一:

GD32 MCU的启动模式根据芯片上的BOOT0和BOOT1脚是可以选择三种模式:

一般情况下,BOOT0需要接地,也就是程序是从主Flash启动的,即从用户代码区启动,此时代码会运行到进入Deepsleep的语句。如果将BOOT0拉高,再重新上电MCU,此时程序会从出厂引导装载程序(ISP)或者片上SRAM运行,这样就不会运行用户代码,也就不会再让MCU进入低功耗了,此时通过IDE的全片擦除功能将Flash中的程序擦除掉,再将BOOT0恢复为低并重新上电后,就可以重新下载程序啦。

以聚沃东方红开发板为例:

只需要将上图中方框处的两个排针用跳线帽短接,再将Flash擦除即可。

方法二:

如果板子上的BOOT0不好再接高怎么办呢?不妨试试下面的办法:

将MCU的NRST脚和仿真器的NRST脚相连,这样在重新下载程序时,仿真器会先拉低NRST脚让MCU复位,再在很短的时间内进行程序下载。但这种办法不是每次都有效,这取决于是仿真器先进入下载状态还是MCU先进入低功耗状态。

一些建议:

1、在调试低功耗模式时,可以在main函数之前增加几秒钟的延时,这样在复位MCU后,在MCU进入低功耗前,你可以有足够的时间进行新的程序下载;

2、程序中设计算法,让一些条件达到后才让MCU进入低功耗模式,比如按键,这样在复位MCU后,就可以不让MCU进入低功耗了:

好了,今天的内容就这些,如果还没有学废,那就评论区聊聊吧~记得点赞收藏加关注

GD32MCU技术交流群:859440462

更多GD32 MCU相关咨询:https://www.gd32bbs.com/

相关推荐

  1. AMEYA360:兆易创新推出GD32L235系列MCU新品

    2024-06-12 17:12:01       22 阅读

最近更新

  1. TCP协议是安全的吗?

    2024-06-12 17:12:01       16 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2024-06-12 17:12:01       16 阅读
  3. 【Python教程】压缩PDF文件大小

    2024-06-12 17:12:01       15 阅读
  4. 通过文章id递归查询所有评论(xml)

    2024-06-12 17:12:01       18 阅读

热门阅读

  1. Spring Boot 面试热点(一)

    2024-06-12 17:12:01       8 阅读
  2. 初识Docker

    2024-06-12 17:12:01       5 阅读
  3. 记录一个apisix修改后台接口超时时间的方法

    2024-06-12 17:12:01       6 阅读
  4. YOLOv10改进|采用ADown降采样模块有效融合

    2024-06-12 17:12:01       4 阅读
  5. YOLO v5与YOLO v8框图比较

    2024-06-12 17:12:01       9 阅读
  6. 2024年,计算机相关专业还值得选择吗?

    2024-06-12 17:12:01       8 阅读
  7. 22.正则化

    2024-06-12 17:12:01       3 阅读