问题描述:使用DMA接收USART的数据,满12个字节产生一次DMA传输完成中断,然后将数据取走,但是这里碰到一个问题,因为我是通过无线转成串口的,这样的话有可能数据通过空中传到串口的时候,丢失部分字节,比如说某一帧DMA只收到11个字节,下一帧有来了12个字节,这样的话我得到的数据全部乱了。我有想这样解决:开启串口接收中断,收到一个字节,置一个变量为1,同时开启timer overflow 中断,时间大概是串口传输12个字节的时间(本应该是11个字节,稍大一点),这样如果有DMA传输中断来,就把那个变量该为0,所以只要在timer 中断里面检测那个变量是否为1,如果是1的话就证明DMA timeout啦,DMA要reset,但是我不知道如何是DMA从头开始传输,是不是有这个函数DMA_SetCurrDataCounter设为0即可,请哪位大侠指点,谢谢 |