1 阻塞式接收
自发自收:while循环中使用串口接收和发送函数。
2中断接收
自发自收:用stm32cubemx生成基本的串口外设,记得开中断。
(1)在主函数中使用串口中断接收函数。
(2)接收完成后会进入接收回调函数,在接受回调函数中使用串口中断发送函数把接受到的数据发送给电脑。再次使用串口DMA接收函数。
DMA接收
自发自收:用stm32cubemx生成基本的串口外设,记得开中断。
(1)在主函数中使用串口DMA接收函数。
(2)接收完成后会进入接收回调函数,在接受回调函数中使用串口DMA发送函数把接受到的数据发送给电脑。再次使用串口DMA接收函数。
DMA+空闲中断接收不定字长数据
自发自收:用stm32cubemx生成基本的串口外设,记得开中断。
(1)定义一个接收的最大数据位;在主函数中使用串口DMA接受函数。
(2)a:在中断函数中判断IDLE空闲中断标志位,
b:如果标志位置位,清空标志位,停止使用的串口的DMA,
c:获取接收的不定字长的长度,
d:使用串口DMA发送函数,再次使用串口DMA接收函数,
注释:上述DMA串口接收和发送函数都是单次的;
一般都使用DMA+空闲中断接收不定字长数据;
DMA接收不会进入中断,中断接收HAL库已经给写好了接受一个字节进入一次中断;
回调函数都在接收函数中被调用;
以上所述基于HAL库;