stm32学习笔记(五)—— USART串口

本文详细介绍了STM32的USART串口通信,包括物理层的电平标准,协议层的波特率、起始和结束位、校验位,以及串口功能、寄存器配置、应用函数等。讲解了如何初始化结构体、设置波特率,以及发送和接收数据的函数实现。
摘要由CSDN通过智能技术生成

目录

一. 串口介绍

1.1 物理层

 1.2 协议层

1.2.1 波特率和比特率

1.2.2 起始和结束

1.2.3 有效数据

1.2.4 校验位

二. 串口功能讲解

三. 寄存器介绍

3.1 状态寄存器​

3.2 数据寄存器

 3.3 波特率寄存器

3.4 三个控制寄存器

四. 应用函数

4.1 初始化结构体

4.2 初始化函数

4.3 应用函数

4.3.1 发送数据

4.3.2 接收数据

4.3.3 重定位printf和scanf函数


简单介绍一下串口,然后介绍了串口的初始化结构体、函数,还有一些有关串口的应用

一. 串口介绍

1.1 物理层

        电平有两种,一个是RS232标准,一种是TTL标准。在嵌入式用的是TTL标准

 

 1.2 协议层

串口通信时,一个控制器的发送口TXD与另一个控制器的接收口RXD相连,一个控制器的接收口RXD与另一个控制器的发送口TXD相连,这样才能一个发一个收

1.2.1 波特率和比特率

        波特率和比特率不是一个东西,波特率与码元相关,而比特率之和比特位数有关

1.2.2 起始和结束

        通过寄存器设置,可以设置一个起始位和0.5、1、1.5、2个停止位

        其中,起始位是一个低电平信号,停止位是高电平

1.2.3 有效数据

        首先来了一个起始位,接着就是n位数据位,数据位的具体位数可以通过寄存器调节

1.2.4 校验位

        一般自带的有奇偶校验位,但是我现在打工的地方用的CRC校验比较多,不用自带的奇偶校验。

        关于奇偶校验,指的是,通过在数据位后面多放一个位用来加上前面数据中“1”的个数来使1的总数是奇还是偶。比如选定了奇校验,而数据中有3个1,那么这个位写0就好了;如果前面有四个1,那这个位就会变成1,这时1的总数是五个,为奇。

二. 串口功能讲解

        一般异步串行通信用的比较多,就介绍这种,异步串行用到的引脚只有TX、RX两个。SCLK用于同步发送时的时钟信号,IRDA_OUT和IRDA_IN是在IRDA模式下用到的,CTS和RTS时用于流控制,当串口准备好接收新数据时nRST变低,接收寄存器满时,nRST变高;串口发送时,监测nCTS,如果是低,就可以发送下一帧数据,如果是高就不发送下一帧。这两个引脚用在硬件流控制中

         串口向外发送数据时,需要把数据写到发送数据寄存器里,然后数据会被传送到发送移位寄存器中,然后被移位寄存器一位移位移出来送到外面。接收同理,只不过是反过来的过程,接收时,接收移位寄存器把数据一位一位移进来然后给到接收数据寄存器

        其中,发送数据寄存器和接收数据寄存器在操作的时候是同一个名字,都叫USART_DR,但是物理意义上是两个寄存器

        发送时,先发送低位

三. 寄存器介绍

3.1 状态寄存器

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值