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
    +关注

    关注

    2240

    文章

    10675

    浏览量

    348866
  • 死机
    +关注

    关注

    0

    文章

    13

    浏览量

    8563
  • 复位
    +关注

    关注

    0

    文章

    159

    浏览量

    24047
收藏 人收藏

    评论

    相关推荐

    stm32g0外部晶振不工作的原因?

    stm32g0外部晶振不工作 使用cubemx,如果配置成外部8M,pll设置为64M,示波器观察有波形,程序却无法运行,使用内部晶振,配置为64M,无问题,不知道怎么解决了。 具体型号stm32g070rb
    发表于 03-29 07:27

    STM32F0的SPL库能在STM32G0上用吗?

    原来用的STM32F0系列,使用的V3.5.0的标准外设库。现在改用STM32G0系列,发现官网提供的固件库是STM32CubeG0,里面是HAL和LL库。为了节省开发时间,想还是用SPL库,有对应的SPL吗?
    发表于 04-08 08:29

    工程师实战经验笔记STM32F0的USART自动识别问题

    本文来自ST工程师实战经验笔记,供大家参考,希望对大家STM32开发有帮助一.前言 某客户用 STM32F051的芯片做了一个自动波特率的实验(代码是仿照 ST库里面的例子写的),用串
    发表于 11-22 14:47

    意法STM32G0 系列简介及资料手册!

    全新的STM32G0系列不仅仅是另一种Arm®Cortex®-M0+微控制器。它为高效微控制器必须具备的功能设定了新的定义。这一切都是关于最优化设计,通过详细的各种细节设置,帮您以最小的BOM成本
    发表于 09-02 15:58

    STM32G0系列为什么能够减少客户的BOM成本?

    STM32G0系列为什么能够减少客户的BOM成本?STM32G0有哪几种低功耗工作模式?
    发表于 07-01 09:47

    STM32G0学习手册

    STM32G0学习手册,(WWDG)用于检测软件故障的发生,通常由外部干扰或无法预料的逻辑条件引起,导致应用程序放弃其正常顺序。 看门狗电路会在编程的时间段到期时生成MCU复位,除非程序在T6位清零
    发表于 08-10 07:52

    如何去实现一种基于STM32G0的按键控制LED亮灭设计

    STM32 NUCLEO-G071RB开发板有何功能?如何去实现一种基于STM32G0的按键控制LED亮灭设计?
    发表于 10-08 06:57

    怎样使用STM32G0芯片自带的HSI时钟去新建一种CubeMX工程

    怎样使用STM32G0芯片自带的HSI时钟去新建一种CubeMX工程呢?有哪些步骤?
    发表于 11-25 08:28

    STM32G0系列芯片的启动配置相关内容详细描述

    重要的一点,这篇文章将对 STM32G0 系列芯片的启动配置与程序下载做个简单的说明。启动配置STM32G0系列芯片的启动配置相关内容在官方文档《AN5096:Getting started with STM32G0 Serie
    发表于 12-10 07:03

    STM32Cube的STM32G0系列AzureRRTOS软件扩展

    X-CUBE-AZRTOS-G0 STM32Cube扩展包在STM32G0微控制器上运行,基于Arm® Cortex®处理器。
    发表于 11-25 07:32

    使用UART闪存STM32G0系列微控制器的方法是什么

    大家好,STM32L0 系列微控制器通过 UART 闪存,但 STM32G0 系列微控制器不是能够通过 UART 闪烁。所以问题是“使用 UART 闪存 STM32G0 系列微控制器的方法是什么”
    发表于 12-21 06:02

    如何使用STM32G0内置的引导加载程序来刷新Flash Loader Demo GUI设备呢?

    我们正在开始移植到 STM32G0 系列,我知道它们有一个内置的引导加载程序。我能够使用 Flash Loader Demo GUI 进入并激活引导加载程序。但是,当我进入选择 MCU 的步骤时,该
    发表于 01-06 07:18

    STM32G0系列安全手册

    本文档描述如何在安全相关系统的背景下使用 STM32G0 Series 微控制器,并指定了为达到目标安全完整性等级,用户需承担的安装和操作责任。本手册适用于 STM32G0 Series 微控制器
    发表于 09-07 06:51

    STM32G0驱动无刷电机有库吗?

    STM32G0驱动无刷电机,有库么
    发表于 09-22 06:04

    STM32G0复位死机

    有客户反映,STM32G071RBT6 在使用 STM32CubeProgrammer 烧录完程序后只能运行一次,复位后,程序无法运行,如果掉电后重新上电,程序恢复正常。
    的头像 发表于 03-17 10:56 6663次阅读