真正实现了STM32 HAL串口不定长数据的接收发送功能(DMA方式,不用限定单次接收长度和添加结束标志)

时间:2022-06-28 07:06:19
【文件属性】:
文件名称:真正实现了STM32 HAL串口不定长数据的接收发送功能(DMA方式,不用限定单次接收长度和添加结束标志)
文件大小:1.37MB
文件格式:ZIP
更新时间:2022-06-28 07:06:19
stm32 网上使用HAL串口时很多都没有实现不定长数据的接收,要么是限定数据长度,要么是加“0x0a 0x0d”来控制接收完成,找了很久都没有真正找到一个能用的,在很多通信中不可能是定义的,或是加上“0x0a 0x0d”来实现的,由于项目需要,自己阅读STM32 HAL的文档,写出了一个Demo程序,可以实现回显功能(就是通过给STM32发送不定长的数据,可以实现一模一样接收发送的数据),在STM32F429IGT6上验证过,跑了一天没有出现丢失数据的问题,使用DMA发送与接收方式,可以释放CPU部分运算资源,程序中的UART_RX_BUF_SIZE定义为128,就是一次最大接收为128,我在项目中通过改为2048也可以通过一次接收2k的数据,代码量很少,才200多行,很容易看懂,可以移植到不同系列的STM32上,希望这程序能帮助到曾经跟我一样到处找资源解决HAL库与标准库串口使用上不同而痛苦的朋友们
【文件预览】:
usart
----usart.ioc(5KB)
----Inc()
--------stm32f4xx_hal_conf.h(17KB)
--------mxconstants.h(2KB)
--------stm32f4xx_it.h(3KB)
--------TypeDef.h(1KB)
----.mxproject(5KB)
----MDK-ARM()
--------RTE()
--------DebugConfig()
--------usart.uvguix.Administrator(166KB)
--------JLinkLog.txt(45KB)
--------startup_stm32f429xx.lst(76KB)
--------usart.uvoptx(17KB)
--------usart.uvguix.csw(70KB)
--------startup_stm32f429xx.s(31KB)
--------usart()
--------JLinkSettings.ini(755B)
--------usart.uvprojx(19KB)
----Src()
--------stm32f4xx_it.c(6KB)
--------stm32f4xx_hal_msp.c(9KB)
--------main.c(5KB)
----Drivers()
--------STM32F4xx_HAL_Driver()
--------CMSIS()

网友评论

  • 代码为空....
  • stm32 hal库不熟悉可以参考下
  • 大佬,串口发送不回显,没反应。重烧程序后,回显个上次发送的数据,然后发送又不回显了。这个程序确定测试过吗??
  • 不是很好,但可以借鉴