STM32调用硬件CRC出现Hardfault
程序用的UCOS,在使用CRC之前都没出过问题,加了CRC后,程序跑一天多就进入BUSFault,而且每次都是出错在同一位置。每次定位都定位在CRC_CalcBlockCRC这个函数。
程序从上电开始就每隔一秒进入CRC校验函数,一般运行一天就进入BusFault。查了快一个星期了,实在是找不到办法了。
有几个任务在调用该函数?如果多个调用,最好做一下互斥。 安 发表于 2017-3-23 11:07
有几个任务在调用该函数?如果多个调用,最好做一下互斥。
只有一个任务调用该函数,程序里面也做了互斥的。 那就可能是溢出了。你看一下数组大小,和计算的长度。 安 发表于 2017-3-23 11:13
那就可能是溢出了。你看一下数组大小,和计算的长度。
数组空间是肯定大于计算的长度空间的,而且这个函数一直在调用,每秒调用一次,程序基本上运行1天才会出错。 楼主,可以把每次计算的长度输出一下。有时候问题就是这样,可以加一个长度的判断。 可以参考文档《Hard Fault的诊断》去排查。:)
---------------------------------描述-------------------------------------------------
发生Bus Fault时,可以查看总线错误状态寄存器了解异常
的大致类型,供异常处理程序分析
• SCB->CFSR.Bus Fault(BFSR) @0xE000ED29
---------------------------------下载链接-------------------------------------------------
https://www.stmcu.org.cn/document/detail/index/id-213762
---------------------------------------------------------------------------------------- 会不会跟堆栈大小有关?调整系统堆栈大小试试。 安 发表于 2017-3-23 11:52
楼主,可以把每次计算的长度输出一下。有时候问题就是这样,可以加一个长度的判断。 ...
好的,我试下,谢谢 Dylan疾风闪电 发表于 2017-3-23 11:52
可以参考文档《Hard Fault的诊断》去排查。
---------------------------------描述-------------------- ...
谢谢你,我就是参考的文档里的方法查的,查到最后还是没找到原因
页:
[1]
2