金牌会员
- 积分
- 1361
- 威望
- 676
- 贡献
- 379
- 兑换币
- 435
- 注册时间
- 2012-12-24
- 在线时间
- 153 小时
- 毕业学校
- 没有
|
void main()
{
DisableInterrupts; //关闭中断开始初始化数据
//sccb_init(); //-----SCCB初始化,用于配置摄像头状态
UART_Init(); //-----UART初始化,用于初始化串口
gpio_int_all(); //-----外部中断初始化,用于摄像头中断触发
Image_Init(); //----图像数组初始化
//sccb_refresh();
EnableInterrupts;
while(1)
{
if( VSYN_Flag == 1) // 图像采集一帧结束
ImageProc();
EnableInterrupts;
}
}
void UART_Init()
{
UART1_init.UART_Uartx=UART5;
UART1_init.UART_BaudRate=115200;
LPLD_UART_Init(UART1_init);
}
void gpio_int_all()
{
//----初始化外部中断---//
// //HREF----PORTB23 端口外部中断初始化 ,上升沿触发中断,内部下拉
// //VSYN----PORTA27 端口外部中断初始化 ,上升沿触发中断,内部下拉
gpio_init_irq1.GPIO_PTx=PTB;
gpio_init_irq1.GPIO_Pins=GPIO_Pin23;
gpio_init_irq1.GPIO_Dir=DIR_INPUT;
gpio_init_irq1.GPIO_PinControl=INPUT_PULL_DOWN|IRQC_RI|INPUT_PF_EN;
gpio_init_irq1.GPIO_Isr=PORTB_IRQbb;
LPLD_GPIO_EnableIrq(gpio_init_irq1);
LPLD_GPIO_Init(gpio_init_irq1);
gpio_init_irq2.GPIO_PTx=PTA;
gpio_init_irq2.GPIO_Pins=GPIO_Pin27;
gpio_init_irq2.GPIO_Dir=DIR_INPUT;
gpio_init_irq2.GPIO_PinControl=INPUT_PULL_DOWN|IRQC_RI|INPUT_PF_EN;
gpio_init_irq2.GPIO_Isr=PORTA_IRQaa;
LPLD_GPIO_EnableIrq(gpio_init_irq2);
LPLD_GPIO_Init(gpio_init_irq2);
//ptc19 pclk 触发dma传输
gpio_init_irq3_dma.GPIO_PTx=PTC;
gpio_init_irq3_dma.GPIO_Pins=GPIO_Pin19;
gpio_init_irq3_dma.GPIO_Dir=DIR_INPUT;
gpio_init_irq3_dma.GPIO_PinControl=IRQC_DMARI|INPUT_PULL_DIS; //IRQC_DMAFA|INPUT_PULL_DIS;
LPLD_GPIO_EnableIrq(gpio_init_irq3_dma);
LPLD_GPIO_Init(gpio_init_irq3_dma);
gpio_init_data4.GPIO_PTx=PTD;
gpio_init_data4.GPIO_Pins=GPIO_Pin0_7;
gpio_init_data4.GPIO_Dir = DIR_INPUT;
gpio_init_data4.GPIO_PinControl = IRQC_DIS ;
LPLD_GPIO_Init(gpio_init_data4);
dma4_init.DMA_CHx = DMA_CH0;
dma4_init.DMA_Req = PORTC_DMAREQ;
dma4_init.DMA_MajorLoopCnt = 320;
dma4_init.DMA_MinorByteCnt = 1;
dma4_init.DMA_SourceAddr = (uint32)&TD->;PDIR;
dma4_init.DMA_DestAddr =(uint32)&Buffer1;
dma4_init.DMA_DestAddrOffset = 1;
dma4_init.DMA_AutoDisableReq = TRUE;
//初始化DMA
LPLD_DMA_Init(dma4_init);
}
void Image_Init()
{
uint32 i,j;
//----初始化图像数组----//
for(i=0; i<ROW; i++)
{
for(j=0;j<COL ;j++)
{
Buffer1[j] = 0;
}
}
}
void ImageProc()
{
uint32 i,j;
DisableInterrupts; //禁止中断
/*/---------图像二值化,小于阈值为BLACK,大于阈值为WHITE---------
for(i=0; i<ROW; i++)
{
for(j=0;j<COL ;j++)
{
if(Buffer1[j]<ThreadHold)
Buffer1[j]=BLACK;
else
Buffer1[j]=WHITE;
}
}
*/
LPLD_UART_PutChar(UART5 , 0xFF);
for(i=0; i<ROW; i++)
{
for(j=0;j<COL ;j++)
{
LPLD_UART_PutChar(UART5 , Buffer1[j]);
}
}
VSYN_Flag = 0;
}
void PORTA_IRQaa()
{
if(LPLD_GPIO_IsPinxExt(PORTA, GPIO_Pin27))
{
//检测到场开始信号,加载目的地址
LPLD_DMA_LoadDstAddr(DMA_CH0, Buffer1);
//清行中断标志,防止进入无效行中断
LPLD_GPIO_ClearIntFlag(PORTB);
enable_irq(PORTB_IRQn);
}
}
void PORTB_IRQbb()
{
if(LPLD_GPIO_IsPinxExt(PORTB, GPIO_Pin23))
{
//检测到行开始信号,使能DMA请求
if(rowCnt<ROW)
{
LPLD_DMA_EnableReq(DMA_CH0);
rowCnt++;
}
//行数采集已满,关闭中断
else
{
//关GPIO中断
disable_irq(PORTA_IRQn);
disable_irq(PORTB_IRQn);
VSYN_Flag = 1;
rowCnt=0;
}
}
}
。
不知道咋回事啊,,读不出图像,,而且中断只进入一次,不知道哪配置有问题,请大神给指教一下。。。。。
|
|