OpenEdv-开源电子网

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

阿波罗H7开发板摄像头实验不能调用画矩形函数

[复制链接]

56

主题

167

帖子

4

精华

高级会员

Rank: 4

积分
602
金钱
602
注册时间
2013-10-18
在线时间
59 小时
发表于 2021-12-20 22:23:46 | 显示全部楼层 |阅读模式
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,不知道什么原因。求助






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

使用道具 举报

56

主题

167

帖子

4

精华

高级会员

Rank: 4

积分
602
金钱
602
注册时间
2013-10-18
在线时间
59 小时
 楼主| 发表于 2021-12-20 22:45:07 | 显示全部楼层
貌似找到问题了,超出了,xy的大小
回复

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-2-26 09:34

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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