📄 camif.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 + -