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

[复制链接]
3076|46
 楼主| 可怜的小弗朗士 发表于 2024-4-30 16:15 | 显示全部楼层 |阅读模式
IDLE接收会有时延,想要及时接收数据,数据长度已知,如何接收多个
caigang13 发表于 2024-5-4 21:31 来自手机 | 显示全部楼层
用接受中断或者DMA传输。
jobszheng 发表于 2024-5-5 11:18 | 显示全部楼层
使用接收DMA,我觉得这个应该是最快的了
chenjun89 发表于 2024-5-5 12:56 来自手机 | 显示全部楼层
如果数据长度已知的话,用DMA最高效。
慢醇 发表于 2024-8-31 18:21 | 显示全部楼层
USART的DMA接收模式允许你将数据直接从USART接收寄存器传输到内存缓冲区。
fengm 发表于 2024-9-3 16:36 | 显示全部楼层
在不使用IDLE中断的情况下,可以通过轮询(Polling)的方式来接收多个数据。
uptown 发表于 2024-9-3 17:27 | 显示全部楼层
不断查询 USART 接收数据寄存器是否有新的数据到达。如果有数据,则读取并存储起来,然后继续查询下一个数据。
abotomson 发表于 2024-9-3 19:43 | 显示全部楼层
使用了一个接收缓冲区RxBuffer和一个索引RxIndex来接收和存储数据。每当接收到一个新数据时,中断服务函数USART_IRQHandler会被调用,将接收到的数据放入缓冲区,并更新索引。
wilhelmina2 发表于 2024-9-3 21:29 | 显示全部楼层
配置DMA通道以从USART接收数据并将其传输到内存中的缓冲区。
DMA可以在后台自动进行数据传输,从而释放CPU资源。
当DMA传输完成时,可以触发一个中断来处理接收到的数据。
这种方法适用于需要连续接收大量数据的场景。
timfordlare 发表于 2024-9-4 10:01 | 显示全部楼层
DMA技术允许数据直接在内存和USART外设之间传输
i1mcu 发表于 2024-9-4 13:01 | 显示全部楼层
轮询方**占用CPU时间,并且可能不是实时系统中最有效的方法。
cashrwood 发表于 2024-9-4 16:03 | 显示全部楼层
轮询模式简单直接              
1988020566 发表于 2024-9-5 08:43 | 显示全部楼层
这种方式简单直接,但会占用较多的 CPU 资源,尤其是在数据量较大或需要实时处理其他任务时,可能会导致系统性能下降。
bartonalfred 发表于 2024-9-5 10:52 | 显示全部楼层
使用DMA传输是实现USART不使用IDLE中断接收多个数据的有效方法。
phoenixwhite 发表于 2024-9-5 12:27 | 显示全部楼层
应用程序对实时性有较高要求,或者需要处理大量的数据,那么使用中断驱动的方法可能更为合适。
claretttt 发表于 2024-9-5 14:02 | 显示全部楼层
当USART接收到数据时,会产生RXNE中断
olivem55arlowe 发表于 2024-9-5 15:42 | 显示全部楼层
可以使用轮询的方式,不断检查USART的接收完成标志
updownq 发表于 2024-9-5 17:19 | 显示全部楼层
某些单片机和微控制器支持DMA功能,允许外设(如USART)直接与内存进行数据传输,而无需CPU干预。
minzisc 发表于 2024-9-6 16:15 | 显示全部楼层
IDLE中断通常用于检测USART空闲状态,即接收缓冲器已准备好接收新数据。
yorkbarney 发表于 2024-9-6 17:52 | 显示全部楼层
配置一个定时器,使其在固定的时间间隔内触发中断。
在中断服务程序中,检查USART的接收状态并读取数据。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

101

主题

763

帖子

0

粉丝
快速回复 在线客服 返回列表 返回顶部