关于stm32的HAL库接收不定长数据问题!

2019-07-21 04:50发布

最近一直在用HAL库,发现HAL库开发UART真难用,尤其是接收,只能接收固定长度的数据流,而对于不定长数据的接收却很乏力!后来研究了下原子的例程,表面上看是能接收不定长了,但是依赖于帧尾为0x0D  0x0A这种带回车换行的结尾才行。想问一下万能的坛友,有没有更好的方法,能使用HAL库按字节接收数据,解决不定长数据的接收问题。
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
9条回答
holy404290384
2019-07-22 01:25
F1的话用DMA+空闲中断的比较多;
F0的话有超时中断,这个非常好使;
接收不定长的数据,判断接收数据流时什么时候结束,这个是关键,一般用超时(可用定时器来做)判断。例如Modbus协议超时时间是3.5个bit单位时间。所以说这个时间是根据协议来定的。
接收缓冲区的大小是有限的,如果数据流一直传输,超过这个长度的数据,就要做相应处理了(超过范围的数据要么是缓冲大小设计不合理,要么是别人乱发的)。

一周热门 更多>