stm32-8串口通信
一 串口通信相关
1. 知识点
- stm32串口功能
- 支持同步单向通信和半双工单线通信,也支持LIN(局部互连网),智能卡协议和IrDA(红外数据组织)SIR ENDEC规范,以及调制解调器(CTS/RTS)操作。它还允许多处理器通信。使用多缓冲器配置的DMA方式,可以实现高速数据通信。
- 设置参数
- 字长
- 波特率
- 奇偶校验位
- 停止位
- 直通线和交叉线
- 实现全双工串口通信,交叉线
- 引出用杜邦线连接
2. 串口工作过程
- 波特率控制
- 波特率:每秒传输的二进制位数
- USART_BRR
- 收发控制
- USART_CR1-3
- USART_SR
- 数据存储转移
- 内核或DMA将数据从内存(变量)写入发送数据寄存器TDR,发送控制器会适时的把数据从发送数据寄存器 TDR加载到发送移位寄存器,然后通过串口线Tx一位位发送
二、分析程序
1. main函数中调用了USART1的配置函数
/* USART1 config 115200 8-N-1 */
USART1_Config();
2. 函数USART1_Config()主要完成了以下功能:
- 使能USART1的时钟
- 配置USART1的IO
- 配置USART1的工作模式:115200-8-n-1
以下是跟踪到bsp_usart1.c中的函数定义
/**
* @brief USART1 GPIO
* @param
* @retval
*/
void USART1_Config(void)
{
GPIO_InitTypeDef GPIO_InitStructure;
USART_InitTypeDef USART_InitStructure;
/* config USART1 clock */
RCC_APB2PeriphClockCmd(RCC_APB2Periph_USART1 | RCC_APB2Periph_GPIOA, ENABLE);