stm32学习笔记

您所在的位置:网站首页 dr·怎么读 stm32学习笔记

stm32学习笔记

2024-07-13 02:46| 来源: 网络整理| 查看: 265

主要讲解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



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3