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");
? ? }
}
請問是否可以把每一部分的代碼的功能大體解釋一下,并且想咨詢一下,如何修改代碼實(shí)現(xiàn)只采集一幀圖像,通過串口發(fā)出去