stm32学习笔记——串口相关寄存器、库函数以及

主要讲解USART相关内容

  • 常用串口相关寄存器

        USART_SR状态寄存器

        USART_DR数据寄存器

        USART_BBR波特率寄存器

        USART_CR控制寄存器

 USART_SR是一个32位的寄存器,但只有0~9位是标志位,其他位均为保留位,各标志位的功能可以参考stm32中文参考指南。

USART_DR是一个32位的寄存器,但只有0~8位用于存储数据,其他位均为保留位,DR寄存器包含了发送和接收的数据,由发送TDR和接收RDR两个寄存器组成,每一有效位均可进行读写操作。

USART_BBR是与传输波特率设置相关的寄存器,由串口通信原理得知,USART作为异步通信接口,需要双端同步波特率才能进行传输,所以我们需要在传输前对BBR寄存器进行操作从而设置波特率。BBR是一个32位的寄存器,高16位保留,0~15位用于定义USARTDIV(分频器除法因子)低4位定义小数部分,高12位定义整数部分。

USART_CR控制寄存器组用于对串口的模式,中断等多项功能进行使能或禁止,以及时钟和字长等的配置,较为复杂。


已知波特率如何求得USARTDIV呢?

\frac{Tx}{Rx} (Baud Rate) = \frac{f_{PCLKx}}{16*USARTDIV}

举例说明,假设波特率为115200,串口1时钟PLCK2为72MHz,则有

USARTDIV=\frac{72000000}{115200*16}=39.0625

BBR高12位DIV_Mantissa[11:0] = 39 = 0x27。

BBR低4位DIV_Fraction[3:0] = 0.0625*16(取整)=0x01。

故将BBR设置为0x271,就可以在72MHz时钟下得到115200的波特率。


  • 串口相关常用库函数

void USART_Init();//串口初始化:波特率,数据字长,奇偶校验,硬件流控以及收发使能
void USART_Cmd();//使能串口
void USART_ITConfig();//使能相关中断

void USART_SendData();//发送数据到串口,DR
uint16_t USART_ReceiveData();//接收数据,从DR读取接收到的数据

FlagStatus USART_GetFlagStatus();//获取状态标志位
void USART_ClearFlag();//清除状态标志位
ITStatus USART_GetITStatus();//获取中断状态标志位
void USART_ClearITPendingBit();//清除中断标志位

  • 串口配置的一般步骤

        1.串口时钟使能,GPIO时钟使能(在配置GPIO的复用功能时有讲到)。

        2.串口复位

USART_DeInit(); //非必要

        3.GPIO端口模式配置

GPIO_Init();        //设置为复用推挽模式,同样在GPIO复用功能时有讲到

        4.串口参数初始化

USART_Init();        //上文提到需要设置波特率,字长等等参数

        5.开启中断并初始化NVIC        //需要用到中断才会经过这个步骤

NVIC_Init();
USART_ITConfig();

        6.使能串口

USART_Cmd();

        7.编写中断处理函数

USARTx_IRQHandler();

        8.串口数据收发:

void USART_SendData();//发送数据到串口,DR

uint6_t USART_ReceiveData();//接收数据,从DR读取收到的数据

        9.串口传输状态获取:

FlagStatus USART_GetFlagStatus(USART_TypeDef* USARTx, uint16_t USART_FLAG);

void USART_ClearITPendingBit(USART_TypeDef* USARTx, uint16_t USART_IT);

对串口配置的实际编写和讲解可以点进下面的博客查看,但内容不包含对串口调试助手的使用。 

stm32学习笔记——串口一般配置步骤补充_最弱勇者哀嚎地-CSDN博客本篇博客将对stm32学习笔记——串口相关寄存器、库函数以及_最弱勇者哀嚎地-CSDN博客主要讲解USART相关内容常用串口相关寄存器 USART_SR状态寄存器 USART_DR数据寄存器 USART_BBR波特率寄存器 USART_CR控制寄存器USART_SR是一个32位的寄存器,但只有0~9位是标志位,其他位均为保留位,各标志位的功能可以参考stm32中文参考指南。USART_DR是一个32位的寄存器,但只有0~8位用于存储数据,其他位均为保留位,DR寄存器包含了发送和接收的数据,由发送TDR...https://blog.csdn.net/Zn_Hua/article/details/120738149

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值