STM32——串口

串口发送**/**接收函数:

HAL_UART_Transmit(); 串口发送数据,使用超时管理机制
HAL_UART_Receive(); 串口接收数据,使用超时管理机制
HAL_UART_Transmit_IT(); 串口中断模式发送
HAL_UART_Receive_IT(); 串口中断模式接收

HAL_UART_Transmit(): 该函数用于在阻塞模式下通过UART发送数据。在传输完成之前,该函数将一直等待。

HAL_UART_Transmit(UART_HandleTypeDef *huart, uint8_t *pData, uint16_t Size, uint32_t Timeout);
作用:以阻塞的方式发送指定字节的数据
形参 1 : UART_HandleTypeDef 结构体类型指针变量
形参 2 :指向要发送的数据地址
形参 3 :要发送的数据大小,以字节为单位
形参 4 :设置的超时时间,以 ms 单位

HAL_UART_Transmit_IT(): 该函数用于在中断模式下通过UART发送数据。它启动传输并立即返回,允许微控制器在传输进行时执行其他任务。
Timeout的作用?

在HAL库的串口函数中,Timeout 参数用于设置超时时间。具体来说,超时值是在函数开始执行时开始计时的,如果在指定的时间内未完成操作(比如发送或接收数据),函数将返回一个错误代码,允许程序采取适当的措施。

例如,如果你在调用 HAL_UART_Transmit() 函数时将 Timeout 设置为1000毫秒,那么该函数将等待最多1000毫秒,如果在这段时间内无法完成串口发送操作,函数将返回错误。同样,对于 HAL_UART_Receive() 函数,如果在指定的时间内未接收到足够的数据,也会触发超时错误。

串口中断回调函数:

HAL_UART_IRQHandler(UART_HandleTypeDef *huart); // 串口中断处理函数
HAL_UART_TxCpltCallback(UART_HandleTypeDef *huart); // 发送中断回调函数
HAL_UART_RxCpltCallback(UART_HandleTypeDef *huart); // 接收中断回调函数

状态标记变量:

USART_RX_STA

从 0 开始,串口中断接收到一个数据(一个字节)就自增 1 。当数据读取全部 OK 时候(回车和换行
符号来的时候),那么 USART_RX_STA 的最高位置 1 ,表示串口数据接收全部完毕了,然后 main
函数里面可以处理数据了。

串口接收中断流程

相关推荐
Elihuss1 分钟前
关于RK3506 的MCU软复位后跑不起问题
linux·单片机·嵌入式硬件
fengfuyao98520 分钟前
GRBL 1.1 移植到 STM32 (HAL库)
stm32·单片机·嵌入式硬件
biyezuopinvip20 分钟前
基于STC89C51单片机的多波形信号发生器设计与Proteus仿真
单片机·proteus·课程设计·proteus仿真·基于stc89c51单片机的·多波形·信号发生器设计
无人装备硬件开发爱好者22 分钟前
STM32G474 驱动 1.54 寸三色电子墨水屏实现贪吃蛇游戏完整指南
stm32·嵌入式硬件·游戏
山木嵌入式43 分钟前
FreeRTOS任务创建全解析:动态/静态创建+实战案例+参数深度剖析
stm32·freertos
项目題供诗1 小时前
STM32-定时器定时中断&定时器外部时钟(十一)
stm32·单片机·嵌入式硬件
披着假发的程序唐1 小时前
STM32 H743 MPU的配置使用方法
linux·c语言·c++·驱动开发·stm32·单片机·mcu
张健11564096481 小时前
MSP主堆栈指针
单片机
wild-civil1 小时前
解决Keil 生成的文件在 VSCode 乱码问题(自动识别,不用手动改编码)
ide·vscode·stm32·编辑器
qxl_7999153 小时前
Windows 显卡掉线无报警|模型推理全套防呆方案(实操完整版)
windows·stm32·单片机·推理显卡掉线误报警防呆