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

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的诊断》去排查。
---------------------------------描述-------------------- ...

谢谢你,我就是参考的文档里的方法查的,查到最后还是没找到原因
12下一页
关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
STM32N6 AI生态系统
STM32MCU,MPU高性能GUI
ST ACEPACK电源模块
意法半导体生物传感器
STM32Cube扩展软件包
关注我们
微信公众号二维码 微信公众号
手机版二维码 手机版