stm32学习笔记 |
您所在的位置:网站首页 › dr·怎么读 › 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呢? 举例说明,假设波特率为115200,串口1时钟PLCK2为72MHz,则有 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... |
今日新闻 |
推荐新闻 |
CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3 |