标题:
一个因VCAP脚导致的hardFault异常的话题
[打印本页]
作者:
taoran
时间:
2016-6-17 01:42
标题:
一个因VCAP脚导致的hardFault异常的话题
某日,有位
STM32
用户咨询如下问题:
“在使用stm32f411CE芯片,编译环境是keil mdk 5.15.仿真器使用Jlink。利用st官网标准库文件建立工程。主函数中只有while(1){i++;if(i>100) i=0;}在仿真时出现keil中的复位按钮没有复位的作用,使用停止按钮发现程序进入HardFault_Handler(void)中的死循环,请问时什么原因造成的?”
据该用户透露,之前他用
STM32F407
做过项目,对
STM32
开发应该说比较熟悉了。不过上面的问题让他也折腾好几天没有进展,自信心颇受打击。
因为用户项目工程里几乎没有自己的代码,就是建立了个基本工程框架而已。怀疑其建立项目过程中出了问题,建议使用标准库的模板工程测试。结果发现问题依旧。
后来客户改用
STM32cubeMx
做基本的工程配置,自主调整系统工作时钟。意外发现当系统时钟调在
36M
或更低时
hardfault
异常消失,当系统时钟调高时问题重现。
用户的工程代码依旧简单得不能再简单。现在问题似乎跟系统时钟高低有关,但用户目前配置的时钟都是正常范围,应该正常工作才对。
如果不是他用
STM32cubeMX
做配置,可能还会怀疑它的启动文件张冠李戴【一般出现在芯片简移植时】、时钟配置错误、或者是跟指令预取时间参数配置相关的代码配置错误。现在用户是用
STM32CUBEMX
配置,一般来讲这些问题都不会存在。因为
CUBE
工具都帮你处理好了。
这样看来问题很可能出在硬件线路方面。建议客户对其硬件检查,尤其电源部分和
VCAP
脚。从客户反馈的问题现象来看,跟
VCAP
脚关系可能比较大。
后来用户再次从硬件线路做确认检查,果真发现
VCAP
脚上电容有虚焊现象。重新处理后一切正常。
STM32家族中部分
系列的芯片有
1
到
2
个
VCAP
脚,它们往往需要接上合适的电容。
ST MCU
的手册上都给出相关品质参数。
VCAP
脚的电容对维持芯片内部供电的稳定非常关键。
如果该脚的电容焊接得不好或参数相差太远、品质太差都会引起问题。看到这里,也就不难理解上面提到的系统工作时钟低时能正常工作,系统频率高时MCU就扛不住了,出现
HARDFAULT
异常。
导致
HARDFAULT
异常的原因很多,还有比如时钟超频、数组越界、堆栈溢出、程序跑飞、非法指令等。有时原因并不太好找和跟踪,平时多些方向性的原因积累对你的项目开发相信不无裨益。
相关话题:
STM32
系列
MCU
芯片
开关
总
中断
的话题
欢迎光临 (http://www.51hei.com/bbs/)
Powered by Discuz! X3.1