⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 camif.c

📁 用SMART2200低成本的实现OV9650摄像头驱动
💻 C
字号:
#include "config.h"
#include "LPC2294.h"
unsigned int CountHsync,CountPlck;
unsigned char Frame_Flag;

/*********************************************************************************************************
** 函数名称: 
** 功能描述: 
** 输 入: 
**
** 输 出:
** 全局变量:
** 调用模块:
********************************************************************************************************/
void CamPortSet(void)
{
//port set
 PINSEL0 = (PINSEL0&0xCFFF3FFF) | (3<<14)| (2<<28);    /* 选择管脚p0.20,7,14为EINT3,EINT2,EINT1 */
 PINSEL1 = (PINSEL1&0xFFFFFCFF) | (3<<8);
 EXTMODE = (EXTMODE & 0x01) | 0x0E;					// 设置EINT3中断为边沿触发方式,EINT1,2中断为电平触发方式
 EXTPOLAR= (EXTPOLAR& 0x01) | 0x06;                    // 设置EINT3中断为下降沿有效,设置EINT1,2中断为高电平有效 
//IIC
}
/*********************************************************************************************************
** 函数名称: 
** 功能描述: 
** 输 入: 
**
** 输 出:
** 全局变量:
** 调用模块:
********************************************************************************************************/
 void Vsync_Exception(void)
{
 OS_ENTER_CRITICAL();
 EXTINT = 1<<1;		                  // 清除EINT0中断标志 
 OSMboxPost(CamMbox, (void *)CAM_FRAME_END);
 /* if(Frame_Flag==0)
  {
   CountHsync=0;
   Frame_Flag=0x01;
   VICIntEnable = (1<<15);	         // 使EINT1中断 
  }
else
  {
   Frame_Flag=0x02;                  //1帧已经完成,主程序处理
   
   OSMboxPost(CamMbox, (void *)CAM_FRAME_END);
   
   VICIntEnClr=(1<<15) | (1<<16);    // 禁止EINT1,2中断
  }*/
   
 VICVectAddr = 0;                    /* 通知中断控制器中断结束 */
 OS_EXIT_CRITICAL();
}
/*********************************************************************************************************
** 函数名称: 
** 功能描述: 
** 输 入: 
**
** 输 出:
** 全局变量:
** 调用模块:
********************************************************************************************************/
 void Hsync_Exception(void)
{
 OS_ENTER_CRITICAL();
 EXTINT = 1<<2;		                 // 清除EINT1中断标志 
/* if(!(HsyncIN&IO0PIN)==0) 
  {
   CountHsync++;
   if(CountHsync>240)
   {
   CountHsync=0;
   Frame_Flag=0x02;                  //1帧已经完成,主程序处理
   OSMboxPost(CamMbox, (void *)CAM_FRAME_END);
   } 
   CountPlck=0;
   VICIntEnable = (1<<16);	         // 使EINT2中断 
  }*/
 
 VICVectAddr = 0;                    /* 通知中断控制器中断结束 */
 OS_EXIT_CRITICAL();
}
/*********************************************************************************************************
** 函数名称: 
** 功能描述: 
** 输 入: 
**
** 输 出:
** 全局变量:
** 调用模块:
********************************************************************************************************/
 void Pclk_Exception(void)
{ 

 static unsigned int i,j,k;
 OS_ENTER_CRITICAL();

 EXTINT = 1<<3;		                 // 清除EINT2中断标志 
// if(!(HsyncIN&IO0PIN)==0) 
// {
 // if((CountPlck-1)/4==0){ (Cam_outV[i++])=OV9650_DR&IO2PIN;}
 // if((CountPlck+1)/4==0){ (Cam_outU[j++])=OV9650_DR&IO2PIN;}
 // if(CountPlck/2==0){ (Cam_outY[k++])=OV9650_DR&IO2PIN;}
  
 // CountPlck++;
 // if(CountPlck>320){CountPlck=0;}  
 
// } 
// else
// {
// i=0;
// j=0;
// k=0;
// }
 VICVectAddr = 0;                    /* 通知中断控制器中断结束 */
 OS_EXIT_CRITICAL();
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -