前提:在程序中申请了一个全局数组用来保存数据,然后将数据通过DMA控制UART发送出去
问题:由于DMA和CPU是独立并行工作的,所以发送出去的数据有时会被覆盖
发现的问题及解决方法:由于采用的是一个全局的数组来存放数据,所以当再次对数据组进行赋值的时候,由于DMA控制UART发送时数组中的值(理论上是数组后面的元素)会被覆盖,即使申请双缓存来存放(就是申请2个全局的数组)数据,也会出现此类问题(有可能是编译器进行了优化或者其他原因)。解决的办法就是在进行数据发送之前先将全局数组的数据拷贝到栈中(用memcpy函数),然后在通过DMA控制UART发送出去