对于HardFault错误之前也遇到过,无非昰以下几种原因:
一般通过打断点就能找到何时发生硬件错误
但是这次遇到的硬件错误现象却很异常,其表现为:
由于代码简单看不出什么特别,而单步调试又不容易出现怀疑是不是频率(180Mhz)的问题,降低频率(90MHz)后发现居然不出现了硬件错误难道就是频率问题??
可是F4不是本来就可以到180MHz,这应该不是朂终原因。
于是将代码移植到评估板上进行测试,180MHz下正常运行问题定位到硬件上。
检查原理图发现VCAP1与VCAP2的外部电容焊接的是2.2pF,与硬件手册上推荐的2.2uF不同替换后问题成功解决。
由此可见VCAP脚的电容对维持芯片内部供电的稳定非常关键。如果该脚的电容焊接得不好或参數相差太远、品质太差都会引起问题
也就不难理解上面提到的系统工作时钟低时能正常工作,系统频率高时MCU就扛不住了出现HARDFAULT异常。
当两个对象进行比较的时候我們应该使用equals方法,但是由于基础类型在1.5以前的jdk大家已经习惯了 == 的方式,所以有时候会马虎大意依然使用 == 进行比较,那么这样会有什么問题吗结果是什么?
这样结果的原因是Long类型内部有一个内部类维护了一个cache,
-128到127直接的值都放在cache里不会创建新的对象,所以==比较的时候结果是正确的,
当超过这个范围因为是创建的新对象,所以自然不会相等
版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。