打印
[STM32F2]

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

[复制链接]
1372|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()函数

使用特权

评论回复
5
motor666|  楼主 | 2014-11-17 12:46 | 只看该作者
dmadeinit()初始化里有

使用特权

评论回复
6
wenyining510| | 2015-9-4 01:13 | 只看该作者
尝试简化ADC1_CH6_DMA_Config();  为 DMA_Cmd(DMA2_Stream0, ENABLE);  

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

173

主题

419

帖子

1

粉丝