你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

STM32调用硬件CRC出现Hardfault

[复制链接]
流年__ 提问时间:2017-3-23 10:00 /
程序用的UCOS,在使用CRC之前都没出过问题,加了CRC后,程序跑一天多就进入BUSFault,而且每次都是出错在同一位置。
@CWMNJ]QH}D[SBRIQLV[OW3.png 1HMSR)YC$D`)_FO_3X(O@4L.png O1W0FUGHP$G1{_[8IX{3UB8.png 每次定位都定位在CRC_CalcBlockCRC这个函数。
RUH[_P~NV$BS1P%Q45XS9D1.png
程序从上电开始就每隔一秒进入CRC校验函数,一般运行一天就进入BusFault。查了快一个星期了,实在是找不到办法了。
RPJ9G}X6J]WP~3@AB(O{%IW.png
收藏 评论11 发布时间:2017-3-23 10:00

举报

11个回答
废鱼 回答时间:2017-3-23 11:07:23
有几个任务在调用该函数?如果多个调用,最好做一下互斥。
流年__ 回答时间:2017-3-23 11:09:15
安 发表于 2017-3-23 11:07
有几个任务在调用该函数?如果多个调用,最好做一下互斥。

只有一个任务调用该函数,程序里面也做了互斥的。
废鱼 回答时间:2017-3-23 11:13:06
那就可能是溢出了。你看一下数组大小,和计算的长度。
流年__ 回答时间:2017-3-23 11:39:46
安 发表于 2017-3-23 11:13
那就可能是溢出了。你看一下数组大小,和计算的长度。

数组空间是肯定大于计算的长度空间的,而且这个函数一直在调用,每秒调用一次,程序基本上运行1天才会出错。
废鱼 回答时间:2017-3-23 11:52:03
楼主,可以把每次计算的长度输出一下。有时候问题就是这样,可以加一个长度的判断。
Dylan疾风闪电 回答时间:2017-3-23 11:52:12
可以参考文档《Hard Fault的诊断》去排查。
---------------------------------描述-------------------------------------------------
发生Bus Fault时,可以查看总线错误状态寄存器了解异常
的大致类型,供异常处理程序分析
• SCB->CFSR.Bus Fault(BFSR) @0xE000ED29
---------------------------------下载链接-------------------------------------------------
https://www.stmcu.org.cn/document/detail/index/id-213762
----------------------------------------------------------------------------------------
xmshao 回答时间:2017-3-23 13:15:00
会不会跟堆栈大小有关?调整系统堆栈大小试试。
流年__ 回答时间:2017-3-23 14:09:31
安 发表于 2017-3-23 11:52
楼主,可以把每次计算的长度输出一下。有时候问题就是这样,可以加一个长度的判断。 ...

好的,我试下,谢谢
流年__ 回答时间:2017-3-23 14:10:05
Dylan疾风闪电 发表于 2017-3-23 11:52
可以参考文档《Hard Fault的诊断》去排查。
---------------------------------描述-------------------- ...

谢谢你,我就是参考的文档里的方法查的,查到最后还是没找到原因
流年__ 回答时间:2017-3-23 14:11:46
xmshao 发表于 2017-3-23 13:15
会不会跟堆栈大小有关?调整系统堆栈大小试试。

因为用了UCOS,所以主堆栈用的空间很小,目前设置的是400,而且进入BUSFault的时候我也查过堆栈内容,没发现有溢出。
eagle0754 回答时间:2017-3-24 21:23:55
P_DataBuffer每次传入的都是uint32_t的数组么?
还有你长度bufLen在进入函数时是否判断下如
if (bufLen > xxx) while(1);
是否定义成如下会好些,P_DataBuffer在运算过程中是否有变化?计算返回的值如果不对你是怎么处理的?
uint32_t CRC_BufferGet(const uint32* P_DataBuffer, uint32_t bufLen)

所属标签

相似问题

关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
STM32Cube扩展软件包
意法半导体边缘AI套件
ST - 理想汽车豪华SUV案例
ST意法半导体智能家居案例
STM32 ARM Cortex 32位微控制器
关注我们
st-img 微信公众号
st-img 手机版