野火电子论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 19601|回复: 1

移植f1颜色识别到f4但是白屏

[复制链接]
发表于 2020-8-17 17:08:14 | 显示全部楼层 |阅读模式
移植的csdn和咱们论坛的唯一的一个有颜色识别代码的贴子(板子是霸道),两个我都试了一下,发现一调用Trace函数就白屏,自己琢磨了许久还是找不出问题。  if(Trace(&Condition,&Resu))
                                {                       
                                        ILI9806G_DrawRectangle ( Resu.x-Resu.w/2, Resu.y-Resu.h/2, Resu.w, Resu.h,  0 );
                                        ILI9806G_DrawRectangle ( Resu.x-2, Resu.y-2, 4, 4,  1 );
                                }

Easytracer函数部分
int Trace(const TARGET_CONDI *Condition,RESULT *Resu)
{
        unsigned int i;
        static unsigned int x0,y0,flag=0;
        static SEARCH_AREA Area={IMG_X,IMG_X+IMG_W,IMG_Y,IMG_Y+IMG_H};
        RESULT Result;       
       

        if(flag==0)
        {
                if(SearchCentre(&x0,&y0,Condition,&Area))
                        flag=1;
                else
                {
                        Area.X_Start= IMG_X        ;
                        Area.X_End  = IMG_X+IMG_W  ;
                        Area.Y_Start= IMG_Y                ;
                        Area.Y_End  = IMG_Y+IMG_H;

                        if(SearchCentre(&x0,&y0,Condition,&Area))       
                        {
                                flag=0;
                                return 0;
                        }       
                }
        }
        Result.x = x0;
        Result.y = y0;
       
        for(i=0;i<ITERATE_NUM;i++)
                Corrode(Result.x,Result.y,Condition,&Result);
               
        if(Corrode(Result.x,Result.y,Condition,&Result))
        {
                x0=Result.x;
                y0=Result.y;
                Resu->x=Result.x;
                Resu->y=Result.y;
                Resu->w=Result.w;
                Resu->h=Result.h;
                flag=1;

                Area.X_Start= Result.x - ((Result.w)>>1);
                Area.X_End  = Result.x + ((Result.w)>>1);
                Area.Y_Start= Result.y - ((Result.h)>>1);
                Area.Y_End  = Result.y + ((Result.h)>>1);
                   return 1;
        }
        else
        {
                flag=0;
                return 0;
        }
}

主函数调用部分,我是把trace放在了主函数里的void DCMI_IRQHandler(void)里面
void DCMI_IRQHandler(void)
{

        if(  DCMI_GetITStatus (DCMI_IT_FRAME) == SET )   
        {
                /*传输完一帧,计数复位*/
                fps++; //帧率计                       
               
                  if(Trace(&Condition,&Resu))
                                {                       
                                        ILI9806G_DrawRectangle ( Resu.x-Resu.w/2, Resu.y-Resu.h/2, Resu.w, Resu.h,  0 );
                                        ILI9806G_DrawRectangle ( Resu.x-2, Resu.y-2, 4, 4,  1 );
                                }       
          ILI9806G_OpenWindow(0,0,img_width,img_height);
                OV2640_Capture_Control(ENABLE);               
                DCMI_ClearITPendingBit(DCMI_IT_FRAME);
        }
       
}

因为用的是火哥霸天虎摄像头的例程,所以液晶初始化的和摄像头初始化的顺序应该是没问题的,还有一点我觉得可能有问题得地方是
//读取RBG格式颜色,唯一需要移植的函数
extern unsigned short GUI_ReadBit16Point(unsigned short x,unsigned short y);

#define  GUI_ReadBit16Point    ILI9806G_GetPointPixel       f1的颜色识别例程里面是这样调用的,(我猜测可能是由于f1和f4的差异造成的,但是还是想不通为啥一调用就白屏)

代码超过10M上次不了,不然完全上传,希望大佬能帮我解解惑,实在想不出为啥白屏。




F407_霸天虎开发板.zip

68.7 KB, 下载次数: 8

部分函数

回复

使用道具 举报

 楼主| 发表于 2020-8-17 20:37:53 | 显示全部楼层
自己顶一下
回复 支持 反对

使用道具 举报

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

本版积分规则

联系站长|手机版|野火电子官网|野火淘宝店铺|野火电子论坛 ( 粤ICP备14069197号 ) 大学生ARM嵌入式2群

GMT+8, 2024-11-25 11:37 , Processed in 0.075879 second(s), 26 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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