目录

一. USART基础认识

    1. USART主要特性

    2. USART结构

    3. USART/UART的波特率(F1)——用户设置

    4. USART发送/接收数据

    5. USART寄存器介绍(F1)

二. USART/UART异步通信配置

配置步骤(接收发送一个字符)


一. USART基础认识

    1. USART主要特性

(1)全双工异步通信。

(2)单线半双工通信。

(3)单独的发送器和接收器使能位。

(4)可配置使用DMA的多缓冲器通信。(在SRAM里利用集中式DMA缓冲接收/发送字节)

(5)10个带标志的中断源。

    2. USART结构

    3. USART/UART的波特率(F1)——用户设置

   (1)波特率介绍

       在信息传输通道中,携带数据信息的信号单元叫码元,单位时间内通过信道传输的码元数称为码元传输速率,简称波特率。波特率可以被理解为一个设备在单位时间内发送(或接收)了多少码元的数据。

(2)波特率计算公式:

【 ①fck是串口的时钟。(只有USART1 使用PCLK2(APB2最高72MHz)。其它USART使用PCLK1(APB1最高36MHz)   ②USARTDIV是一个无符号的定点数 】

(3)从USART_BRR寄存器值得到USARTDIV

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

(4)例程源码公式推导

    4. USART发送/接收数据

(1)字长:可以通过编程USART_CR1寄存器选择成8或9位。在起始位期间,TX脚处于低电平,在停止位期间处于高电平。

(2)空闲符号:被视为完全由‘1‘组成的一个完整的数据帧,后面跟着包含了数据的下一帧的开始位(’1‘的位数也包括了停止位的位数)。

(3)断开符号:被视为在一个帧周期内全部收到’0‘(包括停止位期间,也是'0)。在断开帧结束时,发送器再插入1或2个停止位(’1‘)来应答起始位。

(4)发送和接收由一共用的波特率发生器驱动,当发送器和接收器的使能位分别置位时,分别为其产生时钟。

    5. USART寄存器介绍(F1)

        STM32 的每个串口都有3个控制寄存器 USART_CR1~3, 串口的很多配置都是通过这 3 个寄存器来设置的。

(1)控制寄存器 1(USART_CR1

位13(UE):USART使能

位12(M):配置字长(一般为8个数据位)

位10(PCE):检验控制使能(禁止)

位5(RXNEIE):接收中断使能

位3(TE):发送使能

位2(RE):接收使能

(2)控制寄存器 2(USART_ CR2)

位13:12(STOP):配置停止位。(1位)

(3)控制寄存器 3(USART_CR3)

位3(HDSEL):半双工选择。(不选择)

(4)数据寄存器(USART_DR

DR[8:0]为串口数据,包含了发送或接收的数据。它由两个寄存器组成的,一个给发送用(TDR),一个给接收用(RDR),且兼具读和写的功能。TDR 寄存器提供了内部总线和输出移位寄存器之间的并行接口。RDR 奇存器提供了输入移位寄存器和内部总线之间的并行接口。

(5)状态寄存器(USART_SR

位6(TC):当该位被置位的时候,表示 USART_DR 内的数据已经被发送完成了。如果设置了这个位的中断,则会产生中断。该位也有两种清零方式:1)读 USART_SR,写USART_DR。2)直接向该位写0。

位5(RXNE):当该位被置1的时候,就是提示已经有数据被接收到了,并且可以读出来了。这时候我们要做的就是尽快去读取 USART_DR,通过读 USART_DR 可以将该位清零,也可以向该位写0,直接清除。

二. USART/UART异步通信配置

  1. 配置步骤(接收发送一个字符)

(1)配置串口工作参数:HAL_UART_Init()

(2)串口底层初始化:重定义HAL_UART_MspInit()  ( 用于配置GPIO、NVIC、CLOCK等)

(3)开启串口异步接收中断:HAL_UART_Receive_IT() (以中断的方式接收指定字节的数据)

(4)设置优先级,使能中断:HAL_NVIC_SetPriority()、 HAL_NVIC_EnableIRQ()

(5)编写中断服务函数:USARTx_IRQHandler()、 UARTx_IRQHandler()

(6)串口数据发送:USART_DRHAL_UART_Transmit() (以阻塞的方式发送指定字节的数据)

  (7)实现代码参考

Logo

技术共进,成长同行——讯飞AI开发者社区

更多推荐