1.通信常见类型

1.1按数据通信方式分类

串行通信: 数据逐位按顺序依次传输

并行通信: 数据各位通过多条线同时传输


1.2按数据传输方向分类

单工通信:数据只能沿一个方向传输

半双工通信:数据可以沿两个方向传输,但需要分时进行

全双工通信:数据可以同时进行双向传输


1.3按数据同步方式分类

同步通信:共用同一时钟信号

异步通信:没有时钟信号,通过在数据信号中加入起始位或停止位等一些同步信号


2.串口通信

2.1含义

通过发送和接收字节的位(bit)来进行通信


2.2通信接口

UART: 异步全双工通信

1-wire: 异步半双工

IIC: 同步半双工

SPI: 同步全双工


2.2 异步通信协议

启动位: 必须占1个位长,保持逻辑0电平

有效数据位: 可选5、6、7、8、9个位长,LSB在前,MSB在后

校验位: 可选占1个位长,也可以没有该位

停止位: 必须有,可选占0.5、1、1.5、2个位长,保持逻辑1电平


2.3引脚的复用与通用

通用:IO端口的输入或输出是由GPIO外设控制,我们称之为通用

复用:O端口的输入或输出是由其它非GPIO外设控制,我们称之为复用


3.波特率

3.1 计算公式(F1系列)

$$
baud=fck/(16*USARTDIV)
$$


3.2寄存器(BBR)

把USARTDIV的整数部分写入位[15:4],USARTDIV的小数部分写入[3:0]


4.配置HAL库步骤

4.1配置串口工作参数

HAL_UART_Init(); 

4.2串口底层初始化

HAL_UART_MspInit(); 

4.3开启异步接收中断

HAL_UART_Receive_IT();

4.4设置优先级,使能中断

HAL_NVIC_SetPriority(); 
HAL_NVIC_EnableIRQ();

4.5编写中断服务函数

USARTx_IRQHandler();
UARTx_IRQHandler();

4.6串口数据发送

HAL_UART_Transmit();