OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 2780|回复: 5

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

[复制链接]

5

主题

35

帖子

0

精华

初级会员

Rank: 2

积分
178
金钱
178
注册时间
2017-9-22
在线时间
42 小时
发表于 2019-2-21 18:08:04 | 显示全部楼层 |阅读模式
1金钱
通过 usart3发送 接收数据,f103跑没问题移植到f030,逻辑用的同样代码,直接用cubemx生成框架。现象,仿真程序 复位重启没问题,但是断电后再上电,就进入了HardFault_Handler,我在这个函数里面放了led,所以知道死在这了,请各位大佬指点指点


补充内容 (2019-4-15 00:12):
串口导致的硬件错误,f103同样代码不会出现。

最佳答案

查看完整内容[请看2#楼]

开始使用f103创建项目,之后需求所以移植到f030上,然后问题不断,当然我的技术比较菜也有缘故。 当前出现的问题是,调试使用的串口在拔掉之后上电后出现硬件错误,串口连接上下载器之后再上电正常工作,我在程序前添加了自动重启功能也就是上电后会重启一下来解决问题,之后公司其他同事也出现这种问题,同样是f030,之后他采用上拉电阻来解决,我的项目需求是工作期间可能对串口上的外设进行插拔,所以还是会出现这种问题。在485 ...
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

5

主题

35

帖子

0

精华

初级会员

Rank: 2

积分
178
金钱
178
注册时间
2017-9-22
在线时间
42 小时
 楼主| 发表于 2019-2-21 18:08:05 | 显示全部楼层
开始使用f103创建项目,之后需求所以移植到f030上,然后问题不断,当然我的技术比较菜也有缘故。
当前出现的问题是,调试使用的串口在拔掉之后上电后出现硬件错误,串口连接上下载器之后再上电正常工作,我在程序前添加了自动重启功能也就是上电后会重启一下来解决问题,之后公司其他同事也出现这种问题,同样是f030,之后他采用上拉电阻来解决,我的项目需求是工作期间可能对串口上的外设进行插拔,所以还是会出现这种问题。在485连接的传感器插拔也会出现硬件错误。
利用周末公司人少静下来使用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,然后我就去骚扰软件工程师去了。
回复

使用道具 举报

5

主题

35

帖子

0

精华

初级会员

Rank: 2

积分
178
金钱
178
注册时间
2017-9-22
在线时间
42 小时
 楼主| 发表于 2019-2-21 18:10:08 | 显示全部楼层
快被搞疯了,f030串口有毒
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165540
金钱
165540
注册时间
2010-12-1
在线时间
2117 小时
发表于 2019-2-22 02:08:03 | 显示全部楼层
帮顶
回复

使用道具 举报

5

主题

35

帖子

0

精华

初级会员

Rank: 2

积分
178
金钱
178
注册时间
2017-9-22
在线时间
42 小时
 楼主| 发表于 2019-2-22 14:49:33 | 显示全部楼层
我在 void HardFault_Handler(void) 添加了软复位 然后就正常运行了,可是明显不能这么干,谁遇到过 指点指点
回复

使用道具 举报

5

主题

35

帖子

0

精华

初级会员

Rank: 2

积分
178
金钱
178
注册时间
2017-9-22
在线时间
42 小时
 楼主| 发表于 2019-4-15 00:37:57 | 显示全部楼层
开始使用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,然后我就去骚扰软件工程师去了。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-6-22 10:49

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表