针对你的2个疑问:
第一个问题:
ADC利用DMA传输,是没有CPU干预的,你的控制流程是利用CPU去做事情,而DMA和CPU在使用者看来 是并行在做事情, 因此不会对你的控制流程产生明显的卡顿。利用DMA进行ADC采样中断是在DMA ADC传输完成后才产生中断的,这个产生中断的时间计算是这样来的:ADC一次转换时间 = ADC采样时间+12个时钟周期,
即你在设置ADC寄存器的时候,有个采样时间寄存器,最小是3个时钟周期,最大是480个时钟周期,那么
ADC一次转换时间最小为3+12 = 15个时钟周期,最大为480+12 = 492个时钟周期。ADC的一个时钟周期计算如下:APB2频率 / ADC分频,举个例子,如果APB2时钟为 8MHz,ADC分频为8分频,那么ADC的频率为1MHz,一个时钟周期为1us, 因此最小转换时间为 15时钟周期*1us = 15us, 最大492us。
|