本帖最后由 秋丞 于 2019-4-22 10:09 编辑
u8 ov2640_jpg_photo(void)
{
u8* pbuf;
u32 i=0;
u32 jpeglen=0;
OV2640_JPEG_Mode();
OV2640_ImageWin_Set(0,0,256,832);
OV2640_OutSize_Set(64,208);
SCCB_WR_Reg(0XFF,0X00);
SCCB_WR_Reg(0XD3,30);
SCCB_WR_Reg(0XFF,0X01);
SCCB_WR_Reg(0X11,0X1);
for(i=0;i<10;i++) //丢弃10帧,等待OV2640自动调节好(曝光白平衡之类的)
{
while(OV2640_VSYNC==1);
while(OV2640_VSYNC==0);
}
while(OV2640_VSYNC==1) //开始采集jpeg数据
{
while(OV2640_HREF)
{
while(OV2640_PCLK==0);
ov2640_framebuf[jpeglen]=OV2640_DATA;
while(OV2640_PCLK==1);
jpeglen++;
}
}
{
pbuf=(u8*)ov2640_framebuf;
jpelen=jpeglen;
}
for(i=0;i<jpeglen;i++)
{
USART_SendData(USART1,pbuf);
delay_ms(2);
//x++;
}
}
我照着原子的程序改了一下(因为要配合我弄的毕设)可是这样,数据平均少了300个字节正常应该是2048,请问我这里改的应该没错吧。少的字节是每隔几个就少一个有一定的规律。
而且每当我减少几个变量的时候会好一点,一开始是1000字节来着,这我已经改过好几次了,就是无法达到原子的稳定性。
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
ov2640_framebuf=mymalloc(SRAMIN,10*1024);//申请帧缓存
while(!ov2640_framebuf) //内存分配出错
{
//LCD_ShowString(30,150,240,16,"内存分配失败!",16);
delay_ms(200);
//LCD_Fill(30,150,240,146,WHITE);//清除显示
delay_ms(200);
}
谢谢哈,有所帮助。
一周热门 更多>