f103移植到f030(带freertos)出现 HardFault_Handler

2019-07-21 02:54发布

通过 usart3发送 接收数据,f103跑没问题移植到f030,逻辑用的同样代码,直接用cubemx生成框架。现象,仿真程序 复位重启没问题,但是断电后再上电,就进入了HardFault_Handler,我在这个函数里面放了led,所以知道死在这了,请各位大佬指点指点


补充内容 (2019-4-15 00:12):
串口导致的硬件错误,f103同样代码不会出现。
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
5条回答
血洗无涯
1楼-- · 2019-07-21 08:20
 精彩回答 2  元偷偷看……
血洗无涯
2楼-- · 2019-07-21 08:36
 精彩回答 2  元偷偷看……
正点原子
3楼-- · 2019-07-21 09:26
帮顶
血洗无涯
4楼-- · 2019-07-21 15:19
我在 void HardFault_Handler(void) 添加了软复位 然后就正常运行了,可是明显不能这么干,谁遇到过 指点指点
血洗无涯
5楼-- · 2019-07-21 17:48
开始使用f103创建项目,之后需求所以移植到f030上,然后问题不断,当然我的技术比较菜也有缘故。
当前出现的问题是,调试使用的串口在拔掉之后上电后出现硬件错误,串口连接上下载器之后再上电正常工作,我在程序前添加了自动重启功能也就是上电后会重启一下来解决问题,之后公司其他同事也出现这种问题,同样是f030,之后他采用上拉电阻来解决,我的项目需求是工作期间可能对串口上的外设进行插拔,所以还是会出现这种问题。
利用周末公司人少静下来使用debug慢慢一点点分析,最后察觉当插拔造成串口电平发生变化 就是类似按键中的抖动 软件len > 0 && (UART_QueryByte(ANDROID_UART_PORT, len - 1) == 0x7E && UART_GetDataIdleTicks(ANDROID_UART_PORT) >= 20 这句判断完全失效,然后通过crc校验时进入硬件错误,通过dubug查看这期间串口就检测到3个字节,crc校验的数据域实际数据长度不符合 然后出现 内存溢出,访问越界。
知道问题就好解决了,我在crc处理数据前加了一句  if(len < 4)  return 0; 然后就解决了,疯狂插拔没有出现问题,然而却测出了app软件那边的bug,然后我就去骚扰软件工程师去了。

一周热门 更多>