硬汉嵌入式论坛

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

[UART] 尝试写RTX5 消息队列+ UART1 DMA 双缓存 超时中断,遇到问题

[复制链接]

4

主题

14

回帖

26

积分

新手上路

积分
26
发表于 2024-3-7 14:18:00 | 显示全部楼层 |阅读模式
按照,【小经验】STM32H743/750系统中使用串口DMA和超时中断接收任意长度数据
https://www.armbbs.cn/forum.php? ... 2&fromuid=24469
(出处: 硬汉嵌入式论坛)
这个作者的思维,我编写了一个RTX5 消息队列+ UART1 DMA 双缓存 超时中断,接收不定长的程序,由于只是实验没有开MPU,D - Cache
但是发现会有丢帧的情况,还请大家指正问题,实验性质,

UART_CR.7z

14.3 MB, 下载次数: 4

回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
106660
QQ
发表于 2024-3-8 00:30:46 | 显示全部楼层
HAL库专门封装了一个不定长超时接收API,使用比较简单,此贴这个例子就是这种用法。

STM32H7基于STM32CubeMX的串口DMA+空闲中断接收不定长数据实现(HAL库1.9.0自带函数实现)
https://www.armbbs.cn/forum.php? ... 8553&fromuid=58
(出处: 硬汉嵌入式论坛)
回复

使用道具 举报

4

主题

14

回帖

26

积分

新手上路

积分
26
 楼主| 发表于 2024-3-8 09:01:49 | 显示全部楼层
eric2013 发表于 2024-3-8 00:30
HAL库专门封装了一个不定长超时接收API,使用比较简单,此贴这个例子就是这种用法。

STM32H7基于STM32Cu ...

我看过了,这个也试过,挺好的,但是想有个新的尝试,就是学习吗,DMA 双缓冲区 加超时中断,然后数据来了,发到RTX 的消息队列中到任务中处理,这样的玩法想试一试,但是不成功
回复

使用道具 举报

3

主题

69

回帖

78

积分

初级会员

积分
78
发表于 2024-3-8 09:08:50 | 显示全部楼层
VDVA 发表于 2024-3-8 09:01
我看过了,这个也试过,挺好的,但是想有个新的尝试,就是学习吗,DMA 双缓冲区 加超时中断,然后数据来了,发到 ...

如果在中断中发送消息队列,RTX5是复制消息的,需要时间。此时DMA应该是不工作的,也就是接收在等待吧,会不会丢帧?
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
106660
QQ
发表于 2024-3-9 00:44:50 | 显示全部楼层
看了下楼主的程序,主要是两点
1、已经开了DMA发送和接收,而程序里面发送还调用的查询方式API,不太好HAL_UART_Transmit
2、别用消息队列,消息队列是数据的复制粘贴,你的传输数据多了,非常影响速度,仅需发送事件标志,通知那个缓冲收到数据了即可。
回复

使用道具 举报

4

主题

14

回帖

26

积分

新手上路

积分
26
 楼主| 发表于 2024-3-11 10:23:16 | 显示全部楼层
eric2013 发表于 2024-3-9 00:44
看了下楼主的程序,主要是两点
1、已经开了DMA发送和接收,而程序里面发送还调用的查询方式API,不太好HAL ...

嗯,我也解决问题了,抽时间写一个RTX5 + UART_RX + DMA 双缓冲 + 信号量 传递消息 +  UART_TX DMA 传递消息的例程,发表,供大家一起学习讨论,谢谢硬汉哥

回复

使用道具 举报

5

主题

192

回帖

212

积分

高级会员

积分
212
发表于 2024-3-12 17:37:23 | 显示全部楼层
VDVA 发表于 2024-3-11 10:23
嗯,我也解决问题了,抽时间写一个RTX5 + UART_RX + DMA 双缓冲 + 信号量 传递消息 +  UART_TX DMA 传递消 ...

一般应用波特率115200最高了,缓冲区1K,我做项目就是DMA空闲中断+消息队列方式,不存在丢失的情况
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-4-28 18:11 , Processed in 0.208198 second(s), 29 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2023, Tencent Cloud.

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