硬汉嵌入式论坛

 找回密码
 立即注册
查看: 596|回复: 8
收起左侧

[UART] H750 CUBEMX配置USART2 进行串口通讯实验的疑问

[复制链接]

5

主题

16

回帖

31

积分

新手上路

积分
31
发表于 2025-3-7 11:03:13 | 显示全部楼层 |阅读模式
[C] 纯文本查看 复制代码
  HAL_UART_Transmit_IT(&huart2, (uint8_t *)msg2, sizeof(msg2));     //使用HAL库函数发送数据  中断模式
  HAL_UART_Receive_IT(&huart2, receiveData, 2);      //开启接收中断

  HAL_Delay(1000);  //延时1s
  
  HAL_UART_Transmit_DMA(&huart2, (uint8_t *)msg3, sizeof(msg3));     //使用HAL库函数发送数据  DMA模式
  HAL_UART_Receive_DMA(&huart2, receiveData, 2);      //开启接收中断



主要的代码如上,如果不加延时,上位机不会显示msg3的内容,请问有哪位大哥能解释一下吗?

加入延时的输出结果

加入延时的输出结果

不加延时的输出结果

不加延时的输出结果
回复

使用道具 举报

5

主题

16

回帖

31

积分

新手上路

积分
31
 楼主| 发表于 2025-3-7 11:07:10 | 显示全部楼层
刚才调试了一下,这个是不是能解释成,我串口还没有发送数据完成的时候HAL_UART_Transmit_DMA(&huart2, (uint8_t *)msg3, sizeof(msg3)); 就已经执行完了所以相当于不会输出这个内容?
回复

使用道具 举报

5

主题

16

回帖

31

积分

新手上路

积分
31
 楼主| 发表于 2025-3-7 11:07:59 | 显示全部楼层
另外,我想问一下,如何避免这种情况?
回复

使用道具 举报

10

主题

53

回帖

83

积分

初级会员

积分
83
发表于 2025-3-7 13:06:43 | 显示全部楼层
可以发送前 看一下TC标志位什么的
回复

使用道具 举报

5

主题

16

回帖

31

积分

新手上路

积分
31
 楼主| 发表于 2025-3-7 15:35:26 | 显示全部楼层
jet1999 发表于 2025-3-7 13:06
可以发送前 看一下TC标志位什么的

使用__HAL_UART_GET_FLAG这个函数获取TC标志位是吧?
回复

使用道具 举报

1万

主题

7万

回帖

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
117530
QQ
发表于 2025-3-8 09:04:47 | 显示全部楼层
ylun 发表于 2025-3-7 11:07
刚才调试了一下,这个是不是能解释成,我串口还没有发送数据完成的时候HAL_UART_Transmit_DMA(&huart2, (ui ...

中断函数和DMA函数是非阻塞方式的,将数据丢到缓冲里面,此函数就立即返回了。

下次启动传输前,一定要判断上次完成。
回复

使用道具 举报

10

主题

53

回帖

83

积分

初级会员

积分
83
发表于 2025-3-8 10:19:36 | 显示全部楼层
ylun 发表于 2025-3-7 15:35
使用__HAL_UART_GET_FLAG这个函数获取TC标志位是吧?

[C] 纯文本查看 复制代码
while((USART1->ISR & USART_ISR_TC) == 0)
{}

可以这样判断,上面这个 USART1 你要改成自己用的串口号
回复

使用道具 举报

5

主题

16

回帖

31

积分

新手上路

积分
31
 楼主| 发表于 2025-3-8 12:37:00 | 显示全部楼层
jet1999 发表于 2025-3-8 10:19
可以这样判断,上面 ...

谢谢老哥
回复

使用道具 举报

5

主题

16

回帖

31

积分

新手上路

积分
31
 楼主| 发表于 2025-3-8 12:37:21 | 显示全部楼层
eric2013 发表于 2025-3-8 09:04
中断函数和DMA函数是非阻塞方式的,将数据丢到缓冲里面,此函数就立即返回了。

下次启动传输前,一定 ...

谢谢老哥
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|小黑屋|Archiver|手机版|硬汉嵌入式论坛

GMT+8, 2025-8-13 05:50 , Processed in 0.045296 second(s), 28 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2023, Tencent Cloud.

快速回复 返回顶部 返回列表