问小白 wenxiaobai
资讯
历史
科技
环境与自然
成长
游戏
财经
文学与艺术
美食
健康
家居
文化
情感
汽车
三农
军事
旅行
运动
教育
生活
星座命理

STM32 ADC库函数详解

创作时间:
作者:
@小白创作中心

STM32 ADC库函数详解

引用
CSDN
1.
https://blog.csdn.net/Echo_cy_/article/details/136828921

本文详细介绍了STM32微控制器的ADC(模数转换器)库函数,包括时钟配置、初始化、校准、中断控制、数据获取等功能,并对每个函数的功能和参数进行了说明。对于想要深入了解STM32 ADC功能和库函数的读者来说,这篇文章具有很高的参考价值。

RCC_ADCCLKConfig 函数

函数用来配置ADCCLK分频器的,可以对APB2的72MHz时钟选择2、4、6、8分频,输入到ADCCLK。

ADC_DeInit 函数

函数用于恢复缺省配置。

ADC_Init 函数

函数用于ADC初始化。

  • ADC_Mode:设置ADC工作在独立或者双ADC模式。
  • ADC_ScanConvMode:规定了模数转换工作在扫描模式(多通道)还是单次(单通道)模式。可以设置这个参数为 ENABLE或者DISABLE。
  • ADC_ContinuousConvMode:规定了模数转换工作在连续还是单次模式。可以设置这个参数为ENABLE或者 DISABLE。
  • ADC_ExternalTrigConv:定义了使用外部触发来启动规则通道的模数转换。
  • ADC_DataAlign:规定了 ADC数据向左边对齐还是向右边对齐。
  • ADC_NbrOfChannel:规定了顺序进行规则转换的 ADC通道的数目。这个数目的取值范围是1到16。

:为了能够正确地配置每一个ADC通道,用户在调用ADC_Init()之后,必须调用ADC_ChannelConfig函数来配置每个所使用通道的转换次序和采样时间。

ADC_StructInit 函数

结构体初始化。

ADC_Cmd 函数

用于给ADC上电的,也就是ADC的开关控制。

ADC_DMACmd 函数

用于开启DMA输出信号的。如果使用DMA转运数据,就需要调用这个函数。

ADC_ITConfig 函数

中断输出控制。

  • ADC_IT:可以用来使能或者失能 ADC中断。

用于校准的函数

在ADC初始化完成之后,依次调用就行了。

ADC_ResetCalibration 函数

复位校准。

ADC_GetResetCalibrationStatus 函数

获取复位校准状态。

ADC_StartCalibration 函数

开始校准。

ADC_GetCalibrationStatus 函数

获取开始校准状态

函数代码:

/**
  * @brief  Gets the selected ADC calibration status.
  * @param  ADCx: where x can be 1, 2 or 3 to select the ADC peripheral.
  * @retval The new state of ADC calibration (SET or RESET).
  */
FlagStatus ADC_GetCalibrationStatus(ADC_TypeDef* ADCx)
{
  FlagStatus bitstatus = RESET;
  /* Check the parameters */
  assert_param(IS_ADC_ALL_PERIPH(ADCx));
  /* Check the status of CAL bit */
  if ((ADCx->CR2 & CR2_CAL_Set) != (uint32_t)RESET)
  {
    /* CAL bit is set: calibration on going */
    bitstatus = SET;
  }
  else
  {
    /* CAL bit is reset: end of calibration */
    bitstatus = RESET;
  }
  /* Return the CAL bit status */
  return  bitstatus;
}

ADC_SoftwareStartConvCmd 函数

ADC软件开始转换控制函数用于软件触发的函数,调用一下就能软件触发转换了。

ADC_GetSoftwareStartConvStatus 函数

ADC获取软件开始转换状态,调用这个函数不可以判断转换是否已经结束。

这个函数是用来获取CR2的SWSTART这一位的,对照芯片手册寄存器查找,CR2的SWSTART这一位作用是:开始转换规则通道,由软件设置该位以启动转换,转换开始后硬件马上清除此位。以此分析,这个函数就是给SWSTART位置1,以开始转换的。这个函数是返回SWSTART的状态,由于SWSTART位在转换后立刻就清零了,所以这个函数的返回值跟转换是否结束毫无关系。

ADC_GetFlagStatus 函数

用于知道ADC转换是否结束。

获取标志位状态,参数给EOC的标志位,判断EOC标志位是不是置1了。如果转换结束,EOC标志位置1,然后调用这个函数,判断标志位,这样就可以正确的判断转换是否结束。

配置间断模式的函数

ADC_DiscModeChannelCountConfig 函数

函数用于设置每隔几个通道间断一次。

ADC_DiscModeCmd 函数

函数用于设置是否启用间断模式。

ADC_RegularChannelConfig 函数

ADC规则组通道配置,函数用于给序列的每个位置填写指定的通道。也就是填写点菜菜单的过程。

  • 第一个参数:ADCx,指定ADC通道
  • 第二个参数:ADC_Channel,需要指定的通道
  • 第三个参数:Rank,序列几的位置
  • 第四个参数:ADC_SampleTime,指定通道的采样时间

ADC_Channel 指定了通过调用函数ADC_RegularChannelConfig来设置的ADC通道。

ADC_SampleTime设定了选中通道的 ADC采样时间。

ADC_ExternalTrigConvCmd 函数

ADC外部触发转换控制,函数用于是否允许外部触发转换。

函数代码:

/**
  * @brief  Enables or disables the ADCx conversion through external trigger.
  * @param  ADCx: where x can be 1, 2 or 3 to select the ADC peripheral.
  * @param  NewState: new state of the selected ADC external trigger start of conversion.
  *   This parameter can be: ENABLE or DISABLE.
  * @retval None
  */
void ADC_ExternalTrigConvCmd(ADC_TypeDef* ADCx, FunctionalState NewState)
{
  /* Check the parameters */
  assert_param(IS_ADC_ALL_PERIPH(ADCx));
  assert_param(IS_FUNCTIONAL_STATE(NewState));
  if (NewState != DISABLE)
  {
    /* Enable the selected ADC conversion on external event */
    ADCx->CR2 |= CR2_EXTTRIG_Set;
  }
  else
  {
    /* Disable the selected ADC conversion on external event */
    ADCx->CR2 &= CR2_EXTTRIG_Reset;
  }
}

ADC_GetConversionValue 函数

ADC获取转换值,获取AD转换的数据寄存器,读取转换结果就要使用这个函数。

对模拟看门狗进行配置的函数

ADC_AnalogWatchdogCmd 函数

是否启动模拟看门狗。

ADC_AnalogWatchdog 规定了ADC模拟看门狗的设置。

ADC_AnalogWatchdogThresholdsConfig 函数

配置高低阈值。

ADC_AnalogWatchdogSingleChannelConfig 函数

配置看门的通道。

ADC_TempSensorVrefintCmd 函数

ADC温度传感器、内部参考电压控制。这个函数是用来开启内部的两个通道的。如果要用这两个通道,需要调用这个函数,开启一下。若不开启是读不到正确结果的。

获取/清除

ADC_GetFlagStatus 函数

获取标志位状态。

ADC_ClearFlag 函数

清除标志位。

ADC_GetITStatus 函数

获取中断状态。

ADC_ClearITPendingBit 函数

清除中断挂起位。

© 2023 北京元石科技有限公司 ◎ 京公网安备 11010802042949号