STM32F407ZGT6 + OV2640 RGB数据提取并显示到LCD上,显示出现问题,求助!!

2019-07-20 05:26发布

本帖最后由 WHS123 于 2018-10-29 21:25 编辑

例程里是直接把摄像头的数据传输到LCD的RAM,我想把摄像头的数据先提取出来放到数组rgb565_buf里,然后再显示到LCD上,图像输出设置为144*176,数据提取出来了,但显示不正确,求助啊!!!代码和图片如下:
[mw_shl_code=applescript,true]u16 rgb565_buf[176][144];//储存rgb数据的数组

//将数组中的rgb数据显示到LCD上
void rgb_display(void)
{
        u16 i,j;
        LCD_SetCursor(0,0);
        LCD_WriteRAM_Prepare();
        for(i = 0; i < 144; i++)
        {
                for(j = 0; j < 176; j++)
                {
                        if(j == 175)
                        {
                                LCD_SetCursor(0,i+1);
                                LCD_WriteRAM_Prepare();
                        }
                        LCD_SetCursor(i,j);
                        LCD_WriteRAM_Prepare();
                        LCD->LCD_RAM = rgb565_buf[j];
                }
        }
}


//主函数
int main(void)
{
        u8 key;
        NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);//设置系统中断优先级分组2
        delay_init(168);  //初始化延时函数
        uart_init(115200);                //初始化串口波特率为115200
        usart2_init(42,115200);                //初始化串口2波特率为115200
        LED_Init();                                        //初始化LED
        LCD_Init();                                        //LCD初始化  
        KEY_Init();                                        //按键初始化
        TIM3_Int_Init(10000-1,8400-1);//10Khz计数,1秒钟中断一次
       
       
        usmart_dev.init(84);                //初始化USMART
        POINT_COLOR=RED;//设置字体为红 {MOD}
        LCD_ShowString(30,50,200,16,16,"Explorer STM32F4");       
        LCD_ShowString(30,70,200,16,16,"OV2640 TEST");       
        LCD_ShowString(30,90,200,16,16,"ATOM@ALIENTEK");
        LCD_ShowString(30,110,200,16,16,"2014/5/14");           
        while(OV2640_Init())//初始化OV2640
        {
                LCD_ShowString(30,130,240,16,16,"OV2640 ERR");
                delay_ms(200);
            LCD_Fill(30,130,239,170,WHITE);
                delay_ms(200);
        }
        LCD_ShowString(30,130,200,16,16,"OV2640 OK");

        OV2640_OutSize_Set(176,144);
        OV2640_RGB565_Mode();
        My_DCMI_Init();                        //DCMI配置
        DCMI_DMA_Init((u32)rgb565_buf, sizeof(rgb565_buf), DMA_MemoryDataSize_HalfWord, DMA_MemoryInc_Enable);//DCMI DMA配置
        DCMI_Start();
        while(1)
        {
        }
}


//中断函数
//DCMI中断服务函数
void DCMI_IRQHandler(void)
{
        if(DCMI_GetITStatus(DCMI_IT_FRAME)==SET)//捕获到一帧图像
        {
                DCMI_Stop();
               
                DCMI_ClearITPendingBit(DCMI_IT_FRAME);//清除帧中断
                rgb_display();
                LED1=!LED1;
                ov_frame++;
                DCMI_Start();
        }
}[/mw_shl_code]


IMG_20181029_212120.jpg
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。