03 HAL库下UART的使用

news/2024/11/8 5:56:23/

引言: 需要使用到的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 


http://www.ppmy.cn/news/1287204.html

相关文章

原生js浪费性能吗?

首先举一个例子: 我要更新10个DOM节点,浏览器会一个一个的进行更新,但它更新第一个的时候并不知道后面还有9个,所以会一个一个执行,共执行10次。每一次的更新都要去计算,但更新后DOM树变化了,更新第二个的时候,前一次计算的就没法…

《Python百宝箱》专栏目录

序号文章目录直达链接表白系列1无法拒绝的表白界面https://want595.blog.csdn.net/article/details/1352796112满屏飘字表白代码https://want595.blog.csdn.net/article/details/1352794873无限弹窗表白代码https://want595.blog.csdn.net/article/details/1352795754李峋同款可…

linux 网络系统管理 技能大赛 samba配置

SMB(Server Messages Block,信息服务块)是一种在局域网上共享文件和打印机的一种通信协议,它为局域网内的不同计算机之间提供文件及打印机等资源的共享服务 Samba共享服务的匿名访问 yum -y install samba //安装samba服务 c…

一文讲清数据资产化之确权和估值

《中共中央 国务院关于构建数据基础制度更好发挥数据要素作用的意见》已发布一年,数据资产化和入表已成为2023年的热门话题,随着2023年底国家数据局吹风《"数据要素x"三年行动计划(2024-2026年)》即将发布,这…

手拉手Springboot获取yml配置文件信息

环境介绍 技术栈 springboot3 软件 版本 mysql 8 IDEA IntelliJ IDEA 2022.2.1 JDK 17 Spring Boot 3.1.7 配置文件说明:启动配置文件优先级:properties高于yml 配置文件application.yml yml是 JSON 的超集,简洁而强大&#xf…

C语言之整型提升

文章目录 1 有可能出现的问题2 产生以上问题的原因&#xff08;整型提升&#xff09;3 整型提升的过程4 整型提升示例5 总结 1 有可能出现的问题 代码如下 #include <stdio.h>int main () {int a -1;unsigned int b 1;if (a < b) {printf("a < b");}…

生财有术项目精选

生财有术项目精选 25700读者&#xff0c;71内容 这绝对是小报童这个平台的第一名了&#xff0c;背靠着生财有术这个国内最大的副业平台&#xff0c;再加上现如今的副业热潮&#xff0c;成功造就了2W订阅的奇迹 专栏包含66个精选实操赚钱项目&#xff0c;可以说每一个项目都蕴含…

Redis布隆过滤器BloomFilter

&#x1f44f;作者简介&#xff1a;大家好&#xff0c;我是爱吃芝士的土豆倪&#xff0c;24届校招生Java选手&#xff0c;很高兴认识大家&#x1f4d5;系列专栏&#xff1a;Spring源码、JUC源码、Kafka原理、分布式技术原理、数据库技术&#x1f525;如果感觉博主的文章还不错的…