|
如题,STM32F765使用DMA的Circular模式将串口接收的数据移动到内存指定区域,在UCOS多任务程序中可以正常接收数据,但是裸机的时候,比如写了一个for循环一直执行一段代码,DMA就不更新数据到内存中了,仿真的时候,打个断点,才会有数据更新到内存中。 正常不是应该CPU和DMA交替使用总线的吗?为什么会出现这样的情况 |
应该是处理太快,还没有收到新数据。建议加延时。
楼主估算一下串口接收一帧数据需要多长时间,而for循环执行多长时间。 如同楼上所说,串口的接收时间与F7的运算速度比,那是很慢的。 最简单验证延时足够长的时间再去检查内存收到的数据。 DMA相当于搬运工,硬件配置好后自动运行,与内核运行的其他代码没直接关系了。
解决掉了,Cache的问题,把接收缓冲区Cache禁用就好了
從你描述現象來看,有點詭異。不看代碼難以鎖定原因。不過,對於H7/F7系列,注意下因Cache導致的數據一致性問題
從你描述現象來看,有點詭異。不看代碼難以鎖定原因。不過,對於H7/F7系列,注意下因Cache導致的數據一致性 ...
确实是数据一致性的问题