本帖最后由 yangjizhufei 于 2013-6-18 15:36 编辑
void ADCInit(void)
{
ADC_InitTypeDef ADC_InitStructure;
GPIO_InitTypeDef GPIO_InitStructure;
DMA_InitTypeDef DMA_InitStructure;
/* Enable GPIOA clock */
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA|RCC_APB2Periph_GPIOB|RCC_APB2Periph_GPIOC, ENABLE);
/* Configure PA0-PA7 (ADC Channel0-Channel7) as analog input */
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_0|GPIO_Pin_1|GPIO_Pin_2|GPIO_Pin_3|GPIO_Pin_4|GPIO_Pin_5|GPIO_Pin_6|GPIO_Pin_7;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AIN;
GPIO_Init(GPIOA, &GPIO_InitStructure);
/* Configure PB0-PB1 (ADC Channel8-Channel9) as analog input */
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_0|GPIO_Pin_1;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AIN;
GPIO_Init(GPIOB, &GPIO_InitStructure);
/* Configure PC0-PC5 (ADC Channel10-Channel5) as analog input */
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_0|GPIO_Pin_1|GPIO_Pin_2|GPIO_Pin_3|GPIO_Pin_4|GPIO_Pin_5;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AIN;
GPIO_Init(GPIOC, &GPIO_InitStructure);
/* Enable ADC1 and GPIOC clock */
RCC_APB2PeriphClockCmd(RCC_APB2Periph_ADC1 , ENABLE);
/* Enable DMA clock */
RCC_AHBPeriphClockCmd(RCC_AHBPeriph_DMA1, ENABLE);
/* Enable ADC1 and GPIOC clock */
RCC_APB2PeriphClockCmd(RCC_APB2Periph_ADC1 , ENABLE);
主函数里面的while循环
while(1)
{
for(i=0; i<8; i++)
{
ADC_ConvertedValue = 0;
}
DMA_Cmd(DMA1_Channel1, ENABLE); //启动DMA通道
ADC_SoftwareStartConvCmd(ADC1, ENABLE);
while (DMA_GetFlagStatus(DMA1_FLAG_TC1) == RESET);
DMA_Cmd(DMA1_Channel1, DISABLE);
ADC_SoftwareStartConvCmd(ADC1, DISABLE);
if (ticks++ >= 500) { //间隔时间显示转换结果
ticks = 0;
Clock1s = 1;
printf("\r\n USART1 print AD_value -------------------------- \r\n");
}
if (Clock1s) {
Clock1s = 0;
for(i=0; i<8; i++)
{
printf("The current AD value = 0x%04X \r\n", ADC_ConvertedValue);
delay_ms(1000);
}
}
最后串口输出的全是0 , |