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

2019-07-20 16:12发布

最近在做一个数据采集板卡,芯片选型的是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) 2017-3-7 09:47 上传 点击文件名下载附件




友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。