打印
[N32G430]

USART如何不使用IDLE中断接收多个数据

[复制链接]
1298|46
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
IDLE接收会有时延,想要及时接收数据,数据长度已知,如何接收多个

使用特权

评论回复
沙发
caigang13| | 2024-5-4 21:31 | 只看该作者
用接受中断或者DMA传输。

使用特权

评论回复
板凳
jobszheng| | 2024-5-5 11:18 | 只看该作者
使用接收DMA,我觉得这个应该是最快的了

使用特权

评论回复
地板
chenjun89| | 2024-5-5 12:56 | 只看该作者
如果数据长度已知的话,用DMA最高效。

使用特权

评论回复
5
慢醇| | 2024-8-31 18:21 | 只看该作者
USART的DMA接收模式允许你将数据直接从USART接收寄存器传输到内存缓冲区。

使用特权

评论回复
6
fengm| | 2024-9-3 16:36 | 只看该作者
在不使用IDLE中断的情况下,可以通过轮询(Polling)的方式来接收多个数据。

使用特权

评论回复
7
uptown| | 2024-9-3 17:27 | 只看该作者
不断查询 USART 接收数据寄存器是否有新的数据到达。如果有数据,则读取并存储起来,然后继续查询下一个数据。

使用特权

评论回复
8
abotomson| | 2024-9-3 19:43 | 只看该作者
使用了一个接收缓冲区RxBuffer和一个索引RxIndex来接收和存储数据。每当接收到一个新数据时,中断服务函数USART_IRQHandler会被调用,将接收到的数据放入缓冲区,并更新索引。

使用特权

评论回复
9
wilhelmina2| | 2024-9-3 21:29 | 只看该作者
配置DMA通道以从USART接收数据并将其传输到内存中的缓冲区。
DMA可以在后台自动进行数据传输,从而释放CPU资源。
当DMA传输完成时,可以触发一个中断来处理接收到的数据。
这种方法适用于需要连续接收大量数据的场景。

使用特权

评论回复
10
timfordlare| | 2024-9-4 10:01 | 只看该作者
DMA技术允许数据直接在内存和USART外设之间传输

使用特权

评论回复
11
i1mcu| | 2024-9-4 13:01 | 只看该作者
轮询方**占用CPU时间,并且可能不是实时系统中最有效的方法。

使用特权

评论回复
12
cashrwood| | 2024-9-4 16:03 | 只看该作者
轮询模式简单直接              

使用特权

评论回复
13
1988020566| | 2024-9-5 08:43 | 只看该作者
这种方式简单直接,但会占用较多的 CPU 资源,尤其是在数据量较大或需要实时处理其他任务时,可能会导致系统性能下降。

使用特权

评论回复
14
bartonalfred| | 2024-9-5 10:52 | 只看该作者
使用DMA传输是实现USART不使用IDLE中断接收多个数据的有效方法。

使用特权

评论回复
15
phoenixwhite| | 2024-9-5 12:27 | 只看该作者
应用程序对实时性有较高要求,或者需要处理大量的数据,那么使用中断驱动的方法可能更为合适。

使用特权

评论回复
16
claretttt| | 2024-9-5 14:02 | 只看该作者
当USART接收到数据时,会产生RXNE中断

使用特权

评论回复
17
olivem55arlowe| | 2024-9-5 15:42 | 只看该作者
可以使用轮询的方式,不断检查USART的接收完成标志

使用特权

评论回复
18
updownq| | 2024-9-5 17:19 | 只看该作者
某些单片机和微控制器支持DMA功能,允许外设(如USART)直接与内存进行数据传输,而无需CPU干预。

使用特权

评论回复
19
minzisc| | 2024-9-6 16:15 | 只看该作者
IDLE中断通常用于检测USART空闲状态,即接收缓冲器已准备好接收新数据。

使用特权

评论回复
20
yorkbarney| | 2024-9-6 17:52 | 只看该作者
配置一个定时器,使其在固定的时间间隔内触发中断。
在中断服务程序中,检查USART的接收状态并读取数据。

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

99

主题

742

帖子

0

粉丝