OpenEdv-开源电子网

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

ov7670花屏问题

[复制链接]

7

主题

18

帖子

0

精华

初级会员

Rank: 2

积分
65
金钱
65
注册时间
2015-6-2
在线时间
6 小时
发表于 2016-1-9 14:48:06 | 显示全部楼层 |阅读模式
10金钱
[mw_shl_code=c,true]///////////直接读FIFO缓存直接写进SD卡/////////////////////
void camera_refresh(void)
{
    u32 j;  u8 res;
    u16 color;   
    if(ov_sta==2)
    {
//      LCD_Scan_Dir(U2D_L2R);      //从上到下,从左到右
//      LCD_SetCursor(0x00,0x0000); //设置光标位置
//      LCD_WriteRAM_Prepare();     //开始写入GRAM  
        OV7670_RRST=0;              //开始复位读指针
        OV7670_RCK=0;
        OV7670_RCK=1;
        OV7670_RCK=0;
        OV7670_RRST=1;              //复位读指针结束
        OV7670_RCK=1;  
        for(j=0;j<76800;j++)
        {
            OV7670_RCK=0;
            color=GPIOC->IDR&0XFF;   //读数据
            OV7670_RCK=1;
            buffera[0]=(unsigned char)color;
            color<<=8;  
            OV7670_RCK=0;
            color|=GPIOC->IDR&0XFF;  //读数据
            OV7670_RCK=1;
        //  LCD->LCD_RAM=color;
            buffera[1]=(unsigned char)color;
             res=f_write(ftemp, buffera,2, &bw); //前面定义了unsigned char buffera[2];
        }
        res=f_close(ftemp);                              
        EXTI_ClearITPendingBit(EXTI_Line8);  //清除EXTI8线路挂起位
        ov_sta=0;                   //开始下一次采集
        ov_frame++;
    }
}


///////////////////////这里是BMP生成函数,被我改为在这里只写进BMP文件头了(因为没有LCD,所以读不了LCD的图片信息),然后在上面那个函数写进BMP数据区//////////
u8 bmp_encode(u8 *filename,u16 width,u16 height,u8 mode)
{               
//  FIL* f_bmp;
    u16 bmpheadsize;            //bmp头大小        
    BITMAPINFO hbmp;            //bmp头   
    u8 res=0;
    bmpheadsize=sizeof(hbmp);//得到bmp文件头的大小   
    mymemset((u8*)&hbmp,0,sizeof(hbmp));//置零空申请到的内存.        
    hbmp.bmiHeader.biSize=sizeof(BITMAPINFOHEADER);//信息头大小
    hbmp.bmiHeader.biWidth=width;       //bmp的宽度
    hbmp.bmiHeader.biHeight=height;     //bmp的高度
    hbmp.bmiHeader.biPlanes=1;          //恒为1
    hbmp.bmiHeader.biBitCount=16;       //bmp为16位色bmp
    hbmp.bmiHeader.biCompression=BI_BITFIELDS;//每个象素的比特由指定的掩码决定。
    hbmp.bmiHeader.biSizeImage=hbmp.bmiHeader.biHeight*hbmp.bmiHeader.biWidth*hbmp.bmiHeader.biBitCount/8;//bmp数据区大小
                    
    hbmp.bmfHeader.bfType=((u16)'M'<<8)+'B';//BM格式标志
    hbmp.bmfHeader.bfSize=bmpheadsize+hbmp.bmiHeader.biSizeImage;//整个bmp的大小
    hbmp.bmfHeader.bfOffBits=bmpheadsize;//到数据区的偏移

    hbmp.RGB_MASK[0]=0X00F800;          //红色掩码
    hbmp.RGB_MASK[1]=0X0007E0;          //绿色掩码
    hbmp.RGB_MASK[2]=0X00001F;          //蓝色掩码

    if(mode==1)res=f_open(ftemp,(const TCHAR*)filename,FA_READ|FA_WRITE);//尝试打开之前的文件
    if(mode==0||res==0x04)res=f_open(ftemp,(const TCHAR*)filename,FA_WRITE|FA_CREATE_NEW);//模式0,或者尝试打开失败,则创建新文件
    if(res==FR_OK)//创建成功
    {
        res=f_write(ftemp,(u8*)&hbmp,bmpheadsize,&bw);//写入BMP首部
        }
    return res;
}[/mw_shl_code]



经过单步调试,SD卡、ov7670等是初始化成功,没问题的,SD卡写进去也没问题。。。。。
各位大佬,请不吝赐教,谢谢!!!!
@正点原子
一下是现在拍到的相片!!!

正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165536
金钱
165536
注册时间
2010-12-1
在线时间
2117 小时
发表于 2016-1-10 23:22:50 | 显示全部楼层
回复

使用道具 举报

5

主题

23

帖子

0

精华

新手上路

积分
41
金钱
41
注册时间
2019-5-27
在线时间
24 小时
发表于 2019-7-12 21:26:38 | 显示全部楼层
我跟你问题一模一样,我没禁止jtag
回复

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-6-11 11:33

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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