USART(通用同步异步收发器)
以handle为命名的是句柄
串行通信:传输速度慢/抗干扰能力强/IO口资源占用少/成本低
并行通信:传输速度快/抗干扰能力弱/IO口资源占用多/成本高
单工通信:数据单方向传输
半双工通信:数据可以可以两个方向传输,但不能够同时进行
全双工通信:数据可以同时是进行双向传输
同步通信:公用时钟信号
异步通信:无时钟线,在数据帧中有起始位和停止位(必须要有的) (注)起始位(低电平)停止位(高电平)
波特率:每秒传送的码元数,单位Baud
比特率:每秒传送的比特数,单位bit/s
比特率 = 波特率*log2M,(M表示每个码元承载的信息量)
两个设备之间的TXD和RXD必须交叉连接,才能够正常通信
现在的stm32和电脑之间的通信都可以用usb转type-c线使用
LSB(最低有效位)在前,MSB(最高有效位)在后
Fck:各自外设对应总线的时钟频率
波特率计算:baud = Fck/[8*(2-OVER8)]*USARTDIV
USARTDIV = DIV_Mantissa(4:15)+(DIV_Fraction(0:3)/8*(2-OVER8))
DIV_Mantissa 是USARTDIV 值的整数部分,DIV_Fraction是USARTDIV 值的小数部分
可以通过已知条件baud和Fck,通过公式反推出其他未知数,USART_CR1寄存器位15设置为0是16倍过采样,设置为1是8倍过采样
(过采样):可以提高采样的准确性和分辨率,所以一般使用16位过采样
使用 HAL_PPP_Init函数会调用HAL_UART_MspInit()函数;定时器函数也是如此
HAL_UART_MspDeInit()该函数是反初始化函数(也就是说可以在该函数中调用失能时钟或者其他功能的用途)
HAL_UART_IRQHandler()异步 HAL_USART_IRQHandler()同步
一个IO口只能复用一种片上外设功能,例如PA1用了定时器(TIM)功能,就用不了串口通信(USART)了