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

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

3天内不再提示

工程师笔记 | STM32G0 复位后死机

jf_pJlTbmA9 来源:STM32单片机 作者:STM32单片机 2023-10-17 15:23 次阅读

引言

有客户反映,STM32G071RBT6 在使用 STM32CubeProgrammer 烧录完程序后只能运行一次,复位后,程序无法运行,如果掉电后重新上电,程序恢复正常。

问题描述

根据客户描述,该问题可通过以下步骤复现:

2.1. 测试代码的功能流程图

准备测试代码 App1 和 App2:

“STM32G0

“STM32G0

2.2. 问题复现步骤

操作步骤

(1) 在 STM32CubeProgrammer 中下载

应用程序 App1(如图 3),并设置 RDP=1(如图 4);然后断开 STM32CubeProgrammer 的连接,板子断电后重新上电;

“STM32G0

“STM32G0

(2) 根据 log 提示(如图 5),按下用户按键,板子会在 RDP 降级的过程中,产生全片擦除的动作,等待 10s,确保芯片擦除完成后从板子再断电并重新上电;

“STM32G0

(3) 使用 STM32CubeProgrammer 重新连接板子,在下载界面选中“Run afterprogramming”后,下载应用程序 App2(如图 6),下载完成后,可以看到板子执行闪灯的效果,并从 App2 的 log 信息可知,此时的 empty check 位被置起(如图 7)。

“STM32G0

“STM32G0

(4) 在不断电的情况下,如果直接按下外部复位按钮,程序将出现无法执行的现象。

问题解决

通过问题的复现,我们注意到,程序无法正常运行时,实际进入了内置的 ISP 程序,即内置的 bootloader 程序。为什么会进入 bootloader 呢?在 G0 的参考手册中,我们注意到 empty check 的描述如下:

“STM32G0

这里的描述有两点是很重要的。

A :出厂的芯片,因为是没有程序的空片,empty check 位是被置位的,但实际电路中因 boot 管脚定义的程序从 Main Flash 启动的场景时,程序会由于 empty check 位而强制从内置的 bootloader 启动。

B :empty check 只会在加载 OptionByte 时更新,所以在空片上下载完程序后,应当通过 power on reset 或者手动清除该位,程序才可以正常运行。

我们来验证一下,在复现问题的第(4)步中,如果先按下用户按钮,应用程序 App2会通过软件清除 empty check 位,再通过外部复位按钮,则程序正常运行, 根据 log 信息可以看到 empty check 位被清除(如图 9),且程序运行恢复正常。

“STM32G0

小结

本文描述的问题虽然隐藏的比较深,但规律还是很明显的,只要重新上电即可恢复,说明很可能和 power on reset 有关。在参考手册中搜索 power on reset 关键字,可以很快的找到一些线索。所以分析问题时,要多关注这样的有规律的问题信息。

来源:STM32单片机
免责声明:本文为转载文章,转载此文目的在于传递更多信息,版权归原作者所有。本文所用视频、图片、文字如涉及作品版权问题,请联系小编进行处理


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

    关注

    2270

    文章

    10896

    浏览量

    355787
  • 死机
    +关注

    关注

    0

    文章

    17

    浏览量

    8599
  • 复位
    +关注

    关注

    0

    文章

    171

    浏览量

    24211
收藏 人收藏

    评论

    相关推荐

    关于STM32G0将会在今年爆发吗?

    STM32G0将会在今年爆发吗?
    的头像 发表于 03-04 11:21 4636次阅读

    STM32G0复位死机

    有客户反映,STM32G071RBT6 在使用 STM32CubeProgrammer 烧录完程序只能运行一次,复位,程序无法运行,如果
    的头像 发表于 03-17 10:56 7192次阅读

    AN5096_介绍STM32G0系列硬件开发

    AN5096_介绍STM32G0系列硬件开发
    发表于 11-21 08:11 4次下载
    AN5096_介绍<b class='flag-5'>STM32G0</b>系列硬件开发

    STM32G0学习资料

    STM32G0学习资料
    发表于 11-21 08:11 16次下载
    <b class='flag-5'>STM32G0</b>学习资料

    AN5145_从STM32F0系列迁移到STM32G0系列的应用

    AN5145_从STM32F0系列迁移到STM32G0系列的应用
    发表于 11-21 17:06 17次下载
    AN5145_从<b class='flag-5'>STM32F0</b>系列迁移到<b class='flag-5'>STM32G0</b>系列的应用

    AN5145_从STM32F0系列到 STM32G0 系列的应用移手册

    AN5145_从STM32F0系列到 STM32G0 系列的应用移手册
    发表于 11-21 17:06 13次下载
    AN5145_从<b class='flag-5'>STM32F0</b>系列到 <b class='flag-5'>STM32G0</b> 系列的应用移手册

    PM0223_STM32L0STM32G0单片机编程手册

    PM0223_STM32L0STM32G0单片机编程手册
    发表于 11-24 08:29 13次下载
    PM0223_<b class='flag-5'>STM32L0</b>和<b class='flag-5'>STM32G0</b>单片机编程手册

    STM32G0开发笔记:FreeRTOS和FreeModbus库使用

    使用Platformio平台的libopencm3开发框架来开发STM32G0,以下为FreeRTOS和FreeModbus库使用。
    的头像 发表于 01-16 14:44 5615次阅读
    <b class='flag-5'>STM32G0</b>开发<b class='flag-5'>笔记</b>:FreeRTOS和FreeModbus库使用

    STM32G0开发笔记:FreeRTOS和CLI组件使用

    使用Platformio平台的libopencm3开发框架来开发STM32G0,以下为FreeRTOS和CLI组件使用。
    的头像 发表于 01-16 14:47 3573次阅读
    <b class='flag-5'>STM32G0</b>开发<b class='flag-5'>笔记</b>:FreeRTOS和CLI组件使用

    STM32G0开发笔记:使用FreeRTOS系统

    使用Platformio平台的libopencm3开发框架来开发STM32G0,下面为使用FreeRTOS系统。
    的头像 发表于 01-16 15:07 2407次阅读
    <b class='flag-5'>STM32G0</b>开发<b class='flag-5'>笔记</b>:使用FreeRTOS系统

    STM32G0开发笔记:SPI接口的基本使用

    使用Platformio平台的libopencm3开发框架来开发STM32G0,下面介绍SPI接口的基本使用。
    的头像 发表于 01-17 10:38 3114次阅读
    <b class='flag-5'>STM32G0</b>开发<b class='flag-5'>笔记</b>:SPI接口的基本使用

    STM32G0开发笔记:串口中断的使用

    使用Platformio平台的libopencm3开发框架来开发STM32G0,以下为串口中断的使用。
    的头像 发表于 01-17 10:46 2347次阅读

    STM32G0开发笔记:LED灯示例

    使用Platformio平台的libopencm3开发框架来开发STM32G0,下面为LED灯示例。
    的头像 发表于 01-17 10:52 1415次阅读
    <b class='flag-5'>STM32G0</b>开发<b class='flag-5'>笔记</b>:LED灯示例

    使用platformio平台和Arduino框架开发STM32G0

    使用platformio平台和Arduino框架开发STM32G0,开发环境使用VSCode+PlatformIO插件;
    的头像 发表于 01-17 11:05 3679次阅读
    使用platformio平台和Arduino框架开发<b class='flag-5'>STM32G0</b>

    STM32G0系列安全手册

    电子发烧友网站提供《STM32G0系列安全手册.pdf》资料免费下载
    发表于 07-31 16:25 0次下载
    <b class='flag-5'>STM32G0</b>系列安全手册