使用串口实现接收和发送功能

使用串口实现接收和发送功能

一、前言
本文以串口-USART1为例,初步实现接收和发送功能,使用的是stm32f1板子,基于火哥教学做的自我小结。电脑设备需要安装串口调试助手和USB转串口CH340G的驱动。

二、正文
1.硬件设计:
将 CH340G 的 TXD 引脚与 USART1 的 RX 引脚连接, CH340G 的 RXD 引脚与USART1 的 TX 引脚连接,此处已在开发板上配置好了,我们只需进行编程。
使用串口实现接收和发送功能_第1张图片

—————————————————————————————————
USART1的引脚重映射是PA9和PA10
使用串口实现接收和发送功能_第2张图片

2.软件设计:
编写的要点:①提前在头文件中写好需要的宏定义 ②初始化GPIO和USART1编写于一个函数中 ③串口中断优先级配置,包括配置接受中断 ④使能串口 ⑤编写中断函数 ⑥编写发送和接收函数
—————————————————————————————————

①编写头文件“bsp_usart.h”
使用串口实现接收和发送功能_第3张图片
若想使用其它串口,只需要在上面改动GPIO、USART的时钟的定义,并且把 CH340G 跟 USART1 直接的连接跳帽拔掉,然后再把其他串口的 IO 用杜邦线接到 CH340G 的收发引脚即可。
—————————————————————————————————
②编写功能文件“bsp_usart.c”

1.编写配置串口中断优先级函数
使用串口实现接收和发送功能_第4张图片
2.编写串口和GPIO的初始化、使能函数
使用串口实现接收和发送功能_第5张图片
这里为函数的上半部分是时钟的开启和GPIO初始化。
使用串口实现接收和发送功能_第6张图片
这里为函数的下半部分是初始化串口。数据帧字长,可选 8 位或 9 位。它设定 USART_CR1 寄存器的 M 位的值。如果没有使能奇偶校验控制,一般使用 8 数据位;如果使能了奇偶校验则一般设置为 9 数据位。 一般默认停止位是1。

3.编写发送函数
使用串口实现接收和发送功能_第7张图片
本文只展示发送一个字节的,后续文章会展示发送字符串和两个字节的。通过使用 USART_GetFlagStatus 函数来获取 USART事件标志来实现发送完成功能等待,它接收两个参数,一个是 USART,一个是事件标志。这里我们循环检测发送数据寄存器为空这个标志,当跳出 while 循环时说明发送数据寄存器为空,发送完毕。
—————————————————————————————————
③编写中断函数
使用串口实现接收和发送功能_第8张图片
该函数编写于文件“stm32f10x_it.c”,该文件主要是用来存放中断函数。
————————————————————————————————
④编写主函数文件“main.c”
使用串口实现接收和发送功能_第9张图片
将这两个功能函数放入主函数中,其中发送函数放入参数第一个为串口,如USARTx, x可以为1、2、3、4、5,第二个是要发送的字节,这里只能发送一个字节,并且发送出去的都是字符,转化为相应的ASCII码。
————————————————————————————————
最后,将代码烧入到开发板中,并打开串口调试助手,将助手中的波特率、端口、停止位等配置为与代码配置串口的相同就可以了。
使用串口实现接收和发送功能_第10张图片
这是最终的结果
使用串口实现接收和发送功能_第11张图片
————————————————————————————————
这是一个自我小结,如果有什么错误的地方,尽请斧正,谢谢观看!

你可能感兴趣的:(使用串口实现接收和发送功能)