RUART_IER_ETOI
应该是你要的空闲中断,空闲时间是在 REG_RX_PATH_CTRL
里面的 RX_TIMEOUT_THRES
设置。
可以参考这一页里的 uart_irq
, uart_stream_irq
, uart_stream_rx_timeout
都有用到 RUART_IER_ETOI
.
左边是在中断里打印的中断ID,没有RUART_TIME_OUT_INDICATION。
用的例程是uart_irq修改的,修改后的代码如下。
这个RUART_IER_ETOI是否只在DMA模式下才有效?
对不起是我理解错了,RUART_IER_ETOI
并不是你想要的空闲中断。它的功能更像是提醒有收到的数据还没读取。
如果你的发送端能够保证一帧内的每个数据发送之间的时间都不会太长,可以在接收端计时,每次收到数据就重置计时。计时一旦超过一定的时间,就可以判断一帧已发送完。
非常感谢提供另一种思路,自己尝试用时长来做空闲中断,但是效果不是很理想。现在尝试用DMA进行开发。
1 Like