void DVP_IRQHandler(void)
{
//**********************************************************************************
if (DVP->IFR & RB_DVP_IF_ROW_DONE)
{
/* Write 0 clear 0 */
DVP->IFR &= ~RB_DVP_IF_ROW_DONE; //clear Interrupt
#if (DVP_Work_Mode == JPEG_MODE) //#define DVP_Work_Mode JPEG_MODE
href_cnt++;
if (addr_cnt%2) //buf1 done
{
addr_cnt++;
DVP->DMA_BUF1 += OV2640_JPEG_WIDTH *4;
}
else //buf0 done
{
addr_cnt++;
DVP->DMA_BUF0 += OV2640_JPEG_WIDTH *4;
}
#endif
}
//******************************************************************************
if (DVP->IFR & RB_DVP_IF_FRM_DONE)
{
DVP->IFR &= ~RB_DVP_IF_FRM_DONE; //clear Interrupt
#if (DVP_Work_Mode == JPEG_MODE)
DVP->CR0 &= ~RB_DVP_ENABLE; //disable DVP
//Use uart2 send JPEG data.
{
UINT32 i;
UINT16 val;
href_cnt = href_cnt*OV2640_JPEG_WIDTH;
for(i=0; i
val = *(UINT16*)(0x20005000+i*2);
UART2_Send_Byte((UINT8)(val>>2));// | 0xC0);//((val>>4)|(val));
}
}
DVP->CR0 |= RB_DVP_ENABLE; //enable DVP
DVP->DMA_BUF0 = JPEG_DVPDMAaddr0; //DMA addr0
DVP->DMA_BUF1 = JPEG_DVPDMAaddr1; //DMA addr1
href_cnt = 0;
addr_cnt =0;
#endif
}
//************************************************************************************
if (DVP->IFR & RB_DVP_IF_STR_FRM)
{
DVP->IFR &= ~RB_DVP_IF_STR_FRM; //clear Interrupt
frame_cnt++;
}
if (DVP->IFR & RB_DVP_IF_STP_FRM)
{
DVP->IFR &= ~RB_DVP_IF_STP_FRM; //clear Interrupt
}
if (DVP->IFR & RB_DVP_IF_FIFO_OV)
{
DVP->IFR &= ~RB_DVP_IF_FIFO_OV; //clear Interrupt
printf("FIFO OV\r\n");
}
}
请问是否可以把每一部分的代码的功能大体解释一下,并且想咨询一下,如何修改代码实现只采集一帧图像,通过串口发出去