奏奏奏 发表于 2018-9-6 17:17:11

STM32处理通讯数据的方案比较

结合我现在做的项目说,
有CAN通讯与串口通讯需要处理,
目前我的处理方案(方案一)是将协议解析与处理直接在中断回调函数中运行,
后续想尝试(方案二)在CAN接收中断与串口接收中断中只做数据缓存(用FreeRTOS的消息队列),
协议解析与处理用单独的任务处理:循环体中反复取出消息队列中缓存的数据,根据协议解析并处理。

方案一:优点:处理及时
             缺点:不适合做复杂处理占用中断时间,理论上中断处理越简单越好,但是通讯协议中会包含有占用时间长的执行动作

方案二:优点:中断占用时间短
             缺点:对通讯数据响应不及时

想跟做过类似项目的大佬们交流一下。

huangyanga 发表于 2018-9-6 19:44:36

推荐方案2,中断中存一下数据立即回到循环体,响应其实很快。反而方案1在中断中耽误太多时间,影响下次中断接收,这就不能说是处理及时了,是根本就不处理。

feixiang20 发表于 2018-9-6 22:48:19

中断处理一定要及时的,本来就注重不要被错误原因卡死之类,所以推荐二

xiajintaord 发表于 2018-9-7 10:48:16

不管是从业务逻辑还是代码逻辑来考虑,都推荐将数据接收和协议解析分开处理
页: [1]
查看完整版本: STM32处理通讯数据的方案比较