高级会员

- 积分
- 602
- 金钱
- 602
- 注册时间
- 2013-10-18
- 在线时间
- 59 小时
|
1金钱
//RGB565测试
//RGB数据直接显示在LCD上面
void rgb565_test(void)
{
u8 key;
u8 effect=0,contrast=2,fac;
u8 scale=1; //默认是全尺寸缩放
u8 msgbuf[15]; //消息缓存区
u16 outputheight=0;
LCD_Clear(WHITE);
POINT_COLOR=RED;
LCD_ShowString(30,50,200,16,16,"Apollo STM32H7");
LCD_ShowString(30,70,200,16,16,"OV5640 RGB565 Mode");
LCD_ShowString(30,100,200,16,16,"KEY0:Contrast"); //对比度
LCD_ShowString(30,120,200,16,16,"KEY1:Auto Focus"); //执行自动对焦
LCD_ShowString(30,140,200,16,16,"KEY2:Effects"); //特效
LCD_ShowString(30,160,200,16,16,"KEY_UP:FullSize/Scale"); //1:1尺寸(显示真实尺寸)/全尺寸缩放
//自动对焦初始化
OV5640_RGB565_Mode(); //RGB565模式
OV5640_Focus_Init();
OV5640_Light_Mode(0); //自动模式
OV5640_Color_Saturation(3);//色彩饱和度0
OV5640_Brightness(4); //亮度0
OV5640_Contrast(3); //对比度0
OV5640_Sharpness(33); //自动锐度
OV5640_Focus_Constant();//启动持续对焦
DCMI_Init(); //DCMI配置
if(lcdltdc.pwidth!=0) //RGB屏
{
dcmi_rx_callback=rgblcd_dcmi_rx_callback;//RGB屏接收数据回调函数
DCMI_DMA_Init((u32)dcmi_line_buf[0],(u32)dcmi_line_buf[1],lcddev.width/2,DMA_MDATAALIGN_HALFWORD,DMA_MINC_ENABLE);
}else //MCU 屏
{
DCMI_DMA_Init((u32)&LCD->LCD_RAM,0,1,DMA_MDATAALIGN_HALFWORD,DMA_MINC_DISABLE);
}
TIM3->CR1&=~(0x01); //关闭定时器3,关闭帧率统计,打开的话,RGB屏,在串口打印的时候,会抖
if(lcddev.height>=800)
{
yoffset=(lcddev.height-800)/2;
outputheight=800;
OV5640_WR_Reg(0x3035,0X51);//降低输出帧率,否则可能抖动
}else
{
yoffset=0;
outputheight=lcddev.height;
}
curline=yoffset; //行数复位
OV5640_OutSize_Set(4,0,lcddev.width,outputheight); //满屏缩放显示
DCMI_Start(); //启动传输
LCD_Clear(BLACK);
while(1)
{
key=KEY_Scan(0);
if(key)
{
if(key!=KEY1_PRES)DCMI_Stop(); //非KEY1按下,停止显示
switch(key)
{
case KEY0_PRES: //对比度设置
contrast++;
if(contrast>6)contrast=0;
OV5640_Contrast(contrast);
sprintf((char*)msgbuf,"Contrast:%d",(signed char)contrast-3);
break;
case KEY1_PRES: //执行一次自动对焦
OV5640_Focus_Single();
break;
case KEY2_PRES: //特效设置
effect++;
if(effect>6)effect=0;
OV5640_Special_Effects(effect);//设置特效
sprintf((char*)msgbuf,"%s",EFFECTS_TBL[effect]);
break;
case WKUP_PRES: //1:1尺寸(显示真实尺寸)/缩放
scale=!scale;
if(scale==0)
{
fac=800/outputheight; //得到比例因子
OV5640_OutSize_Set((1280-fac*lcddev.width)/2,(800-fac*outputheight)/2,lcddev.width,outputheight);
sprintf((char*)msgbuf,"Full Size 1:1");
}else
{
OV5640_OutSize_Set(4,0,lcddev.width,outputheight);
sprintf((char*)msgbuf,"Scale");
}
break;
}
if(key!=KEY1_PRES) //非KEY1按下
{
LCD_ShowString(30,50,210,16,16,msgbuf);//显示提示内容
delay_ms(800);
DCMI_Start(); //重新开始传输
}
}
delay_ms(10);
LCD_DrawRectangle(200,180, 600,300); /*加了这行代码运行会进入HardFault_Handler,不知道什么原因*/
}
}
阿波罗H7开发板摄像头实验不能调用画矩形函数
官方代码 实验38 摄像头实验 测试发现void rgb565_test(void)函数中执行 LCD_DrawRectangle会进入HardFault_Handler,不知道什么原因。求助
|
|