串口发送之中断方式

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()

用户自定义处理逻辑

相关推荐
逐步前行3 小时前
STM32_TIM_寄存器操作
stm32·单片机·嵌入式硬件
0南城逆流04 小时前
【STM32】知识点介绍七:PWM功能
stm32·单片机·嵌入式硬件
智者知已应修善业4 小时前
【51单片机独立按键控制数码管移动反向,2片74CH573/74CH273段和位,按键按下保持原状态】2023-3-25
经验分享·笔记·单片机·嵌入式硬件·算法·51单片机
我是一棵无人问荆的小草4 小时前
单片机通电后延迟启动策略
单片机·嵌入式硬件
坏柠5 小时前
ESP32-S3 蓝牙 BLE 从零到一:广播、服务、特征,用一个智能灯的例子全讲透
嵌入式硬件
日更嵌入式的打工仔5 小时前
UART RX为什么要上拉
单片机
三佛科技-187366133978 小时前
FT32F030F6AP7高性能32位RISC内核MCU解析(兼容STM32F030K6TP7)
stm32·单片机·嵌入式硬件
LCMICRO-133108477469 小时前
长芯微LDC90810完全P2P替代ADC128D818,是一款八通道系统监控器,专为监控复杂系统状态而设计。
stm32·单片机·嵌入式硬件·fpga开发·硬件工程·模数转换芯片adc
嵌入式老菜鸟qq1252427739 小时前
关于S2-LP休眠
单片机·嵌入式硬件·mcu·射频工程
SUNNYSPY0019 小时前
65R310-ASEMI超结MOS管TO-252封装
单片机