void HAL_UART_RxCpltCallback(UART_HandleTypeDef *hurat)
时间: 2025-06-07 15:15:52 浏览: 14
### STM32 HAL UART 接收完成回调函数 `HAL_UART_RxCpltCallback` 的使用方法
#### 函数原型
```c
void HAL_UART_RxCpltCallback(UART_HandleTypeDef *huart);
```
此函数是在使用 STM32 HAL 库时,用于处理 UART 接收完成中断的回调函数[^1]。
#### 参数说明
- **`UART_HandleTypeDef *huart`**: 这是一个指向 UART 句柄结构体的指针。该句柄包含了与特定 UART 实例关联的所有配置参数和状态变量。通过这个参数可以访问到当前正在使用的 UART 外设的相关信息。
#### 使用场景
当调用 `HAL_UART_Receive_IT()` 启动基于中断的 UART 数据接收后,每成功接收到指定数量的数据(通常是一个字节),硬件会触发一个中断请求,并最终执行 `HAL_UART_RxCpltCallback()` 来通知应用程序数据已经准备好读取。
#### 默认实现
默认情况下,`HAL_UART_RxCpltCallback()` 被声明为弱链接 (`__weak`) 函数,这意味着如果开发者不提供自己的版本,则编译器将采用预定义的一个空实现来防止未使用参数警告并保持代码整洁[^3]。
#### 自定义实现
为了利用这一特性,在项目中可以根据需求重新定义 `HAL_UART_RxCpltCallback()` 函数的内容。例如:
```c
// 用户自定义的 HAL_UART_RxCpltCallback() 实现
void HAL_UART_RxCpltCallback(UART_HandleTypeDef *huart)
{
// 假定 huart->Instance 对应 USART1
if (huart->Instance == USART1) {
// 在这里处理接收到的数据...
// 如果还需要继续接收下一个字符/字符串,
// 需要再次启动接收过程
HAL_UART_Receive_IT(huart, (uint8_t *)&RxData, 1);
}
}
```
上述例子展示了如何针对特定的 UART 设备实例化定制化的响应逻辑。注意每次处理完一批新到达的信息之后可能需要重启接收流程以便持续监听输入流[^4]。
阅读全文
相关推荐


















