文件名称:环形队列 无锁队列 用于串口收发提高效率,在32位单片机中验证过 利用 串口+DMA+IDLE中断+无锁队列,提高串口接收效
文件大小:7KB
文件格式:RAR
更新时间:2022-08-19 11:22:07
stm32 串口通信 队列
利用 串口+DMA+IDLE中断+无锁队列,提高串口接收效率 接收会产生的中断有三种: - 串口空闲中断:正常接收(小于 dma 设置的 buffer_size 时) - DMA传输完成中断:刚好为 dma 设置的 buffer_size 时,不过一般也不会出现, 如果出现了的话也应该增加缓冲区大小 - DMA的半传输中断:(这里没有用到,如果内存有限制可以自行开启) 注意: - 环形队列的缓冲区要设置为 2 的幂次方的大小 - 串口中断一般可以设置为最低优先级,因为是 DMA后台自动接收的, 所以中断优先级最低并不会丢失数据 - 用户缓存 buff_read 可以随意设置,没有限制,但为了节省内存, 一般小于等于 DMA 的接收缓存 usart_buff_rx