一、数据通信的基础概念
1.串/并行通信
串行:数据逐位按顺序依次传输,效率低、抗干扰能力强;
并行:数据各位通过多条线同时传输,效率高、抗干扰能力弱。
2.单工/半双工/全双工通信
单工:数据只能沿一个方向传输;
半双工:数据可以沿两个方向传输,但需要分时进行;
全双工:数据可以同时进行双向传输。
3.同/异步通信
同步:共用一种时钟信号;
异步:无时钟信号,数据信号中加入起始位和停止位等一些同步信号。
4.波特率
每秒钟传送的码元(调制并编码后的信号)数。
5.USART
我们通常使用的是异步通信,异步通信规定传输的数据格式由起始位、数据位、奇偶校验位和停止位组成。
USART的寄存器
a.状态寄存器
b.数据寄存器
c.波特率寄存器
这个寄存器的位15:4存放的是USARTDIV(USART分频器除法因子)的整数部分,位3:0存放的是USARTDIV的小数部分。
6.通用和复用
通用:IO端口的输入或是输出由GPIO外设(ODR、BSRR等)控制;
复用:IO端口的输入或是输出由其它非GPIO外设(USART、DAC等)控制。
二、STM32串口通信概述
F103系列串口引脚分布情况
三、USART/UART异步通信配置步骤以及需要了解的函数
1.配置串口工作参数
HAL_UART_Init() 调用MSP回调函数
2.串口底层初始化
HAL_UART_MspInit() 配置GPIO,NVIC,CLOCK等
3.开启串口异步接收中断
HAL_UART_Receive_IT() 以中断的方式接受指定字节的数据
4.设置优先级,使能中断
HAL_NVIC_SetPriority()、HAL_NVIC_EnablelRQ()
5.编写中断服务函数
USARTX_IRQHandler()、UARTx_IRQHandler()
6.串口数据发送
USART_DR、HAL_UART_Transmit() 以阻塞的方式发送指定字节的数据
四、用cubemx实现串口通信
1.配置HSE和时钟树
2.配置串口初始化
Mode(模式)选择栏中:
Asynchronous异步通信
Synchronous同步通信
正下方分别是:
Baud Rate 波特率 115200
Word Length 传输数据长度 8
Parity 奇偶校验位 none
Stop Bits 停止位 1
发送和接收都使能
3.生成文件
(这里IDE应选择MDK-ARM V5)
4.点击GENERATE CODE即可打开对应的keil 5文件