[STM32F2] F205的DMA只要启动就不能再停止吗

[复制链接]
1754|6
 楼主| motor666 发表于 2014-11-7 14:08 | 显示全部楼层 |阅读模式
我使用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                                 
           }

}










LOVE_ELEC 发表于 2014-11-11 15:18 | 显示全部楼层
楼主,已经关闭了DMA,如何继续更新数据?建议楼主在处理完数据后使能DMA试一下!
 楼主| motor666 发表于 2014-11-14 15:04 | 显示全部楼层
也许我没说清楚,处理完之后再ADC1_CH6_DMA_Config(); 里面有重新使能DMA,就像刚上电时一样初始化,但是,数据再也不变化了,就像DMA停止了。
泰山特曲123 发表于 2014-11-14 18:39 来自手机 | 显示全部楼层
试一下初始化前调用dmadeinit()函数
 楼主| motor666 发表于 2014-11-17 12:46 | 显示全部楼层
dmadeinit()初始化里有
wenyining510 发表于 2015-9-4 01:13 | 显示全部楼层
尝试简化ADC1_CH6_DMA_Config();  为 DMA_Cmd(DMA2_Stream0, ENABLE);  
您需要登录后才可以回帖 登录 | 注册

本版积分规则

176

主题

426

帖子

1

粉丝
快速回复 在线客服 返回列表 返回顶部