安静ing 发表于 2018-1-30 11:37:40

关于stm32F7 ADC DMA回调函数的问题

刚玩HAL库 不是很熟不清楚ADC DMA的完成标志到底是哪个或完成中断求教
我用HAL_ADC_ConvCpltCallback做为完成标志但波形不是连续的如下

我单次采2048点的波形到是挺好的


wenyangzeng 发表于 2018-1-30 12:24:59

如果配置了DMA中断,就调用:
ADCx_DMA_IRQHandler();
如果DMA中断没有配置,才用ADC中断
ADC_IRQHandler()

安静ing 发表于 2018-1-30 13:21:28

wenyangzeng 发表于 2018-1-30 12:24
如果配置了DMA中断,就调用:
ADCx_DMA_IRQHandler();
如果DMA中断没有配置,才用ADC中断


中断是调用了ADCx_DMA_IRQHandler(); 但我要取数据返回的完成标志位是那个哇

morphlings2014 发表于 2018-1-30 13:24:32

看F7CUBE的ADC_DMA demo,虽然DMA中断和ADC中断都开了,但是完成标志位都是在HAL_ADC_ConvCpltCallback里面设置的。
我L4的多路获取值也是用的这个,暂时没发现问题。

安静ing 发表于 2018-1-30 13:26:42

morphlings2014 发表于 2018-1-30 13:24
看F7CUBE的ADC_DMA demo,虽然DMA中断和ADC中断都开了,但是完成标志位都是在HAL_ADC_ConvCpltCallback里面 ...

我也是在HAL_ADC_ConvCpltCallback里设的很奇怪

wenyangzeng 发表于 2018-1-30 14:16:13

安静ing 发表于 2018-1-30 13:21
中断是调用了ADCx_DMA_IRQHandler(); 但我要取数据返回的完成标志位是那个哇
你应该在DMA中断里设置1个自己的标志位。在读取了数据后清除标志位。

dzzwoaizi 发表于 2018-1-30 14:43:58

不管是HAL还是标准库,最终还是要回归寄存器,看寄存器最直接了当

安静ing 发表于 2018-1-30 16:11:59


缓存提取一起放到HAL_ADC_ConvCpltCallback就好了
页: [1]
查看完整版本: 关于stm32F7 ADC DMA回调函数的问题