03 HAL库下UART的使用

2023-12-31 16:53
文章标签 使用 03 hal uart 库下

本文主要是介绍03 HAL库下UART的使用,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

引言: 需要使用到的uart调试工具在文章最后的资料里面

题外话:uart和usart的区别

UART(Universal Asynchronous Receiver/Transmitter)和USART(Universal Synchronous/Asynchronous Receiver/Transmitter)都是串行通信接口,用于将数据以串行方式发送和接收。

它们之间的区别如下:

1. 同步通信支持:USART支持同步通信,可以通过在时钟信号的同步下进行数据传输。而UART只支持异步通信,数据的传输不需要时钟信号的同步。

2. 传输速率:由于支持同步通信,USART通常可以实现比UART更高的传输速率。它可以通过调整时钟信号的频率来支持不同的传输速率。而UART的传输速率通常较低。

3. 数据格式:UART和USART的数据格式在异步通信时一致,都可以支持不同的数据位、校验位和停止位等设置。但在同步通信时,USART还需要设置数据位的同步配置。

4. 错误检测:USART通常支持多种错误检测机制,如奇偶校验、校验和等。而UART通常只支持奇偶校验。

5. 数据帧缓冲区:USART通常具有数据帧缓冲区,可以在数据接收过程中暂存多个数据帧。而UART通常只有一个单一的数据接收缓冲区。

总之,UART和USART都是常见的串行通信接口,根据具体的应用需求选择合适的接口。如果需要更高的速率、同步通信和更多的错误检测机制,可以选择USART。如果只需要简单的异步通信,UART就可以满足需求。

一、UART的相关知识


1. 通信相关知识的基本介绍

  • 通信的基本概念

        在单片机的应用中,数据的通信是必不可少的一部分。比如:单片机和上位机、单片机和外围器件之间,它们都有数据通信的需求。由于设备之间的电气特性、传输速率、可靠性要求各不相同,于是就有了各种通信类型、通信协议。我们最常见的有:UART、IIC、SPI、CAN、USB 等。常见的数据通信都具有这四种概念,分别是:数据通信方式、数据传输方向、数据同步方式、通信速率。

        这么来说吧, 大家思考一下这个问题, 编程的两个大核心是什么?是不是就是算法和数据, 而在单片机或者说是物联网的开发场景中获取到数据常常需要使用到这些通信协议, 拿到单片机外围设备中的各种数据信息, 在转交给CPU按照程序员需要的业务逻辑进行处理。

  • 数据通信方式

按数据通信方式分类,可分为串行通信和并行通信两种

所谓的串行通信就是数据按照二进制位一位一位的处理, 而并行通信是指, 这里举个例子,假设由一个字节的数据等待发送出去, 一个字节也就是八位,看到上图就是将一个数据的八位通过八根导线一次性将八位数据一次性发送出去。

  • 数据传输方向

根据数据传输方向,通信又可分为全双工、半双工和单工通信。

  • 数据同步方式

这里所谓的数据的同步方式本质就是收发双方有没有使用同一个时钟, 比如uart收发双方都是使用各自的时钟这种就是异步的, 为了不让数据产生太大的误差, uart都是一个字节一个字节的发送的, 后面会在讲uart的具体通信的时序图。

  • 通信速率

在数字通信系统中,通信速率(传输速率)指数据在信道中传输的速度,它分为两种:传信率和传码率。

传信率(Rb):每秒钟传输的信息量,即每秒钟传输的二进制位数,通常用 Rb 表示,单位为 bit/s(即比特每秒),因而又称为比特率。

传码率(RB):每秒钟传输的码元个数,通常用 RB 表示,单位为 Bd 或 Baud(即波特每秒),因而又称为波特率。

2. UART的时序图

Universal Asynchronous Receiver Transmitter 即通用异步收发器,是一种通用的串行、异步通信总线 , 该总线有两条数据线,可以实现全双工的发送和接收 在嵌入式系统中常用于主机与辅助设备之间的通信

 

串口的实物图

大家别惊讶, 标准的uart协议采取的是TTL电平进行数据传输, 传输距离短, 干扰大,所有在此基础上在标准的uart的协议上在其硬件特性上增加了很多硬件特性, 采用差分信号进行传输, 大大提高高传输距离。这些我们做一下了解就行, 因为软件对uart的操作没变化。

二、实验开始


1. 分析原理图

大家找到自己实验平台的uart的引脚, 接着老套路, 配置引脚为uart模式。

2. 引脚配置

配置为uart收发模式

接着设置uart的模式修改为异步模式, 其它的就不用修改了, 波特率那里也可以改, 打死但是记得使用串口调试软件的时候软甲的波特率记得修改成和这里的一样, 不然会出现乱码。

3. 代码编写

这里我就将使用到uart中的函数主要的部分拿过来, 很简单的, 大家自己的实验的时候可以自己编写规范一些, 将代码写成工程代码的那种样式。

/*printf函数的输出重定向*/
int __io_putchar(int ch)
{HAL_UART_Transmit(&huart4,(uint8_t*)&ch,1,HAL_MAX_DELAY);return ch;
}HAL_UART_Receive(&huart4, (uint8_t *)buffer, strlen((const char *)buffer)-1, 100);
HAL_UART_Transmit(&huart4, (uint8_t *)buffer, strlen((const char *)buffer), 100);
memset(buffer, 0, strlen((const char *)buffer));
printf("Hello World\n");
HAL_Delay(500);

__io_putchar函数在工程中写上之后,当我们再使用printf函数的时候单片机就会把数据通过巉口发送给我们的电脑。为什么发送给电脑, 因为咱们的单片机没有屏幕呀。

这样之后我们在做各种项目和实验的时候就可以使用printf函数来对代码进行分析调试了。

三、资料提供


链接:https://pan.baidu.com/s/1WfDXoHmvgLQEpHfbQx0zBg 
提取码:1234 

这篇关于03 HAL库下UART的使用的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/556630

相关文章

Git可视化管理工具(SourceTree)使用操作大全经典

《Git可视化管理工具(SourceTree)使用操作大全经典》本文详细介绍了SourceTree作为Git可视化管理工具的常用操作,包括连接远程仓库、添加SSH密钥、克隆仓库、设置默认项目目录、代码... 目录前言:连接Gitee or github,获取代码:在SourceTree中添加SSH密钥:Cl

Python中模块graphviz使用入门

《Python中模块graphviz使用入门》graphviz是一个用于创建和操作图形的Python库,本文主要介绍了Python中模块graphviz使用入门,具有一定的参考价值,感兴趣的可以了解一... 目录1.安装2. 基本用法2.1 输出图像格式2.2 图像style设置2.3 属性2.4 子图和聚

windows和Linux使用命令行计算文件的MD5值

《windows和Linux使用命令行计算文件的MD5值》在Windows和Linux系统中,您可以使用命令行(终端或命令提示符)来计算文件的MD5值,文章介绍了在Windows和Linux/macO... 目录在Windows上:在linux或MACOS上:总结在Windows上:可以使用certuti

CentOS和Ubuntu系统使用shell脚本创建用户和设置密码

《CentOS和Ubuntu系统使用shell脚本创建用户和设置密码》在Linux系统中,你可以使用useradd命令来创建新用户,使用echo和chpasswd命令来设置密码,本文写了一个shell... 在linux系统中,你可以使用useradd命令来创建新用户,使用echo和chpasswd命令来设

Python使用Matplotlib绘制3D曲面图详解

《Python使用Matplotlib绘制3D曲面图详解》:本文主要介绍Python使用Matplotlib绘制3D曲面图,在Python中,使用Matplotlib库绘制3D曲面图可以通过mpl... 目录准备工作绘制简单的 3D 曲面图绘制 3D 曲面图添加线框和透明度控制图形视角Matplotlib

Pandas中统计汇总可视化函数plot()的使用

《Pandas中统计汇总可视化函数plot()的使用》Pandas提供了许多强大的数据处理和分析功能,其中plot()函数就是其可视化功能的一个重要组成部分,本文主要介绍了Pandas中统计汇总可视化... 目录一、plot()函数简介二、plot()函数的基本用法三、plot()函数的参数详解四、使用pl

使用Python实现IP地址和端口状态检测与监控

《使用Python实现IP地址和端口状态检测与监控》在网络运维和服务器管理中,IP地址和端口的可用性监控是保障业务连续性的基础需求,本文将带你用Python从零打造一个高可用IP监控系统,感兴趣的小伙... 目录概述:为什么需要IP监控系统使用步骤说明1. 环境准备2. 系统部署3. 核心功能配置系统效果展

使用Java将各种数据写入Excel表格的操作示例

《使用Java将各种数据写入Excel表格的操作示例》在数据处理与管理领域,Excel凭借其强大的功能和广泛的应用,成为了数据存储与展示的重要工具,在Java开发过程中,常常需要将不同类型的数据,本文... 目录前言安装免费Java库1. 写入文本、或数值到 Excel单元格2. 写入数组到 Excel表格

redis中使用lua脚本的原理与基本使用详解

《redis中使用lua脚本的原理与基本使用详解》在Redis中使用Lua脚本可以实现原子性操作、减少网络开销以及提高执行效率,下面小编就来和大家详细介绍一下在redis中使用lua脚本的原理... 目录Redis 执行 Lua 脚本的原理基本使用方法使用EVAL命令执行 Lua 脚本使用EVALSHA命令

Java 中的 @SneakyThrows 注解使用方法(简化异常处理的利与弊)

《Java中的@SneakyThrows注解使用方法(简化异常处理的利与弊)》为了简化异常处理,Lombok提供了一个强大的注解@SneakyThrows,本文将详细介绍@SneakyThro... 目录1. @SneakyThrows 简介 1.1 什么是 Lombok?2. @SneakyThrows