/*************************************************
在system_stm32f4xx.c中有如下定义:
/* PLL_VCO = (HSE_VALUE or HSI_VALUE / PLL_M) * PLL_N / / /
#define PLL_M 8
#define PLL_N 336
/* SYSCLK = PLL_VCO / PLL_P //
#define PLL_P 2
/* USB OTG FS, SDIO and RNG Clock = PLL_VCO / PLLQ ///
#define PLL_Q 7
*************************************************/
根据公式:/* PLL_VCO = (HSE_VALUE or HSI_VALUE / PLL_M) * PLL_N / / /即 PLL_VCO=8/8*336=336M
而 /* SYSCLK = PLL_VCO / PLL_P //即 系统时钟SYSCLK=336/2=168M(系统时钟不能超过168M)
而/* USB OTG FS, SDIO and RNG Clock = PLL_VCO / PLLQ ///即USB SDIO RNG的时钟为24M
rcc_cofig()中可以定义各个总线时钟的分频:
HCLK = SYSCLK / 1 (AHB1Periph) 则HCLK=168M 与系统时钟相等
PCLK2 = HCLK / 2 (APB2Periph) 则PCLK2=168/2=84M(函数中定义分频值)
PCLK1 = HCLK / 4 (APB1Periph)则 PCLK1 =168/4(函数中定义分频值)
ADC_CommonInitStructure.ADC_Prescaler = ADC_Prescaler_Div2; //
在ADC设置中设置为PCLK2的2个分频
则ADC时钟脉冲为84/2=42M
ADC_RegularChannelConfig(ADC1, ADC_Channel_10, 1, ADC_SampleTime_3Cycles);
则ADC采样的频率为42/(3+12)=2.8M(其中3是上面函数定义的参数(可变),12是采样值转换的固定时间(固定))
注意:采样频率与
ADC_CommonInitStructure.ADC_TwoSamplingDelay =ADC_TwoSamplingDelay_5Cycles;//ADC_delay_between_2_sampling_phases
这个函数没有任何关系。
由于系统时钟最大不能超过168M,所以ADC采样的最大值为2.8M/S.
如果想设定为2M的采样频率,则需要修改PLL_N为240;