13.2.3. 编程指南¶
13.2.3.1. 初始化¶
步骤1:系统初始化
总线时钟:配置APB时钟。
模块时钟:在CMU中使能UART模块时钟,释放模块复位。
IO 配置:配置GPIO复用为UART功能,配置UART引脚上拉模式。
波特率配置:请参考 操作模式。
步骤2:控制器参数配置
通过UART_LCR配置数据宽度、停止位、校验类型。
通过UART_FCR复位和使能FIFO,配置触发条件。
通过UART_MCR配置流控方式。
步骤3:中断配置
使用对应中断向量号配置UART中断。
- 在DMA模式
配置UART_IER为0x00关闭中断。
配置UART_HSK为0xE5选择握手模式。
配置UART_FCR.DMAM选择DMA模式。
设置DMA模块参数及DMA中断请求。
- 在中断模式
配置UART_IER使能对应中断。
13.2.3.2. 查询模式¶
发送
向寄存器UART_THR写入数据。
检查UART_USR.TFNF的值,UART_USR.TFNF等于1则可以继续写入,UART_USR.TFNF等于0需等待发送完成。
接收
检查UART_USR.RFNE的值。
UART_USR.RFNE等于1时从寄存器UART_RBR中读回接收数据。
UART_USR.RFNE等于0完成数据接收。
13.2.3.3. 中断模式¶
发送
配置UART_IER.ETBEI为1以使能UART发送中断。
向寄存器UART_THR写入数据。
当FIFO中的数据达到触发条件,UART发送中断产生。
检查UART_USR.TFE判断发送FIFO是否为空,当UART_USR.TFE等于1表示发送完成。
配置UART_IER.ETBEI为0关闭中断。
接收
配置UART_IER.ERBFI为1以使能UART接收中断。
当FIFO中的数据达到触发条件,UART接收中断产生。
从UART_RBR中读取接收数据。
检查UART_USR.RFNE,当UART_USR.RFNE等于1则继续读取接收数据。

图 13.13 UART IRQ 流程图¶