STM32G0复位后死机

发布者:Jinyu521最新更新时间:2023-10-04 来源: elecfans关键字:STM32G0  复位  死机 手机看文章 扫描二维码
随时随地手机看文章

引言

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


问题描述

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

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

准备测试代码 App1 和 App2:

2c535562-a535-11ec-952b-dac502259ad0.png

2c66dfe2-a535-11ec-952b-dac502259ad0.png

2.2. 问题复现步骤

操作步骤

(1) 在 STM32CubeProgrammer 中下载

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

2c7c134e-a535-11ec-952b-dac502259ad0.png

2c9731f6-a535-11ec-952b-dac502259ad0.png

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

2cb1cb74-a535-11ec-952b-dac502259ad0.png

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

2cce2f3a-a535-11ec-952b-dac502259ad0.png

2ce82854-a535-11ec-952b-dac502259ad0.png

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

问题解决

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

2d1bb16a-a535-11ec-952b-dac502259ad0.png

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

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

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

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

2d368288-a535-11ec-952b-dac502259ad0.png

小结

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


关键字:STM32G0  复位  死机 引用地址:STM32G0复位后死机

上一篇:基于STM32的printf串口数据输出
下一篇:STM32中使用快速编程时有哪些需要注意的地方

推荐阅读最新更新时间:2024-11-10 11:44

MSP430教程8:MSP430单片机复位电路
从上MSP430系统复位电路功能模块图中可以看到了两个复位信号,一个是上电复位信号POR(Power On Reset)和上电清除信号PUC(Power Up Clear)。 POR信号是器件的复位信号,此信号只有在以下的事件发生时才会产生: 器件上电时。 RST/NMI引脚配置为复位模式,当RST/NMI引脚生产低电平时。 当POR信号产生时,必然会产生PUC信号;而PUC信号的产生时不会产生POR信号。会引起产生PUC信号的事件: POR信号发生时。 启动看门狗时,看门狗定时器计满时。 向看门狗写入错误的安全参数值时。 向片内FLASH写入错误的安全参数值时。 MSP430单片机系统复位
[单片机]
lpc1114看门狗_复位
为了简单的展示一下不喂狗引起复位的效果。我们让单片机给间隔一定时间给串口发送递增的数据,发送一次数据,喂一次狗,两次发送数据的时间小于喂狗要求的最大时间,程序将正常执行,在串口调试助手上,将看到它收到了逐渐递增的数据。然后故意把喂狗的程序隐掉,重新下载程序后,在串口调试助手上,将看到当串口接收的数据递增到某个值时,又重新开始,说明没有及时喂狗造成了单片机复位。 新建一个工程,文件结构如下图所示: uart.c文件的介绍,请看第三章内容。 在main.c文件中,输入以下代码: #include “lpc11xx.h” #include “wdt.h” #include “uart.h” void delay(void
[单片机]
lpc1114看门狗_<font color='red'>复位</font>
MCU 是如何从上电复位运行到 main 函数的?
前言 在笔者的上一篇文章中《中断服务子程序是如何被执行的》,详细阐述了中断响应以及执行的整个过程,其中涉及到关于中断向量表的相关知识,本篇文章再次以中断向量表为出发点阐述上电复位的整个过程。 复位的相关概念 复位就类似于我们的个人 PC 重启一样,又比 PC 的重启要简单一些。引起复位的原因也是多种多样,笔者在这里大致列出以下几种: 上电复位,也就是我们给我们的 MCU 通电后,其实也是一次复位的过程。 外部产生的手动复位信号,这个也比较常见,我们在平时学习所使用的开发板中就存在一个复位的按键,来实现手动的复位信号。 执行复位指令引发的复位 看门狗复位 。。。。。。 上述所示的复位虽然引起复位的原因各不相同,但是其复位的过
[单片机]
MCU 是如何从上电<font color='red'>复位</font>运行到 main 函数的?
有了看门狗就不会死机?
死机是指CPU的程序指针进入一个死循环,无法执行正常的程序流程。其外在表现常常是:正常功能丧失,按键无响应,显示凝固。单片机死机后,只有复全才能走出死循环,执行正常的程序流程。众所属知,克服死机的最有效手段是加看门狗(WatchDog)。 目前用得最广泛的看门狗实际上是一个特殊的定时器DogTimer。DogTimer按固定速率计时,计满预定时间就发出溢出脉冲使单片机复位。如果每次在DogTimer溢出前强行让DogTimer清零,就不会发出溢出脉冲。清零脉冲由CPU发出,在单片机程序中每隔一段语句放一个清DogTimer的语句 FeedDog语句,以保证程序正常运行时DogTimer不会溢出。一旦程序进入一个不含FeedDog语
[单片机]
MDK下怎样才能让变量在复位时不被初始化
最近一个项目需要保存一下临时数据,而产品容易受干扰而复位。所以需要保存一下数据,那么只有在系统复位时候不再初始化变量即可。对应MDK(keil)来说是一个比较麻烦的问题。通过网络上找了大量资料和测试发现终于可以了。 如果要实现以上要求,必须设置两点,缺一不可: 1. 在MDK的选项中设置如下: 2. 必须在程序代码中如下编写: #define __noinit__ __attribute__((zero_init)) // 变量不初始化为0 __noinit__ int tmp; // 变量前加上宏__noinit__ 当然也可以直接: __attrib
[单片机]
MDK下怎样才能让变量在<font color='red'>复位</font>时不被初始化
如何用外设复位修改只读寄存器
有STM32开发者用到STM32F429芯片开发产品,并用到其中的CAN外设。在CAN应用过程中有个专门针对收发出错情况进行次数统计的两个计数器,其值通过错误状态寄存器CAN_ESR中的REC[7:0]和TEC[7:0]两个字段来体现,CAN硬件会根据错误数据大小做适当响应或处理。 根据寄存器描述得知,TEC[7:0]和REC[7:0]的值在这个寄存器里面是只读的。而此时的STM32用户有个强烈的需求,就是期望能适时地对这两个出错记录字段做清零。他自己也尝试编写一些代码想让二者清零,均以失败告终,便邮件咨询有无解决办法。 我们在阅读CAN_ESR寄存器内容时倒有个发现,即该寄存器的复位值是0x00000000。 也就是说
[单片机]
如何用外设<font color='red'>复位</font>修改只读寄存器
5x系列芯片的复位入口问题
5x系列芯片的复位入口问题 有关5x系列的复位入口位于可用程序空间的最高地址 , 在那里写上一条GOTO MAIN让程序跳到主程序入口。如: ORG PIC16C54 GOTO MAIN 这些都没有错误。很多书上也是这么写的。 其实,你可以根本不用管5x系列复位入口的不同,所有程序都从000位置开始写。以57为例,其复位地址是7FFH,空片时此处为FFF,对应指令是 xorlw 0xff ,当这条指令执行后,PC加一,为8000H?不是,PC变成000H,在57中PC只有11位长。类似的,所有5x系列在复位后于程序空间最高处执行一条无关紧要的指令后,回到000处继续执行。 为什么推荐大家这么做?主要是在一些有片上内部RC振荡的
[单片机]
解析单片机的几种复位电路
在单片机的使用中,经常会接触到复位电路,它是单片机最小系统重要的一个构成部分。同样它也是非常重要的一部分。 复位就是让单片机从初始化状态开始重新运行,即程序从头开始执行。复位电路设计的好坏,直接影响整个系统是否稳定可靠。复位电路与单片机的RESET/NRST引脚相连,拿STM32系列单片机举例,当系统正常工作时,如果RESET引脚电压低于某一阈值,则单片机进入复位状态。单片机的复位可分为低电平复位和高电平复位,这是由厂家决定的,区分的方式可以看数据手册,手册中的复位章节会写清楚是什么电平复位。单片机的复位可以分为:上电复位、掉电复位、软件复位、外部手动复位等。 上电复位:单片机每次上电都会给RESET脚一个复位信号,让单片
[单片机]
解析单片机的几种<font color='red'>复位</font>电路

推荐帖子

射频能量采集技术新发展(感觉和低功耗应用相关)
看到一篇文章,转一下,设计版权问题吧,只贴链接,大家感兴趣的可以看看,注意有第二页:http://www.ed-china.com/ART_8800044607_400020_500009_TS_0dc4b36b.HTM之所以发在这里,是因为之前一段时间,我曾经想到过一下使用超级电容和小太阳能电池板做低功耗时钟的电源,我前一段时间已经用捡到的那种一种遮阳帽子上靠太阳能驱动一个小电机风扇的小太阳能电池板(穷人,大家不要见笑,我经常捡一些人家丢弃的电子垃圾回来以后拆器件用)带动过用Launc
wangfuchong 微控制器 MCU
关于驱动程序的徽标认证
各位大大我写了个驱动程序,想研究一下如何通过Windows的徽标认证,所以就去载了WLK用于测试以前微软提供的是HCT测试工具,通过它的测试,就可以提交给微软进行认证。但是现在说是统一改为WLK工具包了,不知道大大们对此有何见解?我载了一个WLK,但是无法安装,我的系统是XP的(正版)请大大们有弄过这个东西的教教我,谢谢啊分不够可以加关于驱动程序的徽标认证我只做过签名,要加徽标好象要不少钱的。1楼大大,那你知道WLK,或者之前的HCT么?能不能介绍介绍?谢谢WLK是Win
chinapres 嵌入式系统
寻ZigBee和GPRS兼职开发人员
因公司项目需要,现招聘一名ZigBee和GPRS兼职开发人员。要求:1、使用过CC2430和任意一款的GPRS模块做过2到3个项目。2、要求人在北京。如有兴趣的朋友请将您的简历发到:dongfangrenli01@163.com或加QQ:1319565062薪资优厚寻ZigBee和GPRS兼职开发人员
dongfanghanke RF/无线
在开发板上实现用户登录验证应该怎么做?
我现在在PAX270的板子使用linux2.6+BOA服务器,让远程的用户登录到板子上查看视频抓来的图片,其中有一些页面必须是具备一定权限的人才可以查看,不知道我怎么实现用户登录验证(即登录认证后的用户才可以访问相应的网页)?本人实在很笨,对嵌入式很不懂却偏偏学了这个。哪位大侠可以给我提供相应的代码和资料啊!在开发板上实现用户登录验证应该怎么做?
我上一谁呢 嵌入式系统
#晒一晒# 你都已用过了哪些传感器?有哪些是国产的?
如题,如题,这传感器的大千世界你实际拿捏过哪些传感器?有哪些是国产芯的?在使用中遇到的坑、难题、挑战有哪些还对哪些传感器比较有兴趣去玩玩欢迎来跟帖分享~#晒一晒#你都已用过了哪些传感器?有哪些是国产的?这也太多了,温湿度,压力,超声波,差压,CO2,氧气,NO,红外等等,那个工程师都弄个很多 温湿度SHT30,气体传感器不记得型号了,PM2.5用的攀藤的。红外接收头发送头,具体型号不记得了。反正是国产的。。。热电偶传感器什么m
nmg 国产芯片交流
电源设计必须注意的64个细节
1.变压器图纸、PCB、原理图这三者的变压器飞线位号需一致。理由:安规认证要求这是很多工程师在申请安规认证提交资料时会犯的一个毛病。2.X电容的泄放电阻需放两组。理由:UL62368、CCC认证要求断开一组电阻再测试X电容的残留电压很多新手会犯的一个错误,修正的办法只能重新改PCBLayout,浪费自己和采购打样的时间。3.变压器飞线的PCB孔径需考虑到最大飞线直径,必要时预留两组一大一小的PCB孔。
木犯001号 电源技术
小广播
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件
随便看看

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved