STM32HAL库开发笔记-串口通信(UART)

目录

UART简介:

阻塞发送一个字节:​编辑

阻塞发送字符串:

printf重定向:

UART阻塞接收:

串口控制LED灯:

串口接收不定长数据:


UART简介:

UART(Universal Asynchronous Receiver/Transmitter,通用异步收发传输器)是一种异步串行通信协议 ,也是嵌入式系统中最常用的低速通信接口之一。它通过两根信号线(发送 TX、接收 RX)实现设备间的点对点数据传输,无需时钟线同步,依靠预先约定的通信参数保证数据传输的正确性,广泛应用于单片机与 PC 机、蓝牙模块、串口屏、传感器等设备的短距离通信。

UART的数据帧:

起始位 :固定为低电平(0),用于通知接收方 "新的一帧数据开始传输"。

数据位 :实际传输的有效数据,常用8 位 (对应 1 个字节),可选择 5/6/7 位(早期低速通信使用)。数据传输时先传最低位(LSB),后传最高位(MSB)。

奇偶校验位 :用于简单的检错,可选奇校验、偶校验、无校验

奇校验:数据位 + 校验位的总 1 的个数为奇数;

偶校验:数据位 + 校验位的总 1 的个数为偶数;

无校验:不使用校验位(嵌入式中最常用,靠上层协议检错如 CRC)。

停止位 :固定为高电平(1) ,用于标识一帧数据的结束,常用1 位,也可选择 1.5 位或 2 位(低速通信中提高可靠性)。


阻塞发送一个字节:

首先在通信配置里面选中UART配置

生成代码后可以看到UART1 的初始化已经帮写好了

主函数里关于UART1的初始化也写好了

这里发送一个字符主要用到HAL库自带的函数

效果


阻塞发送字符串:

和之前的发送一个字符差不多,只不过把发送内容长度加大了


printf重定向:

一个固定的重定向函数

这里必须要选不然没反应

试试

【STM32系列】多路USART串口Printf重定向详解------通用_串口重定向-CSDN博客


UART阻塞接收:

HAL库包含的阻塞接收的函数

一个简单的输出回显功能


串口中断接收:

在初始引脚配置这里把UART的中断选上

在中断管理NVIC里面能看到UART1中断了

生成的代码里也有UART1的中断的配置

对于UART的中断服务得在main函数被中这样写,所实现的功能是将接收到的数据回显并再次开启原来的中断

初始化里面也要开启中断


串口控制LED灯:

一样的道理,只不过把中断服务函数中的内容改了


串口接收不定长数据:

这里初始化要用这个函数

这里的中断服务函数也要用这种不定长的

相关推荐
西岸行者3 天前
学习笔记:SKILLS 能帮助更好的vibe coding
笔记·学习
starlaky3 天前
Django入门笔记
笔记·django
勇气要爆发3 天前
吴恩达《LangChain LLM 应用开发精读笔记》1-Introduction_介绍
笔记·langchain·吴恩达
悠哉悠哉愿意3 天前
【单片机学习笔记】串口、超声波、NE555的同时使用
笔记·单片机·学习
勇气要爆发3 天前
吴恩达《LangChain LLM 应用开发精读笔记》2-Models, Prompts and Parsers 模型、提示和解析器
android·笔记·langchain
Lester_11013 天前
STM32霍尔传感器输入口设置为复用功能输入口时,还能用GPIO函数直接读取IO的状态吗
stm32·单片机·嵌入式硬件·电机控制
LCG元3 天前
低功耗显示方案:STM32L0驱动OLED,动态波形绘制与优化
stm32·嵌入式硬件·信息可视化
三佛科技-187366133973 天前
120W小体积碳化硅电源方案(LP8841SC极简方案12V10A/24V5A输出)
单片机·嵌入式硬件
z20348315203 天前
STM32F103系列单片机定时器介绍(二)
stm32·单片机·嵌入式硬件
qianshanxue113 天前
计算机操作的一些笔记标题
笔记