
STM32 HAL串口已成功实现不定长数据的接收发送功能,采用DMA方式,无需指定每次接收的长度或添加结束标志。
5星
- 浏览量: 0
- 大小:None
- 文件类型:None
简介:
在网络上使用HAL串口时,许多应用都没有成功实现不定长数据的接收,要么限制了数据长度,要么通过添加“0x0a 0x0d”来指示接收完成。经过长时间的搜索,未能找到一个真正可用的解决方案,在诸多通信场景中,直接定义不定长数据或添加控制字节“0x0a 0x0d”都难以满足需求。为了满足项目需求,我深入阅读了STM32 HAL的文档并编写了一个Demo程序,该程序能够实现回显功能——即通过向STM32发送不定长的数据,可以精确地接收和返回相同的数据。在STM32F429IGT6上进行了验证测试,运行了一整天后未发现任何数据丢失的情况。此外,采用DMA发送与接收方式可以有效地释放CPU部分运算资源。程序中定义的UART_RX_BUF_SIZE为128字节,意味着每次最大接收量为128字节;通过修改为2048字节,则可以一次性接收高达2k的数据。代码量相对较少,仅为约200行,易于理解和维护,并且具有良好的可移植性,能够轻松应用于不同系列的STM32系列芯片。我希望这个程序能够帮助到那些曾经像我一样在寻找资源、解决HAL库与标准库串口使用差异所带来的困境的朋友们。
全部评论 (0)
还没有任何评论哟~


