【GD32F303红枫派开发板使用手册】第十五讲 USART-printf打印实验
2024-12-12 来源:elecfans
15.1实验内容
通过本实验主要学习以下内容:
串口简介
GD32F303串口工作原理
使用printf打印信息
15.2实验原理
15.2.1串口简介
串口,从广义上看,指所有串行通信接口,比如RS232、RS422、RS485、SPI、IIC等。串行通讯是指仅用一根接收线和一根发送线就能将数据以位进行传输的通讯方式。和串行通讯相对应的是并行通讯,并行通信指一个传输接口可以传输8个bit即一个byte(有时甚至更多),虽然串行通信比并行通信慢,但是串口可以在仅仅使用两根线的情况下就能实现数据的传输。
对于GD32F303来说,串口一般特指USART(通用同步异步收发器 )和UART(通用异步收发器 )。USART/UART提供了一个灵活方便的串行数据交换接口,数据帧可以通过全双工或半双工,同步或异步的方式进行传输。红枫派开发板搭载的GD32F303ZET6总共拥有5个串口,(USART+UART) 对于一般应用来说足够使用了。
15.2.2串口通信帧介绍
GD32F303的串口通信只需要3条线组成,分别为TX(发送线)、RX(接收线)和GND,对于两个通信结点,TX和RX需要交叉连接,如下示例:

下面来介绍下串口数据帧组成。
以下为一个标准的串口通信帧:

一个串口帧由空闲、起始位、数据位、校验位以及停止位组成,传输的数据地位在前,高位再后。
空闲:串口TX或RX数据线上没有传输任何数据时,则该线处于为空闲状态。空闲是TX和RX都是处于高电平。
起始位:占一个bit时间,标志数据起始,由一个逻辑0(低电平)的数据位表示。当发送方开始发送一帧数据时,起始位会最先发送,而对于接收方来说,检测到起始位后,即使自己的接收时钟与发送方的数据同步。
数据位:数据位紧跟在起始位之后,是通信中的真正有效信息。数据位的位数可以由通信双方共同约定,对于GD32F303来说,数据位一般只有8位。
校验位:校验位占一bit时间,GD32F303可以设置校验位为:奇校验、偶校验或无校验。校验位是为了保证通信的可靠性,如果是奇校验,需要保证传输的数据总共有奇数个逻辑高位,如果是偶校验,需要保证传输的数据总共有偶数个逻辑高位。以传输传输数据A:0x01000001为例,如果设置了奇校验,则需要在校验位传输“1”,如果是偶检验,则传输“0”。奇偶校验是由硬件处理的,当设置好校验位后,硬件会自动根据需要传输的数据自动插入校验位。
注意:GD32F303的数据位可设置为8bit和9bit两种方式,当设置了奇校验或偶校验,一定要将数据位设置为9bit;而设置了无校验时,需要将数据位设置为8bit。 |
停止位:它是一帧数据的结束标志,可以是1bit、1.5bit、2bit个逻辑“1”。
15.2.3串口波特率
波特率是串口通信中一个非常重要的参数,串口通信传输双方必须要设置一样的串口波特率,否则通讯就会出错。波特率可以认为是比特率,即每秒传输的位数。一般波特率可以是9600、19200、115200等等,如果设置波特率为9600,设置通信帧为1bit起始位+8bit数据帧+无校验+1bit停止位,那么每秒钟最多可以传输9600bit/10bit = 960个字节。
现在重点介绍下GD32F303串口接收器的工作原理。GD32F303串口接收器采用的是16倍过采样,即发送方发送数据后,GD32F303串口接受器都会将每个bit采样16次:

在默认情况下,接收器通过获取三个采样点的值来估计该位的值。如果在3个采样点中有2个或3个为0,该数据位被视为0,否则为1。如果3个采样点中有一个采样点的值与其他两个不同,不管是起始位,数据位,奇偶校验位或者停止位,都将产生噪声错误(NERR)。
15.2.4GD32F303串口设置步骤
串口设置的一般步骤为:
GPIO时钟开启、串口时钟开启
GPIO设置,一般发送IO需要设置为AF模式,接受IO设置为in-floating模式
串口复位
串口参数配置,主要为波特率、数据位长度、校验位设置、停止位长度
依据是否需要使用中断或DMA进行中断配置或DMA配置
使能串口
编写中断处理函数
15.3硬件设计
红枫派开发板设计了一个USB转UART功能,通过USB TypeC线将电脑和开发板连接起来,就可以进行电脑和开发板之间的串口通讯了。

15.1实验内容
通过本实验主要学习以下内容:
串口简介
GD32F303串口工作原理
使用printf打印信息
15.2实验原理
15.2.1串口简介
串口,从广义上看,指所有串行通信接口,比如RS232、RS422、RS485、SPI、IIC等。串行通讯是指仅用一根接收线和一根发送线就能将数据以位进行传输的通讯方式。和串行通讯相对应的是并行通讯,并行通信指一个传输接口可以传输8个bit即一个byte(有时甚至更多),虽然串行通信比并行通信慢,但是串口可以在仅仅使用两根线的情况下就能实现数据的传输。
对于GD32F303来说,串口一般特指USART(通用同步异步收发器 )和UART(通用异步收发器 )。USART/UART提供了一个灵活方便的串行数据交换接口,数据帧可以通过全双工或半双工,同步或异步的方式进行传输。红枫派开发板搭载的GD32F303ZET6总共拥有5个串口,(USART+UART) 对于一般应用来说足够使用了。
15.2.2串口通信帧介绍
GD32F303的串口通信只需要3条线组成,分别为TX(发送线)、RX(接收线)和GND,对于两个通信结点,TX和RX需要交叉连接,如下示例:
wKgZomZBdHiABIwiAAHgknaaCew303.png
下面来介绍下串口数据帧组成。
以下为一个标准的串口通信帧:
wKgZomZBdIWACJN4AAGZCDszKEQ933.png
一个串口帧由空闲、起始位、数据位、校验位以及停止位组成,传输的数据地位在前,高位再后。
空闲:串口TX或RX数据线上没有传输任何数据时,则该线处于为空闲状态。空闲是TX和RX都是处于高电平。
起始位:占一个bit时间,标志数据起始,由一个逻辑0(低电平)的数据位表示。当发送方开始发送一帧数据时,起始位会最先发送,而对于接收方来说,检测到起始位后,即使自己的接收时钟与发送方的数据同步。
数据位:数据位紧跟在起始位之后,是通信中的真正有效信息。数据位的位数可以由通信双方共同约定,对于GD32F303来说,数据位一般只有8位。
校验位:校验位占一bit时间,GD32F303可以设置校验位为:奇校验、偶校验或无校验。校验位是为了保证通信的可靠性,如果是奇校验,需要保证传输的数据总共有奇数个逻辑高位,如果是偶校验,需要保证传输的数据总共有偶数个逻辑高位。以传输传输数据A:0x01000001为例,如果设置了奇校验,则需要在校验位传输“1”,如果是偶检验,则传输“0”。奇偶校验是由硬件处理的,当设置好校验位后,硬件会自动根据需要传输的数据自动插入校验位。
注意:GD32F303的数据位可设置为8bit和9bit两种方式,当设置了奇校验或偶校验,一定要将数据位设置为9bit;而设置了无校验时,需要将数据位设置为8bit。
停止位:它是一帧数据的结束标志,可以是1bit、1.5bit、2bit个逻辑“1”。
15.2.3串口波特率
波特率是串口通信中一个非常重要的参数,串口通信传输双方必须要设置一样的串口波特率,否则通讯就会出错。波特率可以认为是比特率,即每秒传输的位数。一般波特率可以是9600、19200、115200等等,如果设置波特率为9600,设置通信帧为1bit起始位+8bit数据帧+无校验+1bit停止位,那么每秒钟最多可以传输9600bit/10bit = 960个字节。
现在重点介绍下GD32F303串口接收器的工作原理。GD32F303串口接收器采用的是16倍过采样,即发送方发送数据后,GD32F303串口接受器都会将每个bit采样16次:
wKgaomZrn7uAGn0wAAA5hJtLtTE295.png
在默认情况下,接收器通过获取三个采样点的值来估计该位的值。如果在3个采样点中有2个或3个为0,该数据位被视为0,否则为1。如果3个采样点中有一个采样点的值与其他两个不同,不管是起始位,数据位,奇偶校验位或者停止位,都将产生噪声错误(NERR)。
15.2.4GD32F303串口设置步骤
串口设置的一般步骤为:
GPIO时钟开启、串口时钟开启
GPIO设置,一般发送IO需要设置为AF模式,接受IO设置为in-floating模式
串口复位
串口参数配置,主要为波特率、数据位长度、校验位设置、停止位长度
依据是否需要使用中断或DMA进行中断配置或DMA配置
使能串口
编写中断处理函数
15.3硬件设计
红枫派开发板设计了一个USB转UART功能,通过USB TypeC线将电脑和开发板连接起来,就可以进行电脑和开发板之间的串口通讯了。
wKgZomZrn8mAOLyYAAIK6BT2g0g316.png
- GD32F303学习笔记(1)——搭建环境、编译烧写
- 【GD32F303红枫派开发板使用手册】第二十四讲 DHT11温湿度传感器检测实验
- 【GD32F303红枫派开发板使用手册】第十一讲 ADC-电源电压单通道ADC检测实验
- 【GD32F303红枫派开发板使用手册】第二十一讲 I2C-EEPROM读写实验
- 【GD32F303红枫派开发板使用手册】第二十讲八 USB-虚拟串口实验
- 【GD32F303红枫派开发板使用手册】第十七讲 USART-中断串口收发实验
- 【GD32F303红枫派开发板使用手册】第十二讲 ADC-双轴按键摇杆多通道循环采样实验
- 【GD32F303红枫派开发板使用手册】第四讲 GEXTI-按键中断检测实验
- 【GD32F303红枫派开发板使用手册】第十四讲 DAC-输出电压实验
- 【GD32F303红枫派开发板使用手册】第十九讲 SPI-SPI NOR FLASH读写实验
- 六大全新产品系列推出,MCX A微控制器家族迎来创新
- 意法半导体全新STM32C5系列,重新定义入门级微控制器性能与价值,赋能万千智能设备
- 从控制到系统:TI利用边缘AI重塑嵌入式MCU的边界
- 模组复用与整机重测在SRRC、CCC、CTA/NAL认证中的实践操作指南
- 有源晶振与无源晶振的六大区别详解
- 英飞凌持续巩固全球微控制器市场领导地位
- 使用 Keil Studio for Visual Studio Code开发 STM32 设备
- 蓝牙信道探测技术原理与开发套件实践
- LoRa、LoRaWAN、NB-IoT与4G DTU技术对比及工业无线方案选型分析
- Microchip 推出生产就绪型全栈边缘 AI 解决方案,赋能MCU和MPU实现 智能实时决策




