【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/sbps),是衡量串行数据传输速度快慢的指标。常用的串口传输速率(波特率)有960019200115200等。

二、异步串行通信协议

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

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

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

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

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

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

三、异步串行通信接口

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

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

四、STM32F103的USART

1、USART功能介绍

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

说明: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、打印显示名字信息(先调试串口发送)


总结

  • 42
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

面包板扎

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值