STM32F4的关于液晶屏的问题

2019-07-20 17:22发布

本帖最后由 未来,我来 于 2017-1-13 22:10 编辑

我把原子哥的摄像头的代码改了一下,目的是让屏幕上一半显示摄像的东西,另一半显示一些字,但是它给我的现象是这样的,file:///G:QQ alkinkg1605855400ImageC2CAFA5A21E3A402447C4A0ADE34A73CF04.jpgfile:///G:QQ alkinkg1605855400ImageC2CAFA5A21E3A402447C4A0ADE34A73CF04.jpg
void jpeg_data_process(void)
{
        //if(1)  //只有在JPEG格式下,才需要做处理.if(ov2640_mode)
       
                if(jpeg_data_ok==0)        //jpeg数据还未采集完?
                {
                        DMA2_Stream1->CR&=~(1<<0);                //停止当前传输
                        while(DMA2_Stream1->CR&0X01);        //等待DMA2_Stream1可配置   
                        jpeg_data_ok=1;                                 //标记JPEG数据采集完按成,等待其他函数处理
                }
                if(jpeg_data_ok==2)        //上一次的jpeg数据已经被处理了
                {
                    printf("地址是zffdfdf:%d ",&LCD->LCD_RAM);
                        DMA2_Stream1->CR|=1<<0;                                //重新传输
                        jpeg_data_ok=0;                                                //标记数据未采集
                }
       
}
//JPEG测试
//JPEG数据,通过串口2发送给电脑.
void jpeg_test(void)
{
        u32 i;
        u8 *p;
        u8 key;
        u8 effect=0,saturation=2,contrast=2;
        u8 size=2;                //默认是QVGA 320*240尺寸
        u8 msgbuf[15];        //消息缓存区
        LCD_Clear(WHITE);
    POINT_COLOR=RED;
        LCD_ShowString(30,50,200,16,16,"ALIENTEK STM32F4");
        LCD_ShowString(30,70,200,16,16,"OV2640 JPEG Mode");
        LCD_ShowString(30,100,200,16,16,"KEY0:Contrast");                        //对比度
        LCD_ShowString(30,120,200,16,16,"KEY1:Saturation");                 // {MOD}彩饱和度
        LCD_ShowString(30,140,200,16,16,"KEY2:Effects");                         //特效
        LCD_ShowString(30,160,200,16,16,"KEY_UP:Size");                                //分辨率设置
        sprintf((char*)msgbuf,"JPEG Size:%s",JPEG_SIZE_TBL[size]);
        LCD_ShowString(30,180,200,16,16,msgbuf);                                        //显示当前JPEG分辨率
        OV2640_RGB565_Mode();        //RGB565模式
        DCMI_Init();                        //DCMI配置
        DCMI_DMA_Init((u32)&LCD->LCD_RAM,1,1,0);//DCMI DMA配置
        OV2640_ImageWin_Set(0,0,800,600);
        OV2640_OutSize_Set(lcddev.width,lcddev.height/2);
        DCMI_Start();                 //启动传输
        while(1)
        {
                if(jpeg_data_ok==1)        //已经采集完一帧图像了
                {  
                        printf("地址是:%d ",&LCD->LCD_RAM);                 
                        jpeg_data_ok=2;        //标记jpeg数据处理完了,可以让DMA去采集下一帧了.
                }               
        }   
}



我在jpeg模式的代码里面用了RGB565模式,目的就是想在rgb565模式下用一下那个每一帧处理一次的功能,各路大神帮我看看是怎么回事
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
1条回答
天空淡云
1楼-- · 2019-07-20 22:27
我也用的RGB565分屏显示,首先应该改动摄像头显示屏的大小,在函数DCMI_Set_Window()函数里面,不能再是全屏显示,然后在剩下的地方显示别的,最后注意在写入汉字时应该先关掉DMA摄像头数据传输,等写完再重新开启DMA,不然摄像头数据会乱

一周热门 更多>