• stm32 ADC配置


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

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


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


  • 相关阅读:
    Navicat 安装教程
    office 2016 安装教程
    PyCharm 2018.1.1软件安装教程
    Pytorch学习笔记02----深度学习中的epochs,batch_size,iterations详解
    Anaconda 安装步骤
    Python基础汇总001_txt文件读写、字典使用等
    Pytorch学习笔记01----pytorch框架介绍
    es6的学习
    vue的使用与安装 npm -v报错
    js弹窗返回值详解(window.open方式)
  • 原文地址:https://www.cnblogs.com/zengsf/p/7212429.html
Copyright © 2020-2023  润新知