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进入低功耗了:
好了,今天的内容就这些,如果还没有学废,那就评论区聊聊吧~记得点赞收藏加关注

数字远传压力表的特点及注意事项
益莱储专注于创新服务,解决物联网测试的五大挑战
中端机种将成主战场 中小尺寸TDDI IC需求强劲
雷军卸任小米董事职位 小米12 Ultra发布时间首曝
一文介绍RTX 3060的规格
GD32 MCU进入低功耗模式导致无法再进行程序下载怎么办?
太阳能电池板单晶好还是多晶好,都有什么特点_太阳能板单晶和多晶区别在哪里
基于GPRS/GSM网络实现交通诱导系统的设计
长江存储推出消费级固态硬盘_致钛ZHITAI
便携式钻孔测斜仪采集仪测量原理与测斜探头的连接及使用方法
苹果iMac安装Windows XP系统步骤
11月1日 联想首款Tango智能机Phab 2 Pro出货
一种简便的PLC通讯方式控制变频器的方法
基于verilog的浮点乘法器实现
Google DevFest 2021广州国际嘉年华成功举办
在Linux中如何查找软件包版本
芯片巨头AMD遭遇“滑铁卢”之痛
有效管理孩子游戏时长 只需开启华为P10学生模式
支付宝在今年第三季度移动支付市场的份额中占比达到了53.58%排列第一
魅族16 Plus渲染图曝光:6.5英寸大屏幕,颜值颇高