STM32加了CRC后出现Hardfault

2019-07-14 14:14发布

程序用的UCOS,在使用CRC之前都没出过问题,加了CRC后,程序跑一天多就进入BUSFault,而且每次都是出错在同一位置。
每次定位都定位在CRC_CalcBlockCRC这个函数。

程序从上电开始就每隔一秒进入CRC校验函数,一般运行一天就进入BusFault。查了快一个星期了,实在是找不到办法了。
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
9条回答
TOPCB
1楼-- · 2019-07-14 21:32
那就可能是溢出了。你看一下数组大小,和计算的长度。
CAINE_LEE
2楼-- · 2019-07-14 22:57
TOPCB 发表于 2019-2-13 18:14
那就可能是溢出了。你看一下数组大小,和计算的长度。

数组空间是肯定大于计算的长度空间的,而且这个函数一直在调用,每秒调用一次,程序基本上运行1天才会出错。
TOPCB
3楼-- · 2019-07-15 00:15
 精彩回答 2  元偷偷看……
嘻嘻爱哈哈
4楼-- · 2019-07-15 01:28
可以参考文档《Hard Fault的诊断》去排查。
---------------------------------描述-------------------------------------------------
发生Bus Fault时,可以查看总线错误状态寄存器了解异常
的大致类型,供异常处理程序分析
• SCB->CFSR.Bus Fault(BFSR) @0xE000ED29
---------------------------------下载链接-------------------------------------------------
http://www.stmcu.org/document/detail/index/id-213762
----------------------------------------------------------------------------------------
huazhe
5楼-- · 2019-07-15 06:53
会不会跟堆栈大小有关?调整系统堆栈大小试试。
CAINE_LEE
6楼-- · 2019-07-15 09:25
TOPCB 发表于 2019-2-13 18:45
楼主,可以把每次计算的长度输出一下。有时候问题就是这样,可以加一个长度的判断。

好的,我试下,谢谢

一周热门 更多>