串口

USART的对外引脚

数据寄存器,TDR,RDR,实际上只有一个寄存器USART_DR,双向寄存器,如果读那么就是RDR,写就是TDR。

发送接收控制单元,CR1/CR2/CR3。控制寄存器,控制各种功能,比如UART时能,收发中断时能,DMA使能。SR状态寄存器。GTPR。

还有稍稍复杂一点的,波特率发生器,

在使用前要配置好所有的寄存器。

初始化也很简单,HAL库给了个设置结构体。

STM32上的串口,大部分时候都是用的最基础的异步通信。因为STM32的串口通信外设功能很强大,所以使用的使用配置步骤还是挺多的,要一步步设置成我们需要的工作模式。

串口使用步骤:

  • 选择要使用的UART

  • 根据波特率设置BRR寄存器

  • 配置控制寄存器的停止位和校验位

  • 同步时钟使能位

  • 使能UART的发送和接收位

  • 使能发送和接收中断

  • 使用RCC中的UART时钟

  • 使能UART

  • 写DR寄存器或读DR寄存器

当然实际使用HAL库是用一个结构体进行配置的。

首先定义一个结构体配置成员去给定各个模式。然后把结构体传递给对应的初始化接口,应用结构体内的配置信息。之后使能时钟、使能相关引脚、配置引脚为复用模式。

在使用串口时,通常有重定向printf和scanf的步骤,用来调试,但是发布的产品不应该有这两个函数,这两个函数在发布的产品上并没啥特别的作用,而且执行比较花时间。

串口使用了一个句柄来进行管理,句柄就像是锅的握把,我们可以通过这个东西管理一切和这个串口相关的东西。

最后更新于