OpenEdv-开源电子网

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

STM32F4多路数据采集死机和丢数据的问题

[复制链接]

4

主题

17

帖子

0

精华

初级会员

Rank: 2

积分
106
金钱
106
注册时间
2017-2-24
在线时间
16 小时
发表于 2017-3-7 09:48:50 | 显示全部楼层 |阅读模式
10金钱
最近在做一个数据采集板卡,芯片选型的是STM32F407VET6,现在在开发板上进行实验。
该板卡的设计需求是:采集CAN总线数据、MPU-6050姿态数据和GPS数据,附带上时间信息(精度为毫秒)写入FAT文件系统的TF卡中。
现在使用的方案是:
USART1实现printf作为调试使用,
USART2接原子的GPS,
IIC(硬件IIC)用来接收MPU-6050的数据,放在10ms启动一次的定时器里(TIM4)
TIM3每1ms启动一次,用来计时
SDIO+FATFS来存储信息(暂时没有上)
TJA1050芯片用来接受CAN数据(暂时没有上)

现在的优先级设置是:TIM3优先级最高,其次是USART2和TIM4。
现在经常会运行着运行着就整机卡死了,串口数据也不接收了,主循环里我写了个呼吸灯也不闪了。
而且有的时候半天都不死机,有的时候5分钟就死机了。


我猜测可能是TIM4的IIC或者是USART2的中断中有一个死机了(考虑到USART的程序很简单,就是一个大小不变的环形链表,所以应该是IIC死机了,我如何才能准确的探知问题呢?)


如果我将USART2的优先级设置的很高,经常IIC就挂了(已验证)
如果我将IIC的优先级设置高一点,一旦死在IIC里面就出不来了,就算不考虑这个,更重要的是,经常丢串口的数据。

在此求助各位坛友怎么办

Code.zip (15.81 MB, 下载次数: 885)

最佳答案

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

昨天刚找到,硬件IIC的问题,程序动不动就跑飞,换了软件IIC稳定跑了一整天了
为往圣继绝学,为知难经过事。
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

4

主题

17

帖子

0

精华

初级会员

Rank: 2

积分
106
金钱
106
注册时间
2017-2-24
在线时间
16 小时
 楼主| 发表于 2017-3-7 09:48:51 | 显示全部楼层
正点原子 发表于 2017-3-13 22:06
主函数司机,其他代码运行?你设断点,看看死哪里?

昨天刚找到,硬件IIC的问题,程序动不动就跑飞,换了软件IIC稳定跑了一整天了
为往圣继绝学,为知难经过事。
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165540
金钱
165540
注册时间
2010-12-1
在线时间
2117 小时
发表于 2017-3-7 23:30:26 | 显示全部楼层
代码里面在可疑的地方,加入一些prinf,打印关键数据,可以辅助分析问题。另外,直接仿真,到死机的时候,看程序怎么跑的。
回复

使用道具 举报

4

主题

17

帖子

0

精华

初级会员

Rank: 2

积分
106
金钱
106
注册时间
2017-2-24
在线时间
16 小时
 楼主| 发表于 2017-3-8 08:37:17 | 显示全部楼层
本帖最后由 TsingJyujing 于 2017-3-8 08:38 编辑
正点原子 发表于 2017-3-7 23:30
代码里面在可疑的地方,加入一些prinf,打印关键数据,可以辅助分析问题。另外,直接仿真,到死机的时候, ...

请教一下原子哥,怎么截止在主程序跑飞之前将程序停下来?
我已经printf了一下,停在主程序的哪里的都有,我怀疑是中断里有程序作祟,但是,死活找不到。
为往圣继绝学,为知难经过事。
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165540
金钱
165540
注册时间
2010-12-1
在线时间
2117 小时
发表于 2017-3-8 21:49:44 | 显示全部楼层
TsingJyujing 发表于 2017-3-8 08:37
请教一下原子哥,怎么截止在主程序跑飞之前将程序停下来?
我已经printf了一下,停在主程序的哪里的都有 ...

如果主函数还在跑,说明没死机。
仿真单步看,就行了
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复

使用道具 举报

4

主题

17

帖子

0

精华

初级会员

Rank: 2

积分
106
金钱
106
注册时间
2017-2-24
在线时间
16 小时
 楼主| 发表于 2017-3-9 08:54:56 | 显示全部楼层
正点原子 发表于 2017-3-8 21:49
如果主函数还在跑,说明没死机。
仿真单步看,就行了

主函数已经死机了,中断还在莫名其妙的运行(如串口),但是收不到数据……
为往圣继绝学,为知难经过事。
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165540
金钱
165540
注册时间
2010-12-1
在线时间
2117 小时
发表于 2017-3-13 22:06:17 | 显示全部楼层
TsingJyujing 发表于 2017-3-9 08:54
主函数已经死机了,中断还在莫名其妙的运行(如串口),但是收不到数据……

主函数司机,其他代码运行?你设断点,看看死哪里?
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-6-18 21:41

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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