OpenEdv-开源电子网

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

OV7725摄像头驱动

[复制链接]

2

主题

4

帖子

0

精华

新手入门

积分
11
金钱
11
注册时间
2018-9-26
在线时间
3 小时
发表于 2018-10-21 00:08:13 | 显示全部楼层 |阅读模式
1金钱
我的摄像头进不了中断,我找了很久也不知道是怎么回事,是正点原子的精英版开发板和ov7725摄像头,我不想用LCD,所以把程序改了一下,利用数组储存像素点,判断是我所需要的则储存为1,不是则储存为0。现在的问题就是,好像程序读取不了中断信息,也就是PA8口的下降沿,后面的颜色识别之类的东西都进行不了了,有大佬可以给我看一下程序吗?下面是我的扫描读取程序和中断程序 。
void camera_refresh3(void)
{
        COLOR_RGB  color_rgb;
        u16 i,j;
        u16 color;       
        unsigned char sum;       
        if(ov_sta==2)
        {
                OV7725_CS=0;         
                OV7725_RRST=0;                               
                OV7725_RCK_L;
                OV7725_RCK_H;
                OV7725_RCK_L;
                OV7725_RRST=1;                               
                OV7725_RCK_H;  
                for(i=0;i<240;i++)
                {
                        for(j=0;j<320;j++)
                        {
                                GPIOB->CRL=0X88888888;                  
                                OV7725_RCK_L;
                                color=GPIOC->IDR&0XFF;                //
                                OV7725_RCK_H;        
                                color<<=8;                                          
                                OV7725_RCK_L;
                                color|=GPIOC->IDR&0XFF;                //
                                OV7725_RCK_H;
                                GPIOB->CRL=0X33333333;
                                ex(color,&color_rgb);
                                sum++;
                                if(sum==4)
                                {
                                        if((color_rgb.Red<=255)&(color_rgb.Red>240))xs[j/4]=1;
                                        else xs[j/4]=0;
                                }
                        }
                }
                OV7725_CS=1;                                                          
                OV7725_RCK_L;
                OV7725_RCK_H;
                EXTI->PR=1<<15;                    
                ov_sta=0;                                       
        }
}



void EXTI8_Init(void)
{
               


  EXTI_InitTypeDef EXTI_InitStructure;
        NVIC_InitTypeDef NVIC_InitStructure;


        RCC_APB2PeriphClockCmd(RCC_APB2Periph_AFIO|RCC_APB2Periph_GPIOA,ENABLE);//ía2&#191;&#214;D&#182;&#207;£&#172;Dèòaê1&#196;üAFIOoíGPIOAê±&#214;ó


        GPIO_PinRemapConfig(GPIO_Remap_SWJ_JTAGDisable,ENABLE);        //1&#216;±&#213;JTAG,ê1&#196;üSWD


        OV7725_Init();
       
        NVIC_InitStructure.NVIC_IRQChannel = EXTI9_5_IRQn;                        //ê1&#196;ü°′&#188;ü&#203;ù&#212;úμ&#196;ía2&#191;&#214;D&#182;&#207;í¨μà
  NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 0;        //&#199;à&#213;&#188;ó&#197;&#207;è&#188;&#182;0
  NVIC_InitStructure.NVIC_IRQChannelSubPriority = 0;                                        //×óó&#197;&#207;è&#188;&#182;0
  NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;                                                                //ê1&#196;üía2&#191;&#214;D&#182;&#207;í¨μà
  NVIC_Init(&NVIC_InitStructure);            //&#184;ù&#190;YNVIC_InitStruct&#214;D&#214;&#184;&#182;¨μ&#196;2&#206;êy3&#245;ê&#188;&#187;ˉíaéèNVIC&#188;&#196;′&#230;&#198;÷   
       
        GPIO_EXTILineConfig(GPIO_PortSourceGPIOA,GPIO_PinSource8);


        EXTI_InitStructure.EXTI_Line=EXTI_Line8;
  EXTI_InitStructure.EXTI_Mode = EXTI_Mode_Interrupt;       
  EXTI_InitStructure.EXTI_Trigger = EXTI_Trigger_Falling;//&#207;&#194;&#189;μ&#209;&#216;′¥·¢
  EXTI_InitStructure.EXTI_LineCmd = ENABLE;
  EXTI_Init(&EXTI_InitStructure);                 //&#184;ù&#190;YEXTI_InitStruct&#214;D&#214;&#184;&#182;¨μ&#196;2&#206;êy3&#245;ê&#188;&#187;ˉíaéèEXTI&#188;&#196;′&#230;&#198;÷
          
}


void EXTI9_5_IRQHandler(void)
{                       
        if(EXTI_GetITStatus(EXTI_Line8)==SET)
        {     
                if(ov_sta<2)
                {
                        if(ov_sta==0)
                        {
                                OV7725_WRST=0;                 //&#184;′&#206;&#187;D′&#214;&#184;&#213;&#235;                                   
                                OV7725_WRST=1;       
                                OV7725_WREN=1;                //&#212;êDíD′è&#235;FIFO
                        }else OV7725_WREN=0;        //&#189;&#251;&#214;1D′è&#235;FIFO          
                        ov_sta++;
                }
        }
        EXTI_ClearITPendingBit(EXTI_Line8);    //&#199;&#229;3yLINE8é&#207;μ&#196;&#214;D&#182;&#207;±ê&#214;&#190;&#206;&#187;  
}


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

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165540
金钱
165540
注册时间
2010-12-1
在线时间
2117 小时
发表于 2018-10-22 02:47:29 | 显示全部楼层
先用有屏幕的试试效果,再来改代码
回复

使用道具 举报

2

主题

4

帖子

0

精华

新手入门

积分
11
金钱
11
注册时间
2018-9-26
在线时间
3 小时
 楼主| 发表于 2018-10-22 16:53:36 来自手机 | 显示全部楼层
正点原子 发表于 2018-10-22 02:47
先用有屏幕的试试效果,再来改代码

现在条件不支持使用LCD了,马上比赛就开始了
回复

使用道具 举报

2

主题

4

帖子

0

精华

新手入门

积分
11
金钱
11
注册时间
2018-9-26
在线时间
3 小时
 楼主| 发表于 2018-10-22 21:40:39 | 显示全部楼层
正点原子 发表于 2018-10-22 02:47
先用有屏幕的试试效果,再来改代码

我测试了一下,是PA8管脚低电平时间太短了,甚至程序都检测不到,那其他人使用的时候是怎么测试到的呢?如果调低vsync的改变频率可以吗?
回复

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-6-21 10:03

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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