HAL库学习05---串口通信(三种方式轮询、中断、DMA)

文章介绍了串行通信的两类方式——同步和异步,重点讲解了UART和USART的区别以及STM32与PC之间的数据交互。在STM32中,通过UART进行异步通信,包括轮询、中断和DMA三种收发模式。中断和DMA方式提高了通信效率,中断允许在接收时执行其他任务,而DMA则在后台处理数据传输。

一、原理介绍

串行通信的通讯方式可以分为两类:
1、同步通信,带时钟信号的传输,如SPI、IIC、USART
2、异步传输,不带时钟信号的传输,如UART、USART

UART通用异步收发器:UART口指的是一种物理接口形式(硬件)

在这里插入图片描述UART是异步,全双工串口总线。它比同步串口复杂很多。有两根线,一根TXD用于发送,一根RXD用于接收。
UART的串行数据传输不需要使用时钟信号来同步传输,而是依赖于发送设备和接收设备之间预定义的配置。(约定固定波特率) 对于发送设备和接收设备来说,两者的串行通信配置应该设置为完全相同。
在这里插入图片描述
起始位:表示数据传输的开始,电平逻辑为“0” 。 数据位:可能值有5、6、7、8、9,表示传输这几个bit 位数据。一般取值为8,因为一个ASCII 字符值为8 位。 奇偶校验位:用于接收方对接收到的数据进行校验,校验“1” 的位数为偶数(偶校验) 或奇数(奇校验),以此来校验数据传送的正确性,使用时不需要此位也可以。 停止位:表示一帧数据的结束。电平逻辑为“1”。 如果用通用IO口模拟UART总线,则需一个输入口,一个输出口。

USART是通用同步/异步收发器:其可选使用异步方式,那将和UART无区别,如果是同步,则需要多一根时钟线(USART_CK)

串口发送接收有三种模式:轮询、中断和 DMA
补充几个名词:
Asynchronous:异步通信
Synchronous : 同步通信
Single Wire (Half-Duplex) :单线/半双工

二、STM32和PC进行数据互发

1、扫描接收发送

(1)、选择USART
(2)、设置MODE为异步通信(Asynchronous)
引脚一般自动设置为PA9、PA10
在这里插入图片描述
首先要在main.c或者是usart.c中对printf()和scanf()进行重定义,方便使用
记得要在头文件中输入#include "stdio.h"

int fputc(int ch,FILE *f)
{
   
   
HAL_UART_Transmit (&huart1 ,(uint8_t *)&ch,1,HAL_MAX_DELAY );
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值