我正在通过stmf303re核的DAC运行DMA传输,并且想知道HAL_DAC_Stop_DMA和HAL_DAC_Stop之间是否有区别?我问这个问题是因为在前面的代码中,我只使用了一个HAL_DAC_Stop,它运行得很好,但是我现在看到了也有一个HAL_DAC_Stop_DMA,并且想知道区别是什么?
发布于 2022-04-25 06:45:32
如果您用DMA启动它,您应该用等效的函数停止它。如果使用非DMA停止功能,则ADC将停止,但DMA仍在运行,等待ADC告诉它更多的数据可用。显然,这将永远不会到来,因此系统处于一个有趣的状态。也许下一个开始函数可以整理这个有趣的状态,或者它不能。如果您想要找到确切的细节,请阅读函数的来源。
另一个不使用DMA停止功能的可能问题是ADC产生的最后一个数据仍然被DMA复制。这意味着您的目标缓冲区还没有准备好供您使用。这是否会导致问题取决于代码读取目标缓冲区的速度。
https://stackoverflow.com/questions/71992676
复制相似问题