登录/注册

STM32串口发送中断程序

STM32串口发送中断程序

更多

以下是一个基于STM32 HAL库的串口发送中断程序示例(以USART1为例):

步骤1: 初始化串口和中断

// 在main.c中
UART_HandleTypeDef huart1;

void SystemClock_Config(void);
static void MX_GPIO_Init(void);
static void MX_USART1_UART_Init(void);

int main(void) {
  HAL_Init();
  SystemClock_Config();
  MX_GPIO_Init();
  MX_USART1_UART_Init();

  // 使能串口中断
  HAL_NVIC_SetPriority(USART1_IRQn, 0, 0);
  HAL_NVIC_EnableIRQ(USART1_IRQn);

  // 示例:发送字符串
  char msg[] = "Hello World!\r\n";
  HAL_UART_Transmit_IT(&huart1, (uint8_t*)msg, strlen(msg));

  while (1) {
    // 主循环
  }
}

// 串口1初始化
static void MX_USART1_UART_Init(void) {
  huart1.Instance = USART1;
  huart1.Init.BaudRate = 115200;
  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;
  HAL_UART_Init(&huart1);
}

步骤2: 中断服务函数

// 在stm32f1xx_it.c中
void USART1_IRQHandler(void) {
  HAL_UART_IRQHandler(&huart1);  // 调用HAL库中断处理函数
}

步骤3: 发送完成回调函数(可选)

// 在main.c中(重写弱函数)
void HAL_UART_TxCpltCallback(UART_HandleTypeDef *huart) {
  if (huart->Instance == USART1) {
    // 在此添加发送完成后的处理逻辑
    // 例如:置标志位、发送下一帧数据等
  }
}

发送数据函数

// 在需要发送数据的地方调用
void Send_Data(uint8_t *data, uint16_t len) {
  HAL_UART_Transmit_IT(&huart1, data, len);  // 中断模式发送
}

关键点说明:

  1. 发送机制

    • HAL_UART_Transmit_IT() 启动中断发送
    • 发送完成后自动触发 HAL_UART_TxCpltCallback
  2. 中断配置

    • 通过 HAL_NVIC_EnableIRQ() 使能串口中断
    • 中断优先级通过 HAL_NVIC_SetPriority() 设置
  3. 注意事项

    • 当前发送未完成时,再次调用 HAL_UART_Transmit_IT 会导致错误
    • 需等待前一帧发送完成(通过回调标志或 huart->gState 判断)
    • 发送数据缓存区需在发送期间保持有效(建议使用全局/静态数组)

状态检查示例:

// 检查是否可发送新数据
if (huart1.gState == HAL_UART_STATE_READY) {
  HAL_UART_Transmit_IT(&huart1, newData, newLen);
}

实际使用时需根据具体STM32型号调整:

  1. 替换 USART1 为实际使用的串口
  2. 在CubeMX中配置时钟和引脚
  3. 检查IRQHandler名称(如 UART4_IRQHandler
  4. 根据需求调整波特率等参数

STM32串口中断及DMA接收常见的几个问题

STM32串口中断及DMA接收常见的几个问题

2023-10-26 16:41:12

STM32串口中断接收不定长报文介绍

本项目中,需要使用STM32的USART6串口与FPGA板(下位机)通信,需要发送和接收数据,有报文应答机制。

2023-10-26 11:01:55

STM32串口发送数据和接收数据方式总结

STM32串口发送数据和接收数据方式总结

2023-09-19 09:14:52

STM32F105RBT6串口程序

STM32F105RBT6串口程序免费下载。

资料下载 lcj123456789 2022-07-06 16:51:28

STM32串口1通讯实验程序下载

STM32串口1通讯实验程序下载

资料下载 郑兵 2021-12-30 10:34:29

stm32串口中断通信,实现上位机控制开始发送和停止发送

stm32串口中断通信,实现上位机控制开始发送和停止发送一、准备工作二、

资料下载 佚名 2021-12-24 18:49:09

STM32串口通讯——中断方式

一、简介在上一次我们学习了如何使用查询的方式进行串口通讯——发送数据,以及中断的方式,在本次我们使用

资料下载 佚名 2021-12-07 09:51:08

STM32串口空闲中断中断标志位无法清除

STM32串口空闲中断,中断标志位无法清除

资料下载 佚名 2021-12-02 17:36:07

一个严谨的STM32串口DMA发送&接收(1.5Mbps波特率)机制

一个严谨的STM32串口DMA发送&接收(1.5Mbps波特率)机制

2023-09-18 10:58:44

STM32串口中断应用实例

本文将介绍如何使用STM32F4的串口接收中断,通过串口助手模拟上位机

2023-04-20 11:45:59

如何解决STM32串口发送中断试验问题?

如何解决STM32串口发送中断试验问题?

2022-02-07 07:17:10

如何解决STM32串口+DMA发送数据程序卡死问题?

如何解决STM32串口+DMA发送数据程序卡死问题?

2021-12-13 07:27:29

求大佬分享stm32串口接收与发送程序

求大佬分享stm32串口接收与发送程序

2021-12-08 07:11:07

小白求助,求STM32串口USART1中断接收和中断发送程序

小白求助,求STM32串口USART1中断接收和中断

2021-11-16 06:41:51

STM32串口中断 DMA接收的几点注意地方

STM32串口中断、DMA接收的几点注意地方

2020-03-04 13:57:48

7天热门专题 换一换
相关标签