库函数解释

void RCC_ADCCLKConfig(uint32_t RCC_PCLK2);

恢复缺省配置

void ADC_DeInit(ADC_TypeDef* ADCx);

ADC初始化

void ADC_Init(ADC_TypeDef* ADCx, ADC_InitTypeDef* ADC_InitStruct);

结构体初始化

void ADC_StructInit(ADC_InitTypeDef* ADC_InitStruct);

ADC上电

void ADC_Cmd(ADC_TypeDef* ADCx, FunctionalState NewState);

开启DMA输出信号

void ADC_DMACmd(ADC_TypeDef* ADCx, FunctionalState NewState);

中断输出控制

void ADC_ITConfig(ADC_TypeDef* ADCx, uint16_t ADC_IT, FunctionalState NewState);

  • 用于控制某个中断能否通往NVIC

复位校准

void ADC_ResetCalibration(ADC_TypeDef* ADCx);

获取复位校准状态

void ADC_ResetCalibration(ADC_TypeDef* ADCx);

开始校准

void ADC_StartCalibration(ADC_TypeDef* ADCx);

获取开始校准状态

FlagStatus ADC_GetCalibrationStatus(ADC_TypeDef* ADCx);

ADC软件触发的函数

void ADC_SoftwareStartConvCmd(ADC_TypeDef* ADCx, FunctionalState NewState);

ADC获取软件转换状态

FlagStatus ADC_GetSoftwareStartConvStatus(ADC_TypeDef* ADCx);

  • 实际上是获取CR2的SWSTART这一位,但是SWSTART在开始ADC转换后直接清除,所以并不能通过这个函数获得是否开始转换的信息

如何获取ADC是否开启的状态?

获取标志位状态

FlagStatus ADC_GetFlagStatus(ADC_TypeDef* ADCx, uint8_t ADC_FLAG);

  • 可以调用这个函数,ADC_FLAG选择EOC,判断EOC标志位是否置1

每隔几个通道间断一次

void ADC_DiscModeChannelCountConfig(ADC_TypeDef* ADCx, uint8_t Number);

是否启动间断模式

void ADC_DiscModeCmd(ADC_TypeDef* ADCx, FunctionalState NewState);

ADC规则组通道配置

void ADC_RegularChannelConfig(ADC_TypeDef* ADCx, uint8_t ADC_Channel, uint8_t Rank, uint8_t ADC_SampleTime);

  • ADCx
  • ADC_Channel:指定的通道
  • Rank:序列的位置
  • ADC_SampleTime:指定通道的采样时间

ADC外部触发转换控制(是否允许外部触发转换)

void ADC_ExternalTrigConvCmd(ADC_TypeDef* ADCx, FunctionalState NewState);

ADC获取转换值

uint16_t ADC_GetConversionValue(ADC_TypeDef* ADCx);

  • 获取AD转换的数据寄存器,读取转换结果

ADC获取双模式转换值

uint32_t ADC_GetDualModeConversionValue(void);

是否启动模拟看门狗

void ADC_AnalogWatchdogCmd(ADC_TypeDef* ADCx, uint32_t ADC_AnalogWatchdog);

配置高低阈值

void ADC_AnalogWatchdogThresholdsConfig(ADC_TypeDef* ADCx, uint16_t HighThreshold, uint16_t LowThreshold);

配置看门的通道

void ADC_AnalogWatchdogSingleChannelConfig(ADC_TypeDef* ADCx, uint8_t ADC_Channel);

ADC温度传感器、内部参考电压控制

void ADC_TempSensorVrefintCmd(FunctionalState NewState);