文件:
stm32f0-uart-dma-master.zip
参考文章:
一个严谨的STM32串口DMA发送&接收(1.5Mbps波特率)机制
测试平台
平台 | 晶振 | BSP库 | 串口 |
---|---|---|---|
STM32F030C8T6 | 12MHz | 标准库 | UART1、UART2 |
STM32F103ZET6 | 8MHz | 标准库 | UART1、UART2 |
… |
实现功能
- 收/发环形缓冲区
- 不定长度接收处理
- 高速(1.5Mbps)通信不丢数据
关键实现
DMA发送模式
- 线程循环查询发送环形缓冲区数据,然后启动MDA传输
- DMA传输完成中断,连续发送
- 定时器中断周期发送
DMA接收模式
- DMA缓存半满中断(如CPU硬件支持,可使用DMA双缓存机制)
- DMA缓存传输完成中断
- 串口空闲中断实现