用DMA模式把从串口接收到的数移动至内存,之前每次收到的数小于1k都是没问题的。现在有个问题,如何一次收到的数超过1k怎么办,我试了试,DMA一次最多传递1024个,后面的就不知道去哪了,后面的也不会覆盖前面的值。然后又试了试串口A1,发送使用DMA模式,接收使用uart中断,定义一个大的全局缓存区和一个移位指针,uart接收中断里面进行赋值和指针移位。但是这个情况有时候能成功有时候不能成功,老在一个延时的地方卡死。不知道什么情况…
我想的是不是有DMA接收全满中断,在DMA接收缓存区全满之后,进入中断,把数存到另一个地方,然后清空DMA接收缓存区,再继续接收uart收到的数据。
但是查了半天,也没看见DMA接收中断里面什么获取标志位,判断是不是全满中断…这些,可能是例程都没有,官方数据库也没有这个。
不知道有没有谁研究过做过这个地方,希望大神告知,或者还有什么别的方法嘛?
↧
MSP432 DMAuart接收超过1024怎么办
↧