串口
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的步骤,用来调试,但是发布的产品不应该有这两个函数,这两个函数在发布的产品上并没啥特别的作用,而且执行比较花时间。
串口使用了一个句柄来进行管理,句柄就像是锅的握把,我们可以通过这个东西管理一切和这个串口相关的东西。
最后更新于