0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

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

聚沃科技 2024-01-12 09:41 次阅读

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

wKgaomWgmE2Aefg_AABJMobNAdg143.png

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

wKgaomWgmFKAYQv9AAAVvPvOHgk731.png

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

方法一:

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

wKgZomWgmFiAGvg0AABXA7HXDfo744.png

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

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

wKgZomWgmF2AaS2bAABlx9iSmiI523.png

wKgaomWgmGKAHQypAANHdJpDaI8473.png

wKgZomWgmGeAarAjAAAgwlDV88E294.png

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

方法二:

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

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

一些建议:

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

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

wKgaomWgmGyAG0VhAADLqpfLhnA375.png

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

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 单片机
    +关注

    关注

    6035

    文章

    44554

    浏览量

    634652
  • mcu
    mcu
    +关注

    关注

    146

    文章

    17123

    浏览量

    350992
  • GD32
    +关注

    关注

    7

    文章

    403

    浏览量

    24328
收藏 人收藏

    评论

    相关推荐

    GD32 MCU入门教程】GD32 MCU GPIO 结构与使用注意事项

    本文是专门为基于GD32 MCU开发的工程设计人员提供,主要介绍了GPIO的功能配置、内部结构以及在不同场景使用时的注意事项,旨在帮助GD32 MCU开发者优化对通用型输入输出端口(G
    的头像 发表于 09-07 10:34 722次阅读
    【<b class='flag-5'>GD32</b> <b class='flag-5'>MCU</b>入门教程】<b class='flag-5'>GD32</b> <b class='flag-5'>MCU</b> GPIO 结构与使用注意事项

    GD32 MCU 入门教程】GD32 MCU FPU 使用方法

    GD32 MCU FPU 使用方法
    的头像 发表于 08-25 09:24 573次阅读
    【<b class='flag-5'>GD32</b> <b class='flag-5'>MCU</b> 入门教程】<b class='flag-5'>GD32</b> <b class='flag-5'>MCU</b> FPU 使用方法

    GD32 MCU 入门教程】GD32 MCU 常见外设介绍(14)RTC 模块介绍

    GD32 MCU内部提供了一个RTC(实时时钟)模块,通过RTC可以实现日历时钟、闹钟等功能。RTC也可以用于深度睡眠或待机模式低功耗唤醒。不同系列的
    的头像 发表于 08-23 09:18 455次阅读
    【<b class='flag-5'>GD32</b> <b class='flag-5'>MCU</b> 入门教程】<b class='flag-5'>GD32</b> <b class='flag-5'>MCU</b> 常见外设介绍(14)RTC 模块介绍

    GD32 MCU 入门教程】GD32 MCU 常见外设介绍(12)FMC 模块介绍

    闪存控制器(FMC),提供了片上闪存需要的所有功能。FMC 也提供了页擦除,整片擦除,以及32 位整字或 16 位半字编程闪存等操作。 GD32 MCU 支持不同类型编程的具体说明如下表 GD32
    的头像 发表于 08-21 09:56 1097次阅读
    <b class='flag-5'>GD32</b> <b class='flag-5'>MCU</b> 入门教程】<b class='flag-5'>GD32</b> <b class='flag-5'>MCU</b> 常见外设介绍(12)FMC 模块介绍

    GD32 MCU 入门教程】二、GD32 MCU 烧录说明 (2)SWD/JTAG在线下载

    GD32系列MCU支持SWD和JTAG(部分型号不支持)接口进行下载调试,这些功能通过ARM CoreSight组件的标准配置和链状连接的TAP控制器来实现的。调试和跟踪功能集成在AR
    的头像 发表于 08-08 17:34 669次阅读
    【<b class='flag-5'>GD32</b> <b class='flag-5'>MCU</b> 入门教程】二、<b class='flag-5'>GD32</b> <b class='flag-5'>MCU</b> 烧录说明 (2)SWD/JTAG在线<b class='flag-5'>下载</b>

    GD32 MCU 入门教程】二、GD32 MCU 烧录说明(1)ISP 烧录

    ISP:In System Programing,在系统编程,通过MCU片内的引导程序进行Flash编程。 GD32片内有一个只读信息块,用于存放引导装载
    的头像 发表于 08-08 16:20 883次阅读
    【<b class='flag-5'>GD32</b> <b class='flag-5'>MCU</b> 入门教程】二、<b class='flag-5'>GD32</b> <b class='flag-5'>MCU</b> 烧录说明(1)ISP 烧录

    GD32F303无法进入低功耗模式的原因?怎么解决?

    ) { pmu_wakeup_pin_enable(); pmu_to_standbymode(WFI_CMD); } 直接执行GD32的库函数进入低功耗模式,会失败,形式为按下唤
    发表于 07-09 06:29

    如何排查GD32 MCU复位是由哪个复位源导致的?

    上期为大家讲解了GD32 MCU复位包括电源复位和系统复位,其中系统复位还包括独立看门狗复位、内核软复位、窗口看门狗复位等,在一个GD32系统中,如果莫名其妙产生了MCU复位,如何排查
    的头像 发表于 02-03 09:46 1728次阅读
    如何排查<b class='flag-5'>GD32</b> <b class='flag-5'>MCU</b>复位是由哪个复位源<b class='flag-5'>导致</b>的?

    GD32 MCU是如何进入中断函数的

    用过GD32 MCU的小伙伴们都知道,程序是顺序执行的,但当有中断来的时候程序会跳转到中断函数,执行完中断函数后程序又继续回到原来的位置继续
    的头像 发表于 01-30 09:45 1070次阅读
    <b class='flag-5'>GD32</b> <b class='flag-5'>MCU</b>是如何<b class='flag-5'>进入</b>中断函数的

    不同型号的GD32 MCU如何区分?

    大家是否碰到过以下应用场景:同一套软件代码希望跑在不同型号的GD32 MCU中,但有些地方需要根据MCU型号进行调整?或者上位机或其他MCU
    的头像 发表于 01-27 09:32 991次阅读
    不同型号的<b class='flag-5'>GD32</b> <b class='flag-5'>MCU</b>如何区分?

    如何对GD32 MCU进行加密?

    GD32MCU有哪些加密方法呢?大家在平时项目开发的过程中,最后都可能会面临如何对出厂产品的MCU代码进行加密,避免产品流向市场被别人读取复制。下面为大家介绍GD32MCU所支持的几种
    的头像 发表于 01-20 09:30 1487次阅读
    如何对<b class='flag-5'>GD32</b> <b class='flag-5'>MCU</b><b class='flag-5'>进行</b>加密?

    GD32 MCU的选项字节是什么?

    GD32 MCU的选项字节是什么,有什么功能呢?选项字节被误篡改如何回复?
    的头像 发表于 01-17 09:42 1358次阅读
    <b class='flag-5'>GD32</b> <b class='flag-5'>MCU</b>的选项字节是什么?

    GD32F303 低功耗模式要点

    我们都知道,MCU低功耗模式,比如GD32F303芯片,就有Sleep、Deepsleep和Standby三种模式。关于这三种
    的头像 发表于 01-17 09:40 2498次阅读
    <b class='flag-5'>GD</b>32F303 <b class='flag-5'>低功耗</b><b class='flag-5'>模式</b>要点

    你了解GD32 MCU的命名规则吗

    下面为大家介绍GD32 MCU的通用命名规则,以GD32F303ZGT6为例,其中,GD32代表GD32
    的头像 发表于 01-13 09:38 3627次阅读
    你了解<b class='flag-5'>GD32</b> <b class='flag-5'>MCU</b>的命名规则吗

    GD32 MCU进入低功耗模式导致无法再进行程序下载怎么办?#单片机 #单片机开发

    单片机mcu嵌入式
    聚沃科技
    发布于 :2024年01月12日 09:47:39