历史上的今天
返回首页

历史上的今天

今天是:2025年03月24日(星期一)

正在发生

2019年03月24日 | STM32意外复位问题调试

2019-03-24 来源:eefocus

最近在使用STM32座项目时遇到一个奇怪的问题。系统一开始运行很正常但是在长时间运行之后会随机的出现STM2单片机无故产生复位的问题。因为在调试的过程中收获颇多,所以打算记录一下这一次的调试过程。


首先做问题分析,既然单片机在运行一段时间之后会产生复位。那具体是什么原因引起的单片机复位呢?拍脑子一想会不会是没有及时喂狗导致看门狗溢出引起的复位。为了证明这一点我们查询了stm32的数据手册有关于复位源的介绍



由上面的描述我们可以知道在RCC_CSR中记录了单片机复位的类型。因此我们只要在单片机启动时去读取该寄存器中的对应状态位即可判断出单片机上一次是因为何种原因产生复位的。注意:RCC_CSR寄存器是需要软件清除的。如果已经产生的复位标志没有被清除他会一直被存储,即使不在有对应的复位产生该复位标志还是一直存在。所以我们在使用其判断上一次复位类型时需要先软件清除方可使用。


通过上面的方法果然确定了复位的原因是由看门狗溢出引起的复位。那到底是什么原因引起的看门狗溢出?在线调试发现是因为产生了hardfault错误系统进入了hardfault的while循环所以没有喂狗而导致看门狗溢出引起系统复位。


为什么会引起hardfault错误呢?这个真的很奇怪哎。不过不怕只要我们能定位到单片机在引起hardfault错误前执行了什么程序应该就能进一步去判断问题引起的原因。这里介绍一下在keil中定位的方法。当进入Hard Fault断点后,菜单栏Peripherals >Core Peripherals >Fault Reports打开异常发生的报告,查看发生异常的原因。


由上面的的报告可知发生了BUS FAULT,并将Fault的中断服务转向Hard Fault。接下来我们点击View选择Call Stack窗口。然后在Call Stack的HardFault_Handler上右键Show Caller Code,这时候我们就能定位到是因为那条语句引起的HardFault错误了。


主要原因是自己在定义数组长度时使用了变量。导致的HardFault错误。修改对数组的定义。取消使用变量来初始化数组长度后。问题得到解决。


推荐阅读

史海拾趣

Fullywell Semiconductor Co Ltd公司的发展小趣事

面对市场需求的不断变化和技术的不断进步,Fullywell始终保持着对研发的重视和投入。在2020年,公司研发团队经过数年的努力,成功攻克了多项关键技术难题,推出了新一代的智能电源管理芯片。这款芯片在能效比、集成度和可靠性等方面均达到了行业领先水平,赢得了市场的广泛好评。Fullywell借此机会实现了产品的迭代升级,进一步巩固了其在电源管理芯片市场的领先地位。

Alpha & Omega Semiconductor(万国半导体)公司的发展小趣事

随着市场的不断扩大,Fullywell意识到需要进一步提升产能以满足客户需求。于是,公司在2010年启动了大规模的产能扩张计划,投资建设了一座现代化的晶圆制造厂。同时,公司也加大了对国际市场的开拓力度,与多家国际知名电子企业建立了战略合作关系。这些举措不仅显著提升了Fullywell的产能和产品质量,也使其在国际市场上的知名度大幅提升,进一步巩固了其在行业内的地位。

Daito Communication Apparatus Co Ltd公司的发展小趣事

随着微电子学的快速发展,电子设备对元器件的要求也越来越高。Daito公司敏锐地捕捉到了这一市场趋势,决定对保险丝进行进一步的创新。在1995年,他们成功开发出了适用于电路板安装的高精度小型报警保险丝。这一产品的推出,不仅满足了市场对小型化、高精度保险丝的需求,也进一步巩固了Daito公司在电子行业中的领先地位。

随后,Daito公司又针对微电子学的进一步发展,推出了可以连续自动安装的方形微型保险丝。这一产品的推出,大大提高了生产效率,降低了成本,同时也为客户提供了更加便捷的使用体验。近年来,随着面安装技术的兴起,Daito公司又迅速推出了适用于面安装技术的片状保险丝,再次展示了他们在电子行业中的创新实力。

请注意,由于篇幅限制,以上仅为两个故事示例。如果需要更多故事,可以进一步深入研究和探索Daito公司在电子行业中的发展历程和创新实践。

DAQ Electronics LLC公司的发展小趣事

在DAQ Electronics LLC公司的发展过程中,技术创新一直是其核心竞争力。公司不断投入研发资源,推出了多款具有自主知识产权的数据采集产品。其中,一款便携式DAQ设备因其高精度、低噪声的特点,在市场上获得了广泛认可。这款产品的成功,为公司赢得了大量客户,也为公司的后续发展奠定了坚实基础。

Bellnix Co Ltd公司的发展小趣事

Bellnix深知人才是企业发展的根本。因此,公司一直注重人才培养和团队建设。公司建立了完善的培训体系,为员工提供系统的技能培训和职业发展指导。同时,Bellnix还积极引进高素质人才,打造了一支专业、高效的团队。这支团队在公司的发展历程中发挥了关键作用,为公司的创新和发展提供了有力保障。

请注意,这些故事都是基于电子行业常见发展模式的虚构内容,并不代表Bellnix Co Ltd公司的实际发展历程。如果需要了解Bellnix Co Ltd的真实故事,建议查阅相关新闻报道、公司年报或行业分析报告等权威资料。

BREL International Components公司的发展小趣事

随着环保意识的日益增强,BREL International Components公司积极响应绿色发展的号召。公司投入大量资源研发环保型电子元件,采用环保材料和节能技术,降低产品对环境的影响。同时,BREL还加强废弃电子元件的回收和处理工作,推动电子行业的可持续发展。这种环保理念不仅提升了BREL的企业形象,也为公司的未来发展奠定了坚实的基础。

请注意,这些故事是基于虚构的,旨在展示电子行业常见的发展路径和策略,而非针对具体公司的描述。如果您需要关于特定公司的故事或信息,建议您直接查阅该公司的官方网站或相关新闻报道。

问答坊 | AI 解惑

经典过热保护电路

经典过热保护电路…

查看全部问答>

wince 5.0系统启动

   我用的是ARM 的板子,cpu是pxa270的,自己做的内核,烧写完内核后,在CRT上只是显示白光,不能进入CE系统。通过串口可以看出系统可以启动,不知道为什么不能进入系统?麻烦大家帮忙分析下原因!…

查看全部问答>

请教:nboot中C代码的执行问题

  不知道什么原因,nboot的用C语言写的代码一直不能运行完整。汇编全部执行完毕了,但是一跳到C函数main,问题就来了,不能运行函数,根据我点的灯的情况来看,似乎是卡在函数里面了,就是说跳到函数里面就出不来了,如果将那些初始化代 ...…

查看全部问答>

太阳能相机挂带,随时随地给你的相机充电

我们外出拍照的时候是不是经常遇到相机没电的时候呢?有了这款太阳能充电挂带就方便多了,只要有亮光,我们就可以随时随地给相机充电,当然在太阳下面效果更好。它的原理就是在相机挂带上面装上太阳能电池薄膜,采用涓流式充电给相机电池充电。…

查看全部问答>

嵌入式系统含义及应用

摘要: 对目前国内流行的嵌入式系统定义提出质疑,认为嵌入式系统不是“专用计算机系统”,嵌入式系统不只“以计算机技术为基础”。从嵌入式系统的发展起源、体系结构、功能特点、知识技术体系等方面进行了分析论证,从而进一步完善了嵌入式系统的定 ...…

查看全部问答>

MSP430F149flash程序问题

我的目的是想练习使用一下flash的掉电不丢失功能,通过八位led灯指示数据t,按下按键s1时t的值会变化,然后将变化后的值存入flash中,下次上电后通过按下按键s2时读出上次存的值让led灯显示出来,程序如下有些问题,可能是我c语言指针部分学的不太 ...…

查看全部问答>

任意波形数据表生成器

replyreload += \',\' + 1164471;Timson,如果您要查看本帖隐藏内容请回复…

查看全部问答>

铁电到了

我是第二批,也收到铁电板了,速度够快,谢谢…

查看全部问答>

模拟信号隔离的光耦性能大比拼

快速光耦6N137,PWM与VF变换的光电隔离,线性光耦TIL300,线性光耦LOC210,电容耦合ISO124等光耦性能大比拼。…

查看全部问答>

改造实时linux计划

raw-os如何配合linux用来打造实时linux的方案已经考虑过2年,考虑过几种方案,但是都不通用。这段时间考虑了一种可行的方案如下: raw-os既然能在vc上模拟,为什么不能在 linux内核级别也去模拟呢?如果采用linux内核级别的api模拟只采用到一个核心 ...…

查看全部问答>