LM3S系列的DMA都没有超时中断功能。
在用于串口通信时,如果接收的报文长度不定,又要用DMA的话,还需要开个定时器在那里察看数据是否接收完成。
如果系统比较简单,资源够用的话倒也无所谓。如果系统相对复杂,定时器资源比较紧张……
建议DMA能不能像FIFO一样有一个超时中断(Receive Timeout),当一定时间没有收到数据时候也产生一个中断,便于程序检查是否接收完成
这方面我觉得Atmel的MCU做得比较好,它是在多少个Bite时间没有接收到数据就产生超时中断。
现在接收是有超时中断的,启用后通过UART_INT_RT来区分;
发送没有,但可以通过定期调用一个API函数来判断是否发送完成,例如:
if(UARTBusy(UART0_BASE))
{
//串口0发送完成,切换RS485
}
你所说的接收超时中断是在FIFO模式下产生的中断。
我是指在不采用FIFO模式接收,而是用DMA方式进行接收的时候没有超时中断。