HAL_UART_Transmit_IT无中断触发:USART1回调及中断服务函数不执行求助
STM32 HAL库UART通信中断异常问题
异常表现
- 开发过程中尝试实现UART通信功能
- 发起
HAL_UART_Transmit_IT中断发送操作后,HAL_UART_TxCpltCallback回调函数无法正常执行 - 调试验证发现
USART1_IRQHandler中断服务函数全程未被触发 - 初步推断问题出在UART外设、中断使能的配置环节,无法定位具体错误位置
现有实现代码
主函数核心执行逻辑
HW_UART_Init(); uint8_t init_ment[60] = "\n\rWelcome to RF Test program\n\r"; strcpy(uart1_txbuffer, init_ment); HAL_UART_Transmit_IT(&huart1, uart1_txbuffer, 30); HAL_Delay(50); InitQueue(&queue); HAL_UART_Receive_IT(&huart1, uart1_rxbuffer, 1); HAL_Delay(1);
UART外设初始化函数
void HW_UART_Init(void) { /* USER CODE END USART1_Init 1 */ huart1.Instance = USART1; huart1.Init.BaudRate = 19200; huart1.Init.WordLength = UART_WORDLENGTH_8B; huart1.Init.StopBits = UART_STOPBITS_1; huart1.Init.Parity = UART_PARITY_NONE; huart1.Init.Mode = UART_MODE_TX_RX; huart1.Init.HwFlowCtl = UART_HWCONTROL_NONE; huart1.Init.OverSampling = UART_OVERSAMPLING_16; huart1.Init.OneBitSampling = UART_ONE_BIT_SAMPLE_DISABLE; huart1.AdvancedInit.AdvFeatureInit = UART_ADVFEATURE_NO_INIT; if (HAL_UART_Init(&huart1) != HAL_OK) { Error_Handler(); } /* USER CODE BEGIN USART1_Init 2 */ }
待补充定位信息
为定位具体配置错误,可按需提供以下关联代码段:
HAL_UART_MspInit回调中实现的USART1时钟使能、GPIO引脚复用配置- 中断向量表内
USART1_IRQHandler的函数映射关系 - NVIC模块对USART1中断的优先级配置、使能操作代码
内容的提问来源于stack exchange,提问作者Harzarics
相关产品推荐
相关产品推荐

