IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 嵌入式 -> STM32F1系列HAL库配置串口通信 -> 正文阅读

[嵌入式]STM32F1系列HAL库配置串口通信

STM32F1系列HAL库配置串口通信

简单来说,串口通信(Serial Communications)的概念非常简单,串口按位(bit)发送和接收字节。

UART与USART简单讲解

UART: 通用异步收发传输器(Universal Asynchronous Receiver/Transmitter),通常称作 UART。它将要传输的资料在串行通信与并行通信之间加以转换。作为把并行输入信号转成串行输出信号的芯片,UART 通常被集成于其他通讯接口的连结上。
USART:(Universal Synchronous/Asynchronous Receiver/Transmitter) 通用同步/异步串行接收/发送器,USART 是一个全双工通用同步/异步串行收发模块,该接口是一个高度灵活的串行通信设备。
鉴于我理论知识不够,刚开始看到这些东西时,我:
在这里插入图片描述
什么全双工,同步,串行…这都是什么呀,趁着这点时间恶补了一下,大致能说出来个一点,
串行与并行
在这里插入图片描述
在这里插入图片描述
如果我们发送0x55,二进制就是01010101,那么在串行通信中,就是一个位一个位依次发送,而在并行中就是八根线同时发送,很明显,串行虽然一个位一个位收发,但是只用一根线,节约成本;并行八根线,牺牲成本保证速度,但我们一般用串行,这里讲解也是以串行为例。
单工与双工
在这里插入图片描述
单工,我们只能一方发送的同时一方只能接收且对象固定,发送只能是发送,接受只能是接收,而双工又分为半双工与全双工,半双工对象可以变化,不过也是只能同时收发,而全双工除了上述提到的以外,还可以同时接收发,图例已经很形象了。
下面再说UART帧格式
在这里插入图片描述
像这样一个流程,一个数据流就发送接收完成了,举个例子:
像我们平时说话那样,如果我们作为接收方,当我们空闲时,我们可以接收别人发来的消息,那这空闲时,我们数据线是一直拉高的(1),当有人跟你说话时,首先向你示意(0),你此时可以放下手中的事,此时数据线为低电平,他给你说0x55,也就是01010101,他说完,此时校验完后,你又去干其他事了(1)。
可是真的这样简单吗
像我就是那种不好好说话,还是空耳晚期,那我与其他人势必就会交流不畅,如果是我说
比如:我说了123,含糊不清,听到的人听成223,我以为我说的没问题,他以为他听的没问题,可事实确实有问题,这时怎么办?还记得之前提到的校验吗,如果,
我这样说”123 1+2+3=6“,
他听成”223 2+2+3=7“,他把7和我的6对应,
”哎,小兄弟你是不是有错误阿“
这样我们就能找出错误了,这就是校验,只不过我们这里用的是奇偶校验,就是看你01010101中1的个数,判断是否为奇数(校验位置0)还是偶数(1)。
再比如:我说"00001111",和说“000111”,或者“11111111”,你会发现,前两个对方没法判断,几乎一模一样,注意是“说”,不是一字一字写给他,我“零——,一——”,“一————”你知道我说了几个零,几个一吗?
不能!
这时就不得不提到波特率异步
在这里插入图片描述
我和对话人都有一个时钟(手表),我开始讲,每说一个位恰个时间,从起始位恰到终止位停止,接收方看到我掐时间也开始恰,看到我终止,他也终止,那么他就可以从时间上来看我说了几个0与1,波特率在这里起到时间起始终止的作用,如果波特率为1bps,那就是我说完一个位就终止,接收方听完一个位就终止,其他的就不听了。
你以为就谈话终止了吗?我的表可能慢也可能快,因为我和接收方不是一个时钟,这就是异步,即不是一个时钟线,所以,我们之间会有误差,并且,他看到我恰表的信息也需要时间,这是个小的时间差,但是积累起来足够大的话就是一个位的错误,所以,串口不能连续收发其中不间断,并且一次是8位(也有5,6位),不然会有累计误差。
只是一个例子,希望大家可以更快理解,也可以直接看B站上一个十分不错的课:【讲的太透了!】UART、RS232、RS485、IIC、SPI 5种嵌入式经典总线协议
综上,串口通信差不多简单介绍了一下,接下来是CUBEMX的一般配置。

CUBEMX配置

1.打开CUBEMX,选择你所使用的芯片,我所使用的STM32F103C8T6;
2.点开左边USART,选择异步(Asynchronous),硬件控制流我们不要碰,默认即可;
在这里插入图片描述
在这里插入图片描述
3.确认一下相关配置
在这里插入图片描述
在这里插入图片描述
Baud Rate: 波特率, 波特率表示每秒钟传送的码元符号的个数,是衡量数据传送速率的指标,它用单位时间内载波调制状态改变的次数来表示。对于串口最重要的就是波特率, 常用的波特率为 115200 与 9600。
Wrod Length : 数据长
Parity : 奇偶校验 -> 无、奇校验、偶校验
Stop : 停止位
以上的配置与需要通信双方完全配对
之后如我之前讲的一样上一节传送门

有关函数简介

//发送数据
HAL_StatusTypeDef HAL_UART_Transmit(UART_HandleTypeDef *huart, uint8_t *pData,
uint16_t Size, uint32_t Timeout);
//接收数据
HAL_StatusTypeDef HAL_UART_Receive(UART_HandleTypeDef *huart, uint8_t *pData,
uint16_t Size, uint32_t Timeout);
//发送中断
HAL_StatusTypeDef HAL_UART_Transmit_IT(UART_HandleTypeDef *huart, uint8_t *
pData, uint16_t Size);
//接收中断
HAL_StatusTypeDef HAL_UART_Receive_IT(UART_HandleTypeDef *huart, uint8_t *pData
, uint16_t Size);
//使用DMA发送
HAL_StatusTypeDef HAL_UART_Transmit_DMA(UART_HandleTypeDef *huart, uint8_t *
pData, uint16_t Size);
//使用DMA接收
HAL_StatusTypeDef HAL_UART_Receive_DMA(UART_HandleTypeDef *huart, uint8_t *
pData, uint16_t Size);
//DMA暂停
HAL_StatusTypeDef HAL_UART_DMAPause(UART_HandleTypeDef *huart);
//DMA恢复
HAL_StatusTypeDef HAL_UART_DMAResume(UART_HandleTypeDef *huart);
//DMA停止
HAL_StatusTypeDef HAL_UART_DMAStop(UART_HandleTypeDef *huart);

我们比较常用前两个,后面带IT是中断,还有DMA这些,之后我会简单说明这些函数如何使用。
在这里插入图片描述

  嵌入式 最新文章
基于高精度单片机开发红外测温仪方案
89C51单片机与DAC0832
基于51单片机宠物自动投料喂食器控制系统仿
《痞子衡嵌入式半月刊》 第 68 期
多思计组实验实验七 简单模型机实验
CSC7720
启明智显分享| ESP32学习笔记参考--PWM(脉冲
STM32初探
STM32 总结
【STM32】CubeMX例程四---定时器中断(附工
上一篇文章      下一篇文章      查看所有文章
加:2021-08-16 11:54:30  更:2021-08-16 11:54:47 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年5日历 -2024/5/10 10:26:19-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码