KeySking笔记总结:
串口通讯三大方式
1.串口轮询
2.串口中断
3.DMA处理串口交互
1.串口轮询
轮询模式内部的底层:每个stm32接收和发送端口各存在有两个寄存器,一个为等待发送寄存器(TDR)
,一个为发送移位寄存器,我们调用HAL_UART_Transmit函数将数据在发送时,cpu会将数据先放在发送寄存器中,发送寄存器将数据给到发送移位寄存器,发送移位寄存器中的数据按照我们设置的比特率转换为高低电平从TX引脚输出。
在此期间,CPU不断去查询,发送寄存器中的数据是否已经移到了发送移位寄存器中。移动了就再把数据给到发送数据寄存器。
位于接收端,cpu不断的去查询接收数据寄存器中是否有新的数据可以读,一旦检测到就马上把数据从接收数据寄存器中移到内部变量里面去。
此模式的缺点,CPU一直被用来检测寄存器中有无数据,直到接收到我们想要的字节数,或者接收超时,否则一直会阻塞程序正常运行。
其中调用的函数第二个参数为变量地址,由于变量创建的为数组,直接就是地址就不需要添加取地址符号了。
2.串口的中断模式
串口的中断模式机制:与串口轮询不同的是,CPU不会反复去检