我使用F205的DMA进行ADC采样,模拟输入在PA6上。参考标准库里的例程写初始化,采集64个值,启动后一切正常,采集值不断更新。但是我现在要每200毫秒进定时器把采集的值计算平均值,进定时中断后,需把DMA停止,以免计算的过程中有新采集的值刷新数组。现在发现,只要停止了DMA,就再也不更新采集数据了,DMA停止了,怎么回事很困惑。定时中断程序如下:
void TIM2_IRQHandler(void){
if(TIM_GetITStatus(TIM2, TIM_IT_Update) != RESET)
{
TIM_ClearITPendingBit(TIM2, TIM_IT_Update); // 清中断标志
DMA_Cmd(DMA2_Stream0, DISABLE); // 停止DMA
/* 此处是计算平均值程序 */
ADC1_CH6_DMA_Config(); // 重新使能 DMA
}
}
|