HC32F460多路DMA存在问题
现在使用两路DMA,DMA1传的数据较少,DMA2传的数据较多;DMA1用的通道0、1,DMA2用的通道3:
发现DMA2传输后,再次使DMA1的能通0道会返回err,像是被占用,但若我不使用DMA2,则DMA1的通道使能一切正常
while ( LL_OK != DMA_ChCmd(TPC6240_DMA_UNIT, TPC6240_DMA_TX_CH, ENABLE) );
while ( LL_OK != DMA_ChCmd(TPC6240_DMA_UNIT, TPC6240_DMA_RX_CH, ENABLE) );
两者同时使用的情况下,上述语句会一直卡住
解决了,DMA_ChCmd函数存在问题 这个问题可能是由于DMA1和DMA2同时使用,导致它们之间的冲突。为了解决这个问题,你可以尝试以下方法:
1. 检查DMA1和DMA2的优先级设置。确保DMA1的优先级高于DMA2,这样当DMA2正在传输数据时,DMA1可以继续执行其他任务。
2. 在DMA1传输完成后,再启用DMA2。这样可以确保DMA2不会因为DMA1的数据传输而受到影响。
3. 使用中断处理程序来处理DMA传输完成的事件。当DMA传输完成时,中断处理程序可以自动启用DMA1,从而避免死锁问题。
4. 如果可能的话,尝试减少DMA1和DMA2同时传输的数据量。这可以减少它们之间的冲突,并提高系统的稳定性。
丙丁先生 发表于 2024-1-20 13:30
这个问题可能是由于DMA1和DMA2同时使用,导致它们之间的冲突。为了解决这个问题,你可以尝试以下方 ...
谢谢啦!是库函数有点问题,我在另一个帖子说明了
页:
[1]