一 ADC简介
ADC是模数转换器
STM32 有16个人外部通道和两个内部通道。
STM32F103C8T6只有10个外部通道。
引脚与ADC通道关系表
二 配置框图
三 ADC 配置中所用到的函数
RCC_ADCCLKConfig(uint32_t RCC_PCLK2);
配置adc的时钟,这个是配置预分频器的有2、4、6、8,ADC的最大频率为14MHz,而ADC是接在APB2总线上的,所以与分频系数一般选择6或8.
ADC_DeInit(ADC_TypeDef* ADCx);恢复缺省配置
ADC_Init(ADC_TypeDef* ADCx, ADC_InitTypeDef* ADC_InitStruct); 初始化ADC_StructInit(ADC_InitTypeDef* ADC_InitStruct);结构体初始化
ADC_Cmd(ADC_TypeDef* ADCx, FunctionalState NewState);使ADC使能,对应框图的开关控制
ADC_DMACmd(ADC_TypeDef* ADCx, FunctionalState NewState);开启DMA输出信号的(在多通道中使用)
ADC_ITConfig(ADC_TypeDef* ADCx, uint16_t ADC_IT, FunctionalState NewState);中断输出控制。控制某个中断能不能通向NVIC。
void ADC_ResetCalibration(ADC_TypeDef* ADCx);
FlagStatus ADC_GetResetCalibrationStatus(ADC_TypeDef* ADCx);
void ADC_StartCalibration(ADC_TypeDef* ADCx);
FlagStatus ADC_GetCalibrationStatus(ADC_TypeDef* ADCx);
控制校准的函数,在ADC初始化完成后依次调用即可。
void ADC_SoftwareStartConvCmd(ADC_TypeDef* ADCx, FunctionalState NewState);
void ADC_ExternalTrigConvCmd(ADC_TypeDef* ADCx, FunctionalState NewState);
ADC开始转化控制,第一个是软件触发,第二是硬件触发。
FlagStatus ADC_GetSoftwareStartConvStatus(ADC_TypeDef* ADCx);这个函数没什么卵用。
FlagStatus ADC_GetFlagStatus(ADC_TypeDef* ADCx, uint8_t ADC_FLAG);
这个函数判断转化是否结束,如果获取EOC的标志位,如果EOC标志位置一,证明转化结束。
void ADC_DiscModeChannelCountConfig(ADC_TypeDef* ADCx, uint8_t Number);
void ADC_DiscModeCmd(ADC_TypeDef* ADCx, FunctionalState NewState);
这两个函数是配置间断的,第一个是配置隔几个通道间断一次,第二个为是否启动间断。
void ADC_RegularChannelConfig(ADC_TypeDef* ADCx, uint8_t ADC_Channel, uint8_t Rank, uint8_t ADC_SampleTime);
ADC规则组通道配置。
uint16_t ADC_GetConversionValue(ADC_TypeDef* ADCx);
uint32_t ADC_GetDualModeConversionValue(void);
ADC获取转换值。第二个是双ADC模式。
void ADC_AutoInjectedConvCmd(ADC_TypeDef* ADCx, FunctionalState NewState);
void ADC_InjectedDiscModeCmd(ADC_TypeDef* ADCx, FunctionalState NewState);
void ADC_ExternalTrigInjectedConvConfig(ADC_TypeDef* ADCx, uint32_t ADC_ExternalTrigInjecConv);
void ADC_ExternalTrigInjectedConvCmd(ADC_TypeDef* ADCx, FunctionalState NewState);
void ADC_SoftwareStartInjectedConvCmd(ADC_TypeDef* ADCx, FunctionalState NewState);
FlagStatus ADC_GetSoftwareStartInjectedConvCmdStatus(ADC_TypeDef* ADCx);
void ADC_InjectedChannelConfig(ADC_TypeDef* ADCx, uint8_t ADC_Channel, uint8_t Rank, uint8_t ADC_SampleTime);
void ADC_InjectedSequencerLengthConfig(ADC_TypeDef* ADCx, uint8_t Length);
void ADC_SetInjectedOffset(ADC_TypeDef* ADCx, uint8_t ADC_InjectedChannel, uint16_t Offset);
uint16_t ADC_GetInjectedConversionValue(ADC_TypeDef* ADCx, uint8_t ADC_InjectedChannel);
ADC的注入组的配置。
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);
对模拟看门狗进行配置。
void ADC_TempSensorVrefintCmd(FunctionalState NewState);
ADC内部温度传感器,内部参考电压控制。开启内部两个通道的。



