stm32处理器调试模式下运行正常,上电自启动后运行不正常

发布者:心语如画最新更新时间:2018-09-11 来源: eefocus关键字:stm32  处理器  调试模式 手机看文章 扫描二维码
随时随地手机看文章

最近负责一个项目,用到stm32f4的一款高性能芯片。研发过程中遇到一个很诡异的现象,前前后后折腾了两三天,最后才搞定。由于是新手,经验不足,排故过程很纠结~~

现象如下:

1.采用JLINK下载程序后,断电让其上电重新启动,发现有时可以正常运行,有时候无法正常运行,大约每两、三次就有一次无法正常上电启动。

2.通过JLINK调试程序,每次均正常运行。太诡异了!

发现问题后开始定位原因。首先考虑是BOOT启动出问题了,stm32f4启动方式分三种:User FLash、SystemFlash和EmbeddedSRAM,通过BOOT0和BOOT1管脚配置。程序正常运行时从User FLash启动,如果BOOT0和BOOT1配置不正确,会导致无法正常运行;而通过JLINK调试程序,程序直接下载到SRAM中运行,不存在此问题。于是,通过万用表测BOOT0和BOOT1管脚电平,都是低电平,没问题!于是,基本排除此原因了。

其次,考虑电源供电不稳定问题。通过万用表测量各个模块电压,发现电压均正常值。那也有可能是系统上电时刻,由于负载变化,导致电压跳变,之后电压又稳定了,所以测量不出来。通过示波器捕捉电压变化,未发现明显的异常跳变。通过万用表测电流为88mA,并不大。初步认为不是电源供电问题导致。

然后,考虑是否是由于复位信号不稳定的原因。板子采用了外置复位芯片,上电后会产生复位信号,此提供给处理器、蓝牙等模块。由于JLINK调试时会自动产生一个复位信号,让系统恢复默认状态,然后程序开始运行,因此调试下程序应该都能正常启动。但是如果程序断电后上电启动,如果复位信号过短或者不稳定,有可能导致无法正常启动了。完美的解释!哈哈,那一瞬间仿佛找到问题所在了。程序无法正常启动时,RESET信号手动接地(给一个低电平脉冲),处理器都开始工作了!这进一步验证了我的推断。于是锁定是复位信号不稳定导致的,开始折腾复位信号,通过示波器观察、隔离复位信号、加滤波电容、换复位芯片等方法进行定位。最后发现复位信号感觉也没有什么问题,真是怪了!纠结~~~~

后来有人建议是不是晶振不稳定。但是,晶振不稳定,调试程序时也应该出现同样现象啊,道理上解释不通啊。无解啊~~~

后来求助同事,他是电子硬件方面的专家。我们几人仔细琢磨了板子的原理图和实验现象后,他突然问你的BOOT0怎么没有接电阻到公共地啊?我说接了吧,之前还用万用表量过电平,是低电平。他说不对啊,就是没接地啊。我才猛地想起来,板子是另外一个同事焊的,交到我手里时说板子已经仔细检查过了,没问题。当时,由于项目紧张,就没有再仔细核实。我再仔细一看,确实没接地,也就是悬空状态!而之前测电压是低电平,有可能是由于下拉电阻的作用。崩溃了!这么粗心,居然没有自己检查。赶紧焊电阻接地,重新上电,发现正常了。测试了三四十次,都是正常的。看来这次真正找到原因了,就是由于BOOT0悬空而导致的。BOOT0悬空时,其状态是不确定的,会导致程序无法从UserFlash中正常启动,就可能出现时好时不好的现象了!哎,原来是这样。终于长嘘了一口气。

问题终于解决了,但是还是有一点无法理解:既然是BOOT0悬空引起的,但是为什么将处理器的RESET信号手动接地(给一个低电平脉冲),处理器又正常运行了?难道是因为再次复位上电重启时,恰好BOOT0又被识别为低电平?RESET信号影响了BOOT0的状态?看来还需要进一步做实验,才能解答此疑惑。


关键字:stm32  处理器  调试模式 引用地址:stm32处理器调试模式下运行正常,上电自启动后运行不正常

上一篇:STM32(Cortex-M3)启动过程+IAR中xcl及icf文件详解
下一篇:STM32F10X_XX宏定义的选择及含义

推荐阅读最新更新时间:2024-03-16 16:13

STM32超声波测距
超声波测距模块是HC-SR04,C-SR04超声波测距模块可提供2cm-400cm的非接触式距离感测功能,测 距精度可达高到3mm;模块包括超声波发射器、接收器与控制电路。 HC-SR04基本工作原理: (1)采用IO口TRIG触发测距,给最少10us的高电平信呈。 (2)模块自动发送8个40khz的方波,自动检测是否有信号返回; (3)有信号返回, 通过IO口ECHO输出一个高电平, 高电平持续的时间就是超声波从发射到返回的时间。 测试距离=(高电平时间*声速(340M/S))/2。 程序编写思路是:1、配置好使用到的GPIO以及定时器; 2、给模块TRIG端口发送大于10us的高电平信号,当收、收到ECHO回响信号是,打开定时
[单片机]
<font color='red'>STM32</font>超声波测距
AWS Graviton2处理器赋予arm更高吞吐量,并减少本地运算
亚马逊云服务(AWS)宣布,半导体设计和知识产权开发与许可的全球领先企业Arm将把AWS云服务应用到包括其绝大部分电子设计自动化(EDA)的工作负载。Arm将利用基于AWS Graviton2处理器的实例(由Arm Neoverse核心提供支持),将EDA工作负载迁移到AWS,引领半导体行业的转型之路。传统上,半导体行业使用本地数据中心完成半导体设计验证这样的计算密集型任务。为了更有效地执行验证,Arm使用云计算仿真现实世界的计算场景,并利用AWS几乎无限的存储空间和高性能计算基础架构,扩展其可以并行运行的仿真数量。自从开始向AWS云迁移以来,Arm已将AWS上EDA工作流的响应速度提高了6倍。此外,通过在AWS上运行遥测(从远程
[嵌入式]
如何通过STM32的定时器输出PWM?
本文将介绍通过STM32的定时器输出PWM,如果对定时器不太熟悉的同学可以看下之前的文章《STM32基础定时器详解》,关于定时器的基础功能不再详解。 01 PWM介绍 PWM定义:脉冲宽度调制(PulseWidthModulation,PWM)简称脉宽调制。通俗讲,PWM是一种对模拟信号电平进行数字编码的方法。通过高分辨率计数器的使用,方波的占空比被调制用来对一个具体模拟信号的电平进行编码。PWM信号仍然是数字的,因为在给定的任何时刻,满幅值的直流供电要么完全有(ON),要么完全无(OFF)。电压或电流源是以一种通(ON)或断(OFF)的重复脉冲序列被加到模拟负载上去的。通的时候即是直流供电被加到负载上的时候,断的时候即是供电
[单片机]
如何通过<font color='red'>STM32</font>的定时器输出PWM?
ADC(STM32
简介 STM32 的 ADC 是 12 位逐次逼近型的模拟数字转换器,它有 18 个通道,可测量 16 个外部和 2 个内部信号源 STM32F101/102 系列有 1 个 ADC,STM32F103 系列最少都拥有 2 个 ADC,STM32F103ZET 包含有 3个 ADC STM32 最大的转换速率为 1Mhz,转换时间为 1us,不要让 ADC 的时钟超过 14M,否则将导致结果准确度下降。 STM32 将 ADC 的转换分为 2 个通道组:规则通道组和注入通道组。 1、规则通道相当于你正常运行的程序 2、注入通道呢,就相当于中断。在你程序正常执行的时候,中断是可以打断你的执行的。同这个类似,注入通道的
[单片机]
ADC(<font color='red'>STM32</font>)
处理器架构 (九) arm soc 文档
在该文档中我们可以了解到以下内容 在架构层面, arm核心 gic amba 都是架构系列,然后分别对应实现 各个 RF 文档 https://developer.arm.com/architectures/cpu-architecture/a-profile/docs https://developer.arm.com/architectures/system-architectures/amba 在微架构层面, arm核心 gic 对应 trm 文档 可以在 http://infocenter.arm.com 中找 各种外设也有 对应的 trm 文档 在 http://infocent
[单片机]
<font color='red'>处理器</font>架构 (九) arm soc 文档
英特尔展示 Meteor Lake 处理器原型:16 核 22 线程,L3 缓存 24M
5 月 29 日消息,英特尔在今年的 Computex 2023 台北电脑展上展示了一款 Meteor Lake-H 处理器的原型,并展示了 SoC 的 VPU 部分。 根据外媒看到的数据,这颗处理器是在两周前完成的,拥有 16 核 22 个线程。参考之前的爆料,这很可能是我们之前看到的 6 P +8 E + 2 E (SoC) 配置。 如下图所示,它有着 1.6 MB 的 L1 缓存、18 MB 的 L2 缓存和 24 MB 的 L3 缓存。由于初代 Intel 4 工艺,目前 Meteor Lake 处理器的主频似乎都处于偏低水平,基础频率只有 3.1 GHz,而这颗 ES 处理器甚至只有 0.37GHz 的闲置频率。
[嵌入式]
英特尔展示 Meteor Lake <font color='red'>处理器</font>原型:16 核 22 线程,L3 缓存 24M
ARMv7-A 处理器窥探(1) —— 处理器模式
1、处理器模式 1.1、特权等级 ARMv7架构支持安全扩展,如果使能了安全扩展,ARMv7-A架构分为安全模式(Secure State)和非安全模式(Non-secure State)两个世界。 在非安全模式下,存在三种运行特权 PL0,PL1和 PL2(Privilege level)。(这里仅仅讨论非安全 State) 这里的 PL0~PL2 指的是特权等级,不同的特权等级,访问资源的权限不一样,操作系统运行再 PL1 的特权等级下,具有较高的访问权限,用户态运行再 PL0 的特权等级下(也叫非特权等级),只有最最基本的访问权限; 1.2、处理器模式 上面说的是处理器的特权等级,那么处理器真正的运行的模式有几
[单片机]
ARMv7-A <font color='red'>处理器</font>窥探(1) —— <font color='red'>处理器</font><font color='red'>模式</font>
基于Blackfin处理器的继电保护完整解决方案
ADI公司推出的继电保护方案平台, 采用了目前在电力线监控系统中广泛应用Blackfi处理器 (ADSP BF518) 和新型同步采样ADC( AD7606)。方案提供了完整的硬件和软件模块,将用户从硬件平台、操作系统、协议栈以及GUI等软件开发工作中解放出来,大大缩短产品开发周期,并降低了软硬件开发难度。 继电保护系统设计挑战分析 继电保护是实现电力网络及相关设备监测保护的重要技术,向计算机化、网络化、智能化,以及保护、控制、测量和数据通信一体化发展是该领域的长期发展趋势。有关数据显示,截止到2006年底,全国220kV及以上系统继电保护装置的微机化率已达91.41%。继电保护装置的微机化趋势充分利用了先进的半导体处
[单片机]
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
设计资源 培训 开发板 精华推荐

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

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

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