STM32F103ZET6+USART+串口通信

STM32F103ZET6+USART+串口通信

一、 通信概述

通信就是数据交换、信息交换。嵌入式系统中,微控制器与其他外围设备相互连接,系统各部件之间进行数字信号/数据的传输就是通信,无论是大型嵌入式系统还是小型嵌入式系统,都需要用到通信。

通信的方式有很多种,按数据传送方式可分为串行通信和并行通信;按通信数据同步方式可分为同步通信和异步通信;在串行通信中按数据传输方向及与时间的关系可分为单工通信、半双工通信和全双工通信。

STM32F103ZET6+USART+串口通信
波特率:每秒传输的二进制位数,单位为比特每秒(bit/s,bps),是衡量串行数据传输速度快慢的指标。

字符速率:每秒所传输的字符数:波特率=字符速率×每个字符包含的位数

五、 异步串行通信协议

异步串行通信标准的数据帧由起始位、数据位、校验位、停止位四部分组成。数据传输速率为50、75、100、150、300、600、1200、2400、4800、9600、19200和38400波特。

起始位:占一位,位于数据帧的开头,以逻辑“0”表示传输数据的开始。

数据位:要发送的数据,数据长度可以是5~8位。

校验位:占一位,用于检测数据是否有效。

停止位:一帧传送结束的标志,根据实际情况定,可以是1、1.5或2位。

空闲位:数据传输完毕,用“1”表示当前线路上没有数据传输。

UART(Universal Asynchronous Receiver Transmitter,通用异步收发传输器)是一个全双工通用异步串行收/发模块,主要用于打印程序调试信息、上位机和下位机的通信以及ISP程序下载等场合。
UART至少需要两根数据线用于通信双方进行数据双向同时传输,最简单的UART接口由TxD、RxD、GND共3根线组成。其中,TxD用于发送数据,RxD用于接收数据,GND为信号地线,通过交叉连接实现两个芯片间的串口通信。

STM32F103ZET6+USART+串口通信
1、声明GPIO和USART初始化结构体

2、串口所用的GPIO时钟使能,串口时钟使能

开启外设时钟RCC_APB2PeriphClockCmd()。例如:使能USART1、GPIOA的时钟,所用的函数为

3、 设置I/O引脚功能为复用推挽输出、浮空输入

串口使用的是I/O的复用功能。USART1的发送引脚为PA9,需将PA9配置为复用推挽输出;USART1的输入引脚为PA10,需将PA10配置为浮空输入。

4、 设置波特率,设置数据格式:数据位、停止位、校验位

5、使用串口初始化函数USART_Init()初始化相应串口

6、利用串口使能函数USART_Cmd()使能相应串口

7、应用程序编写
若使用中断,则编写串口中断函数void USART1_IRQHandler(void)

接下来,设计通过串口1利用查询方式实现发送字符命令”Y”点亮LED灯,发送字符命令”N”熄灭LED灯。并且重定向printf()函数和scanf()函数,即重写fput()函数和fget()函数

采用查询方式进行数据通信

在之前的LED工程上,新建两个文件,一个是myusart.h文件,另一个是myusart.c文件

myusart.h文件的代码如下:

myusart.c文件的代码如下:

main.c文件的代码如下:

运行效果

打开串口调试助手

STM32F103ZET6+USART+串口通信

接下来,设计通过串口1利用中断方式实现发送字符命令”1″点亮LED灯,发送字符命令”0″熄灭LED灯。并且重定向printf()函数和scanf()函数,即重写fput()函数和fget()函数

采用中断方式进行数据通信

myusart.h文件的代码如下:

来源:辰小夏

声明:本站部分文章及图片转载于互联网,内容版权归原作者所有,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!

上一篇 2022年5月3日
下一篇 2022年5月3日

相关推荐