串口发送之中断方式

1.函数介绍

cs 复制代码
HAL_UART_Transmit_IT  启动发送函数
HAL_UART_TxCpltCallback  发送完成回调函数
//回调函数的作用是通知main函数,所有的都已经全部发送完了
HAL_UART_Receive   启动接收函数
HAL_UART_RxCpltCallback   接收完成回调函数

2.函数使用

cs 复制代码
static volitile int g_tx_cplt=0;
static volitile int g_rx_cplt=0;

void HAL_UART_TxCpltCallback(UART_HandleTypeDef *huart)
{
  g_tx_cplt=1;
}

void wait_Tx_Complete(void)
{
  while(g_tx_cplt=0);
  g_tx_cplt=0;
}

void HAL_UART_RxCpltCallback(UART_HandleTypeDef *huart)
{
  g_rx_cplt=1;
}

void wait_Rx_Complete(void)
{
  while(g_rx_cplt=0);
  g_rx_cplt=0;
}

char *str="please input numbers";
char c;

int main()
{
 HAL_UART_Transmit_IT(&huart1,str,strlen(str);//发送第一个字节开始
 wait_Tx_Complete();//等待最后一个字节发送完毕
 HAL_UART_Receive_IT(&huart1.&c,1);//接收第一个字节
 wait_Rx_Complete();//等待最后一个字节接受完毕
 c=c+1;
 HAL_UART_Transmit(&huart1,&c,1,1000);
}

用户调用

HAL_UART_Transmit_IT()

HAL 配置 UART TXE 中断

启动第一个字节发送

立即返回(不阻塞)

┌─────────────────────────────┐

│ 中断服务程序处理后续字节 │

│ 每次 TXE 中断发送一个字节 │

└─────────────────────────────┘

发送最后一个字节

触发 TC (Transmit Complete) 中断

自动调用 HAL_UART_TxCpltCallback()

用户自定义处理逻辑

相关推荐
嵌入式阿蔡8 小时前
OTA 实战五(收官):量产落地 Checklist —— 版本号 / 防回滚 / 灰度 / 断点续传
网络·stm32·单片机·嵌入式硬件·嵌入式实时数据库
碧海银沙音频科技研究院9 小时前
基于杰理AC7016C的GTCRN门控卷积神经网络语音增强方法
人工智能·嵌入式硬件·语音识别
遇雪长安11 小时前
STM32_BOOT未引出_串口升级系统Bootloader方案
stm32·单片机·嵌入式硬件·bootloader
dcdannycheung11 小时前
【无标题】
嵌入式硬件
自小吃多11 小时前
Capture软件原理图添加元器件笔记
笔记·嵌入式硬件
tangchao340勤奋的老年?11 小时前
AMT630C 开阳电子 RISC‑V 显示 SoC|工业级双屏驱动 MCU,带 CAN 总线,国产 HMI 控制芯片
单片机·嵌入式硬件
youshi666812 小时前
stm32-SPI通信协议、软件SPI
stm32·单片机·嵌入式硬件
振南的单片机世界12 小时前
EXTI“一线多挂”陷阱:PA0和PB0同时触发,中断函数懵了
arm开发·stm32·单片机·嵌入式硬件
coward9112 小时前
全志T507 (sun50iw9p1)sunxi pinctrl 子系统实现分析
linux·嵌入式硬件
ACP广源盛1392462567312 小时前
Qwen3.8‑2.4T 开源落地@ACP#国产 MoE 大模型私有化部署中 MST 多屏转换芯片 GSV2231 硬件价值与应用场景
大数据·数据库·人工智能·嵌入式硬件