STM32 的 ADC 是 12 位逐次逼近型的模拟数字转换器,它有 18 个通道,可测量 16 个外部和 2 个内部信号源
各通道的 A/D 转换可以单次、连续、扫描或间断模式执行。 ADC 的结果可以左对齐或右对齐方式存储在 16 位数据
寄存器中。
  当ADC 通道 1 在 PA1 上时。

 //初始化 ADC
//这里我们仅以规则通道为例
//我们默认将开启通道 0~3
void Adc_Init(void)
{  ADC_InitTypeDef ADC_InitStructure;
  GPIO_InitTypeDef GPIO_InitStructure;
  RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA |
  RCC_APB2Periph_ADC1 , ENABLE ); //使能 ADC1 通道时钟
  RCC_ADCCLKConfig(RCC_PCLK2_Div6); //设置 ADC 分频因子 6
  //72M/6=12,ADC 最大时间不能超过 14M
  //PA1 作为模拟通道输入引脚
  GPIO_InitStructure.GPIO_Pin =GPIO_Pin_1;
  GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AIN;//模拟输入
  GPIO_Init(GPIOA, &GPIO_InitStructure); //初始化 GPIOA.1
  ADC_DeInit(ADC1); //复位 ADC1,将外设 ADC1 的全部寄存器重设为缺省值
  ADC_InitStructure.ADC_Mode = ADC_Mode_Independent; //ADC 独立模式
  ADC_InitStructure.ADC_ScanConvMode = DISABLE; //单通道模式
  ADC_InitStructure.ADC_ContinuousConvMode = DISABLE; //单次转换模式
  ADC_InitStructure.ADC_ExternalTrigConv = ADC_ExternalTrigConv_None;//转换由
  //软件而不是外部触发启动
21   ADC_InitStructure.ADC_DataAlign = ADC_DataAlign_Right; //ADC 数据右对齐
  ADC_Init(ADC1, &ADC_InitStructure); //根据指定的参数初始化外设 ADCx
  ADC_Cmd(ADC1, ENABLE); //使能指定的 ADC1
  ADC_ResetCalibration(ADC1); //开启复位校准
  while(ADC_GetResetCalibrationStatus(ADC1)); //等待复位校准结束
  ADC_StartCalibration(ADC1); //开启 AD 校准
  while(ADC_GetCalibrationStatus(ADC1)); //等待校准结束
  }
    //获得 ADC 值
31      //ch:通道值 0~3
32     u16 Get_Adc(u8 ch)
  {
  //设置指定 ADC 的规则组通道,设置它们的转化顺序和采样时间
  ADC_RegularChannelConfig(ADC1, ch, , ADC_SampleTime_239Cycles5 );
36   //通道 1,规则采样顺序值为 1,采样时间为 239.5 周期
  ADC_SoftwareStartConvCmd(ADC1, ENABLE); //使能软件转换功能
38   while(!ADC_GetFlagStatus(ADC1, ADC_FLAG_EOC ));//等待转换结束
  return ADC_GetConversionValue(ADC1); //返回最近一次 ADC1 规则组的转换结果
  }
    u16 Get_Adc_Average(u8 ch,u8 times)
  {
  u32 temp_val=;
  u8 t;
  for(t=;t<times;t++)
  {   temp_val+=Get_Adc(ch);      //通过Get_Adc_Average函数,用于多次获取 ADC 值,取平均,用来提高准确度。
    delay_ms();
  }
  return temp_val/times;
}

知识来源:STM32F1 开发指南(库函数版)

最新文章

  1. 通过Gulp使用Browsersync实现浏览器实时响应文件更改
  2. Python的平凡之路(20)
  3. nodejs中Stream的理解
  4. cordova /phonegap 自定义插件
  5. 【转】Javascript 中的false,零值,null,undefined和空字符串对象
  6. iPhone 6 &amp; iPhone 6 Plus适配
  7. 关于dispatchTouchEvent, onInterceptTouchEvent, onTouchEvent的分发机制浅析
  8. 九度OJ 1351 数组中只出现一次的数字
  9. C#操作word封装
  10. ubuntu openstack
  11. The Django template language 阅读批注
  12. python3.5 + django1.9.1+mysql
  13. vue框架-学习记录
  14. linux下挂载U盘
  15. angularJS--多个控制器之间的数据共享
  16. YOLO理解
  17. 将bean转换成XML字符串
  18. Match-----Gray-value-----基于灰度值的模板匹配
  19. logback log4j log4j2 性能实测
  20. PAT 1049 数列的片段和

热门文章

  1. 【转】总结C++中取成员函数地址的几种方法
  2. VSAN Cluster Failed
  3. spring事务管理方式大全
  4. export与export default exports与module.exports的用法
  5. Google chrome浏览器打不开网页,显示ERR_Failed...等问题的解决方法
  6. C#读写记事本(txt)文件
  7. Java注解 框架开发之Java注解的妙用
  8. sgu 126 Boxes
  9. 蓝桥杯--乘积最大(数字DP)
  10. HDU-5001 Walk (概率DP)