STM32 HAL Proteus系列教程:串口USART查询方式详解

实现目标

1、利用UART实现上位机PC与下位机开发板之间的数据通信

2、学会STM32CubeMX软件关于UART的配置

3、具体目标:1、实现开发板向上位机PC发送学生姓名;2、上位机发送命令控制下位机开发板LED1的亮灭。


一、串行通信的几个概念

1、通信方式分类

        

1.1串行通信和并行通信

 串行通信Serial Transmission),是指通过一根数据线或少量数据线(少于8根)将数据一位一位地按顺序依次传送。

并行通信Parallel Transmission),是指用多条数据线同时传送多位数据,通常以8位、16位、32位等数据位传送。

1.2 同步通信与异步通信

同步通信是连续串行传送数据的通信方式,要求收发双方的时钟必须保持严格的同步。

 特点:输速率较高

异步通信在发送的有效数据中增加一些用于同步的控制位,比如开始位和停止位等,数据以字符为单位组成数据帧进行传送,收发双方需约定数据的传输速率。

特点:1.传输效率较低;2.通信设备实现简单、成本低。

1.3 串行通信可以分为单工、半双工和全双工三种通信方式

2、波特率

波特率:每秒传输的二进制位数,单位为比特每秒(bit/s,bps),是衡量串行数据传输速度快慢的指标。常用的串口传输速率(波特率)有9600、19200和115200等。

二、异步串行通信协议

异步串行通信标准的数据帧由起始位、数据位、校验位、停止位四部分组成。数据传输速率为507510015030060012002400480096001920038400波特。

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

数据位:要发送的数据,数据长度可以是58位。

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

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

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

三、异步串行通信接口

UART(Universal Asynchronous Receiver Transmitter,通用异步收发传输器)是一个全双工通用异步串行收/发模块,主要用于打印程序调试信息、上位机和下位机的通信以及ISP程序下载等场合。

        UART至少需要两根数据线用于通信双方进行数据双向同时传输,最简单的UART接口由TxD、RxD、GND共3根线组成。其中,TxD用于发送数据,RxD用于接收数据,GND为信号地线,通过交叉连接实现两个芯片间的串口通信。

四、STM32F103的USART

1、USART功能介绍

        STM32F103大容量产品有5个串行通信接口,USART4和USART5为2个通用异步收发器,不支持同步模式,只有异步通信功能。

说明:STM32F103C6T6只有两个串口,即USART1和USART2 .

2、USART编程模式


轮询模式

CPU不断地查询I/O设备是否准备就绪,如果准备就绪就发送,否则提示超时错误;


中断方式

通过中断请求线,在I/O设备准备就绪时向CPU发出中断请求,CPU中止正在进行的工作转向处理I/O设备的中断事件


DMA
方式

直接存储器传送,不经过CPU直接在内存和外设之间进行批量数据交换,适用于高速大批量成组数据的传输

五、原理图设计

六、STM32CubeMX 配置

1.USART1配置

七、程序设计

1、定义一个数组

/* USER CODE BEGIN PV */

unsigned  char tem[1];

/* USER CODE END PV */

2、功能程序设计

 //HAL_UART_Transmit(&huart1,(uint8_t *)"Hello 王小波!\r\n", 20, 200);
 //HAL_Delay(10);
 HAL_UART_Receive(&huart1, tem, 1, 2);

 if (tem[0] == 1)
 {
    HAL_GPIO_WritePin(LED1_GPIO_Port, LED1_Pin, GPIO_PIN_RESET);
    HAL_UART_Transmit(&huart1,tem, 1, 200);

 }
 if (tem[0] == 2)
 {
    HAL_GPIO_WritePin(LED1_GPIO_Port, LED1_Pin, GPIO_PIN_SET);
    HAL_UART_Transmit(&huart1,tem, 1, 200);
 }

八、实验现象

说明:1、在做次命令控制LED时,先将传发送函数屏蔽。2、串口终端发送1,LED点亮,串口终端接收显示0X01;发送2,LED1熄灭。

九、仿真实现

1、打印显示名字信息(先调试串口发送)


总结

作者:面包板扎

物联沃分享整理
物联沃-IOTWORD物联网 » STM32 HAL Proteus系列教程:串口USART查询方式详解

发表评论