OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 5936|回复: 3

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

[复制链接]

2

主题

4

帖子

0

精华

初级会员

Rank: 2

积分
75
金钱
75
注册时间
2018-4-21
在线时间
15 小时
发表于 2018-10-29 21:25:22 | 显示全部楼层 |阅读模式
5金钱
本帖最后由 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;//设置字体为红色
        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

最佳答案

查看完整内容[请看2#楼]

搞定了,不知道为什么用二维数组存放DMA传回的而数据显示出来是乱的,用一维数组存放就没有问题
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

2

主题

4

帖子

0

精华

初级会员

Rank: 2

积分
75
金钱
75
注册时间
2018-4-21
在线时间
15 小时
 楼主| 发表于 2018-10-29 21:25:23 | 显示全部楼层
搞定了,不知道为什么用二维数组存放DMA传回的而数据显示出来是乱的,用一维数组存放就没有问题
回复

使用道具 举报

12

主题

19

帖子

0

精华

新手入门

积分
9
金钱
9
注册时间
2018-10-23
在线时间
5 小时
发表于 2018-10-29 21:29:22 | 显示全部楼层
不好意思,我也不知道。
回复

使用道具 举报

13

主题

79

帖子

0

精华

初级会员

Rank: 2

积分
83
金钱
83
注册时间
2015-9-22
在线时间
76 小时
发表于 2022-1-14 09:57:34 | 显示全部楼层
求代码我现在无法正常显示不知道问题在哪里
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-2-26 06:00

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表