你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

STM32F3 DISCONVERY DMA只能单次转化,不能连续转换的原因

[复制链接]
lylyhs 提问时间:2013-7-31 22:48 /
坑爹的官方例子代码,坑爹的驱动
整了一下午,终于发现问题:
/*ADC初始化时,将ADC_CommonInitStructure.ADC_DMAMode = ADC_DMAMode_Circular;但时钟只转换了一次*/
 ADC_CommonInitStructure.ADC_Mode = ADC_Mode_Independent;                                                                   
  ADC_CommonInitStructure.ADC_Clock = ADC_Clock_AsynClkMode;                   
  ADC_CommonInitStructure.ADC_DMAAccessMode =  ADC_DMAAccessMode_1;//ADC_DMAAccessMode_Disabled;            
  ADC_CommonInitStructure.ADC_DMAMode = ADC_DMAMode_Circular;//ADC_DMAMode_OneShot;                  
  ADC_CommonInitStructure.ADC_TwoSamplingDelay = 0;         
  ADC_CommonInit(ADC1, &ADC_CommonInitStructure);
官方驱动ADC_CommonInit(ADC1, &ADC_CommonInitStructure);是对ADCx_CCR进行配置
而器件手册RM3316上明确指出ADCx_CFGR的ADC_CFGR_DMACFG是对DMA单次还是连续转换的控制开关,
使用ADC_DMAConfig(ADC1,ENABLE) ;还是不能连续转换,进入ADC_DMAConfig函数:修改代码
void ADC_DMAConfig(ADC_TypeDef* ADCx, uint32_t ADC_DMAMode)
{
  /* Check the parameters */
  assert_param(IS_ADC_DMA_PERIPH(ADCx));
  assert_param(IS_ADC_DMA_MODE(ADC_DMAMode));
  /* Set or reset the DMACFG bit */
   ADCx->CFGR &= ~(uint32_t)ADC_CFGR_DMACFG;
  /*Modify By SuperSnoic.LYL 2013.7.31*/
   if(ADC_DMAMode==ENABLE)
   {
    ADCx->CFGR |= ADC_CFGR_DMACFG;
    }
}
终于连续转换了
坑爹的 
 
收藏 2 评论2 发布时间:2013-7-31 22:48

举报

2个回答
KUXINGSENG110 回答时间:2014-9-25 01:26:39

回复:STM32F3 DISCONVERY DMA只能单次转化,不能连续转换的原因

 楼主你好,我用STM32F303的库函数编程,怎么没有外设地址的定义啊,比如   DMA_InitStructure.DMA_PeripheralBaseAddr=DAC_DHR12RD_Address;  编译时就会显示“DAC_DHR12RD_Address”is undefined ,,能帮忙解决一下吧
kevin-421343 回答时间:2014-9-25 01:47:16

RE:STM32F3 DISCONVERY DMA只能单次转化,不能连续转换的原因

不早了,该睡睡吧,有什么问题白天解决,身体重要
关于意法半导体
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
招聘信息
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
关注我们
st-img 微信公众号
st-img 手机版