最近在调试0V7670采集一帧的数据,然后通过串口发出来,在一帧数据发送到串口之前,我已经将BMP文件的文件头先发送到串口了,然后再发送一帧的图片数据,在串口助手上可以看到发过来的数据,但是保存为BMP的文件格式之后,再电脑上打开,并不能显示出。关键的代码如下 : 求原子哥帮帮忙void camera_refresh(void){
u16 i;
u32 j;
u16 color;
u16 bmpheadsize;
BITMAPINFO hbmp;
u16 *databuf;
u16 pixcnt=0;
bmpheadsize=sizeof(hbmp);
mymemset((u8*)&hbmp,0,sizeof(hbmp));
hbmp.bmiHeader.biSize=sizeof(BITMAPINFOHEADER);
hbmp.bmiHeader.biWidth=320;
hbmp.bmiHeader.biHeight=240;
hbmp.bmiHeader.biPlanes=1;
hbmp.bmiHeader.biBitCount=16;
hbmp.bmiHeader.biCompression=BI_BITFIELDS;
hbmp.bmiHeader.biSizeImage=hbmp.bmiHeader.biHeight*hbmp.bmiHeader.biWidth*hbmp.bmiHeader.biBitCount/8;//bmpêy¾YÇø′óD¡
hbmp.bmfHeader.bfType=((u16)'M'<<8)+'B';//BM¸ñê½±êÖ¾
hbmp.bmfHeader.bfSize=bmpheadsize+hbmp.bmiHeader.biSizeImage;//Õû¸öbmpμÄ′óD¡
hbmp.bmfHeader.bfOffBits=bmpheadsize;//μ½êy¾YÇøμÄÆ«òÆ
hbmp.RGB_MASK[0]=0X00F800; //oìé«ÑúÂë
hbmp.RGB_MASK[1]=0X0007E0; //Âìé«ÑúÂë
hbmp.RGB_MASK[2]=0X00001F; //à¶é«ÑúÂë
for(i=0; i<sizeof(hbmp);i++) //í¨1y′®¿ú·¢Ëí½á11ìå
{
USART_SendData(USART1,*((u8*)&hbmp+i));
while( USART_GetFlagStatus(USART1,USART_FLAG_TC)!= SET);
delay_ms(1);
}
if(ov_sta)
{
OV7670_RRST=0; //¿a꼸′λ¶áÖ¸Õë
OV7670_RCK_L;
OV7670_RCK_H;
OV7670_RCK_L;
OV7670_RRST=1; //¸′λ¶áÖ¸Õë½áêø
OV7670_RCK_H;
for(j=0;j<76800;j++)
{
OV7670_RCK_L;
color=GPIOC->IDR&0XFF; //¶áêy¾Y
OV7670_RCK_H;
color<<=8;
OV7670_RCK_L;
color|=GPIOC->IDR&0XFF; //¶áêy¾Y
OV7670_RCK_H;
USART1->DR=color;
while( USART_GetFlagStatus(USART1,USART_FLAG_TC)!= SET);
}
while(1);
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
一周热门 更多>