本帖最后由 未来,我来 于 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模式下用一下那个每一帧处理一次的功能,各路大神帮我看看是怎么回事
一周热门 更多>