第一模块 ADC
ADC的知识点很多,我这里主要讲一下如何在stm32中傻瓜式的使用ADC函数,一般情况下只需要学会这3个结构体的调用即可第一个 adc_init();对函数adc初始化 ,第二个Get_Adc(u8 ch)获取adc的值,第三个取平均值Get_Adc_Average(u8 ch,u8 times),ps:能在主函数对这3个函数会调用,会改(学会这些ad模块就基本上ok了)。
下面给大家源代码分析
1.adc的初始化
void adc_init();
void Adc_Init(void)
{
ADC_InitTypeDef ADC_InitStructure; GPIO_InitTypeDef GPIO_InitStructure;
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA |
u16 get_adc(u8 ch);
u16get_adc_average(u8 ch,u8 times)
RCC_APB2Periph_ADC1 , ENABLE ); //使能 ADC1 通道时钟
RCC_ADCCLKConfig(RCC_PCLK2_Div6); //设置 ADC 分频因子 6
//72M/6=12,ADC 最大时间不能超过 14M
//PA1 作为模拟通道输入引脚
GPIO_InitStructure.GPIO_Pin =GPIO_Pin_1; GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AIN;
//模拟输入
GPIO_Init(GPIOA, &GPIO_InitStructure); //初始化 GPIOA.1
ADC_DeInit(ADC1); //复位 ADC1,将外设 ADC1 的全部寄存器重设为缺省值
ADC_InitStructure.ADC_Mode = ADC_Mode_Independent;
//ADC 独立模式
ADC_InitStructure.ADC_ScanConvMode = DISABLE;
//单通道模式
ADC_InitStructure.ADC_ContinuousConvMode = DISABLE; //单次转换模式
ADC_InitStructure.ADC_ExternalTrigConv = ADC_ExternalTrigConv_None;<