STM32F0 ADC学习

2019-10-09来源: eefocus关键字:STM32F0  ADC  stdlib的库

开始时候使用的是stdlib的库,最近发现cube库用的越来越广泛了,遂开始使用cube库来完成ADC的多通道采集实验。


ADC 的driver 在STM32F0XX_HAL_DRIVER当中,有stm32f0xx_hal_adc.c文件中,我们可以在stm32f0xx_hal_conf.h中开启 宏定义 ADC 模块。


ADC有三种工作模式,polling interruptDMA


我这里使用了polling的方式来获取多通道的数据。


首先是要声明两个参数设置的结构体


ADC_HandleTypeDef             AdcHandle;

ADC_ChannelConfTypeDef        sConfig;


  AdcHandle.Instance = ADC1;

  

  AdcHandle.Init.ClockPrescaler        = ADC_CLOCK_SYNC_PCLK_DIV4;

  AdcHandle.Init.LowPowerAutoWait      = DISABLE;

  AdcHandle.Init.LowPowerAutoPowerOff  = DISABLE;

  AdcHandle.Init.Resolution            = ADC_RESOLUTION_12B;

  AdcHandle.Init.ScanConvMode          = ADC_SCAN_ENABLE;

  AdcHandle.Init.DataAlign             = ADC_DATAALIGN_RIGHT;

  AdcHandle.Init.ContinuousConvMode    = ENABLE;

  AdcHandle.Init.DiscontinuousConvMode = DISABLE;

  AdcHandle.Init.ExternalTrigConv      = ADC_SOFTWARE_START;

  AdcHandle.Init.ExternalTrigConvEdge  = ADC_EXTERNALTRIGCONVEDGE_NONE;

  AdcHandle.Init.EOCSelection          = ADC_EOC_SINGLE_CONV;

  AdcHandle.Init.DMAContinuousRequests = DISABLE;//

  AdcHandle.Init.Overrun               = ADC_OVR_DATA_OVERWRITTEN;

  

  /* Initialize ADC peripheral according to the passed parameters */

  if (HAL_ADC_DeInit(&AdcHandle) != HAL_OK)

  {

    Error_Handler();

  }

  

    if (HAL_ADC_Init(&AdcHandle) != HAL_OK)

  {

    Error_Handler();

  }

  

  /* ### - 2 - Start calibration ############################################ */

  if (HAL_ADCEx_Calibration_Start(&AdcHandle) != HAL_OK)

  {

    Error_Handler();

  }


基本的参数设置


比较重要的参数有ADC clock设置,sample cycle,ADC分辨率,多通道 scan mode设置。


ADC clock 有两个时钟源可以选择,一个是内部的14MHZ的时钟,,另一个为APB的时钟 最大为14MHZ.








get_ADC_value 为读取AD值的模块,形参为通道,输入通道名称得到该通道对应的AD值。


float get_ADC_value(uint32_t channel)

{

 // uint32_t nResultDMA;

  float  temp;

  start_adc();

  config_channel(channel);

  

  HAL_ADC_Start(&AdcHandle);

  HAL_ADC_PollForConversion(&AdcHandle,1);

  

  temp=HAL_ADC_GetValue(&AdcHandle);

  HAL_ADC_Stop(&AdcHandle);

  //temp=temp*3/4096;

  return temp;

 

}


关键字:STM32F0  ADC  stdlib的库 编辑:什么鱼 引用地址:http://news.eeworld.com.cn/mcu/ic476490.html 本网站转载的所有的文章、图片、音频视频文件等资料的版权归版权所有人所有,本站采用的非本站原创文章及图片等内容无法一一联系确认版权者。如果本网所选内容的文章作者及编辑认为其作品不宜公开自由传播,或不应无偿使用,请及时通过电子邮件或电话通知我们,以迅速采取适当措施,避免给双方造成不必要的经济损失。

上一篇:怎样用STM32 ADC测量电压(中断方式)
下一篇:stm32中ADC初始化程序

关注eeworld公众号 快捷获取更多信息
关注eeworld公众号
快捷获取更多信息
关注eeworld服务号 享受更多官方福利
关注eeworld服务号
享受更多官方福利

推荐阅读

STM32F0库函数初始化系列:GPIO配置
_Speed_2MHz;30   GPIO_InitStructure.GPIO_OType = GPIO_OType_PP;31   GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_DOWN;32   GPIO_Init(GPIOA, &GPIO_InitStructure);   33   34 35  36   GPIO_InitStructure.GPIO_Pin = GPIO_Pin_0;//37   GPIO
发表于 2020-08-21
STM32F0系列学习】之—通用输入输出端口(GPIO)
; /* USER CODE BEGIN TIM1_MspPostInit 1 */  /* USER CODE END TIM1_MspPostInit 1 */  }}至此,关于STM32F0系列的GPIO的配置以学习记录完成,如有不对的地方,希望各位看官指出,谢谢大家!
发表于 2020-08-20
【<font color='red'>STM32F0</font>系列学习】之—通用输入输出端口(GPIO)
STM32F0两路AD配置参考
使用两路PA.1 (ADC Channel 1) 和 PA.4 (ADC Channel 4),配置方式如代码所示。使用的芯片是STM32F030C8。需定义两个变量static __IO uint16_t RegularConvertedAdcValue[ADC_CHANNEL_NUM];     // ADC1转换的电压值通过MDA方式传到flashstatic float AdcValueConvertToVoltage;             // 局部变量,用于存从flash读到的电压值然后上电初始化时调用void
发表于 2020-03-04
STM32F0 定时器触发ADC,多通道采样、DMA传输数据的配置
_PeripheralSRC;             //DMA方向:外设作为数据源      dma_init_structure.DMA_M2M = DISABLE;                           //内存到内存禁用      dma_init_structure.DMA_MemoryBaseAddr = (uint32)&adc
发表于 2020-02-19
stm32f0_GPIO
GPIO口介绍:4 个 32 位 配 置 寄 存 器GPIOx_MODER:模式配置寄存器GPIOx_OTYPER:输出模式配置寄存器GPIOx_OSPEEDR:输出速度寄存器GPIOx_PUPDR:上拉下拉选择2 个 32 位数据寄存器GPIOx_IDR:输入寄存器GPIOx_ODR:输出寄存器1 个32 位置位 / 复位寄存器GPIOx_BSRRA和B还含有1个32位锁定寄存器GPIOx_LCKRA和B还含有2个32位替代功能寄存器GPIOx_AFRH :复用功能寄存器GPIOx_AFRL :复用功能寄存器GPIO口可以配置成如下模式:● 浮空输入● 上拉输入● 下拉输入● 模拟输入● 具有上拉或下拉能力的开漏输出● 具有上拉
发表于 2019-11-18
stm32f0 hal adc配置
Clock Prescaler:和系统时钟同步并且二分频Sampling Time :采样时间,采样时间是你通过寄存器告诉STM32采样模拟量的时间,设置越长越精确
发表于 2019-11-11
<font color='red'>stm32f0</font> hal adc配置
小广播
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件
电子工程世界版权所有 京ICP证060456号 京ICP备10001474号 电信业务审批[2006]字第258号函 京公海网安备110108001534 Copyright © 2005-2020 EEWORLD.com.cn, Inc. All rights reserved