求助,我用的板子是STM32F407VET6,DCMI寄存器配置成功了,但是毫无反应

2019-07-20 12:48发布

本帖最后由 lovebaib 于 2017-1-19 13:48 编辑

      昨天尝试了DCMI,根据手册和正点原子大大的例程写了一个DCMI配置驱动OV7725摄像头,硬件仿真的时候一直进不去DCMI的中断(PS:我把所有中断都开了),察看DCMI的配置寄存器,发现确实写入了值(正确的值),但是运行的时候DCMI->MISR寄存器一直为0,根本不变,DCMI->DR也一样,摄像头初始化能通过,VSYNC引脚也在跳变(在仿真时和示波器都确定了)。怀疑是引脚复用没通过,改了好多次都不行,请大家帮帮忙,原子哥求助
      以下是主要代码:
        
  RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOA|RCC_AHB1Periph_GPIOB|RCC_AHB1Periph_GPIOC|RCC_AHB1Periph_GPIOE, ENABLE);//ê1ÄüGPIOA B C E ê±Öó
        RCC_AHB2PeriphClockCmd(RCC_AHB2Periph_DCMI,ENABLE);//ê1ÄüDCMIê±Öó

        //PA4/63õê¼»ˉéèÖÃ
  GPIO_InitStructure.GPIO_Pin = GPIO_Pin_4|GPIO_Pin_6;//PA4/6   ¸′óÃ1|Äüêä3ö
  GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF; //¸′óÃ1|Äüêä3ö
  GPIO_InitStructure.GPIO_OType = GPIO_OType_PP;//íÆíìêä3ö
  GPIO_InitStructure.GPIO_Speed = GPIO_Speed_100MHz;//100MHz
  GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_UP;//éÏà-
        
        GPIO_PinAFConfig(GPIOA,GPIO_PinSource4,GPIO_AF_DCMI); //PA4,AF13  DCMI_HSYNC
        GPIO_PinAFConfig(GPIOA,GPIO_PinSource6,GPIO_AF_DCMI); //PA6,AF13  DCMI_PCLK
        
  GPIO_Init(GPIOA, &GPIO_InitStructure);//3õê¼»ˉ
        
  GPIO_InitStructure.GPIO_Pin = GPIO_Pin_6|GPIO_Pin_7;// PB6/7   ¸′óÃ1|Äüêä3ö
        
        GPIO_PinAFConfig(GPIOB,GPIO_PinSource7,GPIO_AF_DCMI); //PB7,AF13  DCMI_VSYNC
        GPIO_PinAFConfig(GPIOB,GPIO_PinSource6,GPIO_AF_DCMI); //PB6,AF13  DCMI_D5
        
  GPIO_Init(GPIOB, &GPIO_InitStructure);//3õê¼»ˉ
        
  GPIO_InitStructure.GPIO_Pin = GPIO_Pin_6|GPIO_Pin_7|GPIO_Pin_8|GPIO_Pin_9|GPIO_Pin_11;//PC6/7/8/9/11 ¸′óÃ1|Äüêä3ö
        
        GPIO_PinAFConfig(GPIOC,GPIO_PinSource6,GPIO_AF_DCMI); //PC6,AF13  DCMI_D0  
        GPIO_PinAFConfig(GPIOC,GPIO_PinSource7,GPIO_AF_DCMI); //PC7,AF13  DCMI_D1
        GPIO_PinAFConfig(GPIOC,GPIO_PinSource8,GPIO_AF_DCMI); //PC8,AF13  DCMI_D2
        GPIO_PinAFConfig(GPIOC,GPIO_PinSource9,GPIO_AF_DCMI); //PC9,AF13  DCMI_D3
        GPIO_PinAFConfig(GPIOC,GPIO_PinSource11,GPIO_AF_DCMI);//PC11,AF13 DCMI_D4
        
  GPIO_Init(GPIOC, &GPIO_InitStructure);//3õê¼»ˉ        

  GPIO_InitStructure.GPIO_Pin = GPIO_Pin_5|GPIO_Pin_6;//PE5/6  ¸′óÃ1|Äüêä3ö
        
        GPIO_PinAFConfig(GPIOE,GPIO_PinSource5,GPIO_AF_DCMI); //PE5,AF13  DCMI_D6
        GPIO_PinAFConfig(GPIOE,GPIO_PinSource6,GPIO_AF_DCMI); //PE6,AF13  DCMI_D7
        
  GPIO_Init(GPIOE, &GPIO_InitStructure);//3õê¼»ˉ        
        
        DCMI_DeInit();
        
        DCMI_InitStructure.DCMI_CaptureMode = DCMI_CaptureMode_Continuous;
        DCMI_InitStructure.DCMI_SynchroMode = DCMI_SynchroMode_Hardware;
        DCMI_InitStructure.DCMI_PCKPolarity = DCMI_PCKPolarity_Falling;
        DCMI_InitStructure.DCMI_VSPolarity = DCMI_VSPolarity_Low;
        DCMI_InitStructure.DCMI_HSPolarity = DCMI_HSPolarity_Low;
        DCMI_InitStructure.DCMI_CaptureRate = DCMI_CaptureRate_All_Frame;
        DCMI_InitStructure.DCMI_ExtendedDataMode = DCMI_ExtendedDataMode_8b;  
        
        DCMI_ITConfig(DCMI_IT_OVF,ENABLE);
        DCMI_ITConfig(DCMI_IT_ERR,ENABLE);
        DCMI_ITConfig(DCMI_IT_VSYNC,ENABLE);
        DCMI_ITConfig(DCMI_IT_LINE,ENABLE);
        DCMI_ITConfig(DCMI_IT_FRAME,ENABLE);//¿aÆôÖ¡ÖD¶Ï
        
        NVIC_InitStructure.NVIC_IRQChannel = DCMI_IRQn;
        NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority=0;//ÇàÕ¼óÅÏ輶1
        NVIC_InitStructure.NVIC_IRQChannelSubPriority =2;                //×óóÅÏ輶3
        NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;                        //IRQí¨μàê1Äü
        NVIC_Init(&NVIC_InitStructure);        //¸ù¾YÖ¸¶¨μÄ2Îêy3õê¼»ˉVIC¼Ä′æÆ÷¡¢
        
        DCMI_Init(&DCMI_InitStructure);
        
        DCMI_Cmd(ENABLE);        //DCMIê1Äü
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。