f4 uart have dma trouble

来源:互联网 发布:科密e100如何导出数据 编辑:程序博客网 时间:2024/05/22 06:20

首先有一个概念,DMA1_FLAG_TC4 ,是指DMA传输完成的中断标DMA传输完成以后,产生一个DMA1_FLAG_TC4的标志,但是一旦CLEAR了以后,DMA_GetFlagStatus(DMA1_FLAG_TC4) == RESET 就永远为真了。所以你的代码有时候能够走下去,有时候陷入这个While循环中,之所以陷入循环中是因为在中断中Clear了这个标志了。所以Main函数中再也检测不到了。如果这个地方想等待DMA发送结束的话,可以用一个标志位,中断函数中设置这个标志位,Main函数中可以一直等待这个标志位就行了志,只会产生一次,也就是你的数据全部传输完的时候,并不是没法送一个自己产生一次。


即使 不中断设置 也会有这个位.


sendUart2 发送缓冲区 必须传送到 临时数组 才管用。。要不然 就会发送 不完整数组,或者长度不够

0 0
原创粉丝点击