M480系列芯片,为什么在开启PDMA功能后串口的中断就不能触发?

lian___yu |浏览1254次
收藏|2018/11/12 13:52

1、开启PDMA后,接收可用中断(RDAINT )不能触发,接收超时中断(RXTOINT) 只有在DMA设置的长度接收满时才触发。怎样才能让串口的中断能祥没开启PDMA时一样触发?

2、在定时读取PDMA缓存中的数据,首先判断当前通道的状态,但我使用PDMA_IS_CH_BUSY()判断时,一直获取不到正在占用的状态

满意回答

2022/09/06 18:00

1、PDMA就是将UART接收到数据读到RAM中,只要PDMA工作UART 接收区有数据就立刻被搬到RAM这是不会产生RDAINT 中断的。中断读数据和PDMA读数据同时有效那么数据不是乱套了

2、PDMA接收到指定数量的数据会发生中断,在PDMA中断里面设置标志,中断外面读出数据比较好。另外,PDMA_IS_CH_BUSY()是UART有数据的时候,触发PDMA传输的那一小段时间才会置位,在定时器中断里面要读到这个bit为1比较困难。如果UART中的数据没有读走,可以检查这个bit

jamesliu

其他回答(0)
0人关注该问题
+1
 加载中...