打印

STM32F的ADC如何获得每个通道的转换结果.谢谢指教!

[复制链接]
3617|3
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
sptek|  楼主 | 2009-9-30 10:20 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 sptek 于 2009-9-30 10:36 编辑

不想用DMA方式进行ADC.初始化代码如下,我该如何获得每个通道的AD转换数据呢?看手册都没有明白.
/* ADC1 Configuration ------------------------------------------------------*/   
  ADC_InitStructure.ADC_Mode = ADC_Mode_Independent;   
  ADC_InitStructure.ADC_ScanConvMode = DISABLE;//工作在单通道模式.(另外一种多通道模式)   
  ADC_InitStructure.ADC_ContinuousConvMode = ENABLE; //工作在连续转换还是单词转换模式  
  ADC_InitStructure.ADC_ExternalTrigConv = ADC_ExternalTrigConv_None;//触发转换的模式:有软件触发转换   
  ADC_InitStructure.ADC_DataAlign = ADC_DataAlign_Right; //数据对齐模式  
  ADC_InitStructure.ADC_NbrOfChannel = 2;//顺序进行AD转换的数码.   
  ADC_Init(ADC1, &ADC_InitStructure);   
   
  /* ADC1 regular channel0 configuration */
  /*设置ADC_SMPR和ADC_SQR寄存器*/   
  ADC_RegularChannelConfig(ADC1, ADC_Channel_0, 1, ADC_SampleTime_13Cycles5); //指定ADC规则组通道.  
  /* ADC1 regular channel0 configuration */
  ADC_RegularChannelConfig(ADC1, ADC_Channel_1, 2, ADC_SampleTime_13Cycles5);   
   
  /* Configure high and low analog watchdog thresholds */   
  ADC_AnalogWatchdogThresholdsConfig(ADC1, 0x0B00, 0x0300);   
  /* Configure channel14 as the single analog watchdog guarded channel */   
  ADC_AnalogWatchdogSingleChannelConfig(ADC1, ADC_Channel_0  );   
  /* Enable analog watchdog on one regular channel */   
  ADC_AnalogWatchdogCmd(ADC1, ADC_AnalogWatchdog_SingleRegEnable);   
   
  /* Enable AWD interupt */   
  //ADC_ITConfig(ADC1, ADC_IT_AWD, ENABLE);   
   
  /* Enable ADC1 */   
  ADC_Cmd(ADC1, ENABLE);   
   
  /* Enable ADC1 reset calibaration register */      
  ADC_ResetCalibration(ADC1);   
  /* Check the end of ADC1 reset calibration register */   
  while(ADC_GetResetCalibrationStatus(ADC1));   
   
  /* Start ADC1 calibaration */   
  ADC_StartCalibration(ADC1);   
  /* Check the end of ADC1 calibration */   
  while(ADC_GetCalibrationStatus(ADC1));   
   
  /* Start ADC1 Software Conversion */  
  /*设置ADC_CR2的软件启动位,启动ADC软件启动转换功能*/  
  ADC_SoftwareStartConvCmd(ADC1, ENABLE);
沙发
barboon| | 2009-9-30 11:49 | 只看该作者
如果你的通道数目不超过四个,又不想用DMA,可以使用注入通道。

使用特权

评论回复
板凳
sptek|  楼主 | 2009-9-30 12:17 | 只看该作者
注入方式也没有明白如何获得转换结果.我现在是需要获得AIN0和AIN1的结果.是不是配置JSQR和JDRX的寄存器,然后读取ADC_DR的值就可以呢?谢谢指点!

使用特权

评论回复
地板
hjiongh| | 2012-5-10 10:54 | 只看该作者
同求

使用特权

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

本版积分规则

个人签名:MCU/ ARM/VC++ 产品方案开发.QQ:923246549,EMAIL:szsptek@163.com。淘宝店http://shop63759203.taobao.com

9

主题

54

帖子

0

粉丝