UART (通用异步收发器)是在 USART (通用同步异步收发器)基础上裁剪掉了同步通信功能,只剩下异步通信功能。关于通信和串口的基本知识,可参见文章《串口通信简介-CSDN博客》和《数据通信的一些基础概念-CSDN博客》。
本文重点介绍如何使用STM32的UART外设(STM32 HAL库驱动)。本文内容来自文档《UM1725 User Manual Description of STM32F4xx HAL drivers 》。
一、使用步骤
1、声明一个 UART_HandleTypeDef 句柄结构;
2、初始化UART 底层资源,通过执行 HAL_UART_MspInit() 函数:
a、使能 USARTx 接口时钟;
b、UART 引脚配置:
——使能 UART GPIO 时钟;
——配置这些 UART 引脚为复用功能 pull-up;
c、配置 NVIC,如果需要使用中断程序的话(使用 HAL_UART_Transmit_IT() 和 HAL_UART_Receive_IT()函数)
——配置 USARTx 的中断优先级;
——使能 NVIC USART IRQ handle;
d、配置 DMA,如果需要使用 DMA 程序的话(使用 HAL_UART_Transmit_DMA() 和 HAL_UART_Receive_DMA()函数)
——声明 DMA句柄结构,为了 Tx/Rx 数据流;
——使能 DMA 接口时钟;
——配置已声明的 DMA句柄结构的需要的 Tx/Rx 参数;
——配置 DMA Tx/Rx 数据流;
——将 DMA handle 和 UART DMA Tx/Rx handle 联合;
——配置优先级并且使能 NVIC 为了传输完成中断,在 DMA Tx/Rx 数据流中;
3、在初始化结构体中编程波特率,字符长度,停止位,校验位,硬件控制流和收发模式;
4、为了使用 UART 异步模式,初始化 UART 寄存器,通过调用 HAL_UART_Init()函数;
5、为了使用半双工模式,初始化 UART 寄存器,通过调用 HAL_UART_Init()函数;
6、为了使用 LIN(局部互联网络)模式,初始化 UART 寄存器,通过调用 HAL_LIN_Init() 函数;
二、文档原文