找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 5190|回复: 0
打印 上一主题 下一主题
收起左侧

一个因VCAP脚导致的hardFault异常的话题

[复制链接]
跳转到指定楼层
楼主
ID:98618 发表于 2016-6-17 01:42 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
某日,有位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家族中部分系列的芯片有12VCAP脚,它们往往需要接上合适的电容。ST MCU的手册上都给出相关品质参数。


VCAP脚的电容对维持芯片内部供电的稳定非常关键。如果该脚的电容焊接得不好或参数相差太远、品质太差都会引起问题。看到这里,也就不难理解上面提到的系统工作时钟低时能正常工作,系统频率高时MCU就扛不住了,出现HARDFAULT异常。

导致HARDFAULT异常的原因很多,还有比如时钟超频、数组越界、堆栈溢出、程序跑飞、非法指令等。有时原因并不太好找和跟踪,平时多些方向性的原因积累对你的项目开发相信不无裨益。

相关话题:
STM32系列MCU芯片开关中断的话题
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏1 分享淘帖 顶1 踩
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表