STM32F4发送和接收长度数据的判断.pdfVIP

  • 13
  • 0
  • 约小于1千字
  • 约 1页
  • 2022-12-30 发布于上海
  • 举报
STM32F4发送和接收长度数据的判断 STM32F4 串口收发使用DMA还是很方便的。但是配置DMA时需要配置数据长度,这一点对于发送来说 可以预估计自己发送的长度来配置DMA发送数据长度,但是对于接收不是很好解决,因为如果使用 DMA接收中断是要配置的数据长度减到0才能出发中断。但是我们无法判断接受数据的长度,导致无法 判断数据接收完成。网上有提出的解决方法是用定时器固定周期的读DMA接收的长度来判断是否接收完 成,也有使用UART的空闲中断来处理的。在这里我使用UART的空闲中断来处理接收不定长数据。当然 也要打开DMA接收完成中断,处理数据接收超过DMA配置的长度导致的DMA接收中断。 1.使用DMA发送时每次发送数据前需要配置发送的数据长度,此时要注意应先关闭DMA ,然后配置数据 长度,最后开启DMA发送,同时在DMA发送中断里面不要忘记清除相应的中断标志位。 2.DMA接收长度达到配置长度后会导致接收中断,此时在中断处理函数内要先关闭DMA ,然后读出数据 长度,清掉相应的中断标志位,最后重新配置DMA接收长度并打开DMA接收。在这里的DMA中断指示 为了防护一次性接收数据超过DMA配置长度。 3.UART空闲中断,利用空闲中断可以很好地判断DMA接收不定长度的数据是否完成。初始化UART时打 开空闲中断。当数据接收完成后会触发UART空闲

文档评论(0)

1亿VIP精品文档

相关文档