打印

ADCDMA完了之后串口输出数据全是O,求检查错误

[复制链接]
1237|2
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
yangjizhufei|  楼主 | 2013-6-18 15:24 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 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 ,
沙发
cjhk| | 2013-6-18 20:38 | 只看该作者
这个  代码太长了   兄弟   帮你顶一个   看看别人的意见吧

使用特权

评论回复
板凳
woshiaokeman| | 2013-6-19 09:57 | 只看该作者
我也在学这个,所以来看看……
这样看看不出什么问题,毕竟没有ADC和DMA的配置函数……

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

5

主题

11

帖子

0

粉丝