嵌入式学习笔记 | 您所在的位置:网站首页 › 寄存器是干什么的 › 嵌入式学习笔记 |
文章目录
前言USART的相关寄存器介绍状态寄存器:USARTX->SR具体位代表的含义实际代码
数据寄存器 USARTX->DR波特率寄存器 USARTX->BRR控制寄存器 (USART_CR)控制寄存器1(USART_CR1)控制寄存器2(USART_CR2)
GPIO的复用模式查询对应GPIO管脚配置为复用模式
编程实现串口收发一个字节串口打印乱码接收一个字符运行效果
M4系列目录
前言
上一篇中,对串口做了个概述,主要是介绍了串口通信的特征,异步串行全双工通信,然后就是结合串口的框图梳理了一下STM32中USART的配置流程以及发送接收数据的流程,本文将接着上篇的内容,对串口的寄存器做个介绍,然后实现一个简单的收发实验。 USART的相关寄存器介绍根据之前GPIO的经验,咱们可以打开中文编程手册去找到对应的章节,然后依次看一下寄存器的每个位的功能。具体的位置在手册的第20章。 首先第一个寄存器,就是状态寄存器,其作用就是用于描述USART的工作状态,为编程者提供一个串口的实时状态,前面分析框图的时候,有提到过,发送时需要判断上一帧有没有发送完毕;接收时需要判断一帧数据有没有接收完毕,当时说的是有内部的标志,这其中的标志就在此寄存器中。 状态寄存器是只读。 位 7 TXE:发送数据寄存器为空 (Transmit data register empty) 用于判断发送数据寄存器 当发送数据寄存器为空 1 当发送数据寄存器不为空 0 从发送数据寄存器发送到移位寄存器 这一位置1 位 6 TC:发送完成 (Transmission complete) 用于判断上一帧数据是否发送完成 发送完成 1 发送未完成 0 移位寄存器将数据发送完了,会将这一位置1;用于判断上一帧有么有发送完毕,没有就等待。 参照之前GPIO等待松手的写法,等待发送完成的代码应该是下面这个样子: while( !(USART1->SR & 1 //等待之前的发送完成 while(!(USART1->SR & (1 u8 str; //等待接收完成 while(!(USART1->SR & (1DR的 寄存器,那么它的作用又是什么呢,接下里就对它来做个分析。 数据寄存器 USARTX->DR注意手册中红框的表述,前面的框图中,发送和接收是两个数据寄存器,但实际在单片机内部是一个,这两个寄存器的唯一区别方法就是,执行写操作就是发送数据寄存器(TDR),执行读操作的时候就是接受数据寄存器(RDR)。这也就解释了为什么上面的代码中,读和写都是使用的DR寄存器。 然后就是波特率寄存器,根据昨天的框图,在波特率的配置过程中,只用将计算的DIV结构写入一个寄存器即可。如下图:该寄存器的4-15位就是写入DIV的整数部分,0-3位就是写入DIV的小数部分。 |
CopyRight 2018-2019 实验室设备网 版权所有 |