WhyCan Forum

人过留名,雁过留声,感谢各位朋友不离不弃地支持。 QQ: 516333132 (挖坑网/填坑网) admin@whycan.cn

您尚未登录。

#1 2019-09-28 11:01:08

微凉VeiLiang
会员
注册时间: 2018-10-28
累计积分: 157

记一个stm32运行在48mhz正常大于48mhz就进入hardfault的问题解决办法

楼主做了一块stm32f401rct6的板子。开始做的时候用的是立创商城smt的库,里面没有stm32f401rct6。于是就用里面的stm32f103rct6的元器件封装。就在此时已经开始埋下祸根。。。。。

板子画好了嘉立创也贴好了,回来后赶紧用cubemx生成程序进行测试,接上stlink下载,嗯...可以下载,很好。于是在线运行,暂停看运行结果,发现停在hardfault里面。此时楼主心里毫无波澜,心想,肯定又是cubemx在作妖了(因为以前就试过cubemx某个版本的时钟配置有bug)。然后仔细查看对应时钟位置的代码,竟然好像没有问题。。。嗯。。。心想,那肯定是我配置时钟时候配置错了,亦或者晶振没有起振。。。于是各种反复验证,发现晶振也起振了,配置也就几种,采用hsi时候倍频上去也一样挂,只有在频率小于等于48Mhz时候运行是正常的。后面换了几个板子测试,现象依旧。。

后面就在网上查找同样现象的解决办法,发现很多都说到vcap脚要接电容,电容贴错会导致频率上去就进入hardfault。好像很有道理,自己也仔细查看原理图,嗯。。。好像没有vcap脚(此时还是没有意识到用的是103的封装)。。以st的尿性,肯定是放在某个供电脚上了,毕竟64个脚其中的io脚很宝贵。然后查看供电脚,发现供电脚也都都连上了,然后每个脚也都有0.1uf电容了。这时候楼主不淡定了。。。难不成出鬼了,或者立创商城的芯片是水货。。。仔细想想也不至于啊,赶紧下载一个401的手册看看,然后发现里面Compatibility with STM32F4 Series里面有介绍64pin的一样是有vcap专门的脚的,这时候恍然大悟,原来自己用的是103的封装,pb11还拿来当io口用了。那个脚的位置是vcap脚,不是pb11了。。。。
后面果断飞上电容,烧录程序测试。。。板子终于能够在84Mhz愉快奔跑了。

后记,在调试问题过程中还发现了f4系列是支持内核电压参数配置的,在超频的时候如果hardfault了,可以调节内核电压提高稳定性。

离线

#2 2019-09-28 11:04:47

smartcar
会员
注册时间: 2018-02-19
累计积分: 390

Re: 记一个stm32运行在48mhz正常大于48mhz就进入hardfault的问题解决办法

哈哈哈,大笑三声,

为什么 stm8s003 那么几个脚也要 vcap呢,这脚到底原来干嘛的?

离线

#3 2019-09-28 13:36:31

myxiaonia
会员
注册时间: 2019-06-18
累计积分: 7

Re: 记一个stm32运行在48mhz正常大于48mhz就进入hardfault的问题解决办法

smartcar 说:

哈哈哈,大笑三声,

为什么 stm8s003 那么几个脚也要 vcap呢,这脚到底原来干嘛的?

内部调压器啊兄弟,stm8虽然支持5v,但是内核电压其实低多了,所以要有降压

调压要么线性要么dcdc,dcdc可以是buck,也可以是电荷泵,电荷泵元件少

所以vcap就是电荷泵上挂的电容

离线

#4 2019-09-28 13:38:52

myxiaonia
会员
注册时间: 2019-06-18
累计积分: 7

Re: 记一个stm32运行在48mhz正常大于48mhz就进入hardfault的问题解决办法

难道10x系列和401系列只相差了一个vcap引脚?我印象中有好几个脚不一样

离线

页脚