コード例 #1
0
ファイル: app_ethernet.c プロジェクト: denisweir/STM32F40X
/**
  * @brief  This function handles DMA2 Stream1 Interrupt
  * @param  None
  * @retval None
  */
void Ethernet_IRQHandler(void)
{
  /* This DMA is used for transferring the DCMI Data */
  if(DMA_GetITStatus(DMA2_Stream1, DMA_IT_TCIF1) != RESET)
  {
    /* Mark buffer as filled */
    IPCAM_ImageBuffer.BufferStatus = BUFFER_FILLED;

    /* Clear interrupt pending bit */
    DMA_ClearITPendingBit(DMA2_Stream1, DMA_IT_TCIF1);
  }
  /* Half Transfer complete interrupt */
  else if (DMA_GetFlagStatus(DMA2_Stream1, DMA_FLAG_HTIF1) != RESET)
  {
    /* Clear the Interrupt flag */
    DMA_ClearFlag(DMA2_Stream1, DMA_FLAG_HTIF1);
  }
  /* FIFO Error interrupt */
  else if (DMA_GetFlagStatus(DMA2_Stream1, DMA_FLAG_FEIF1) != RESET)
  {
    /* Clear the Interrupt flag */
    DMA_ClearFlag(DMA2_Stream1, DMA_FLAG_FEIF1);
  }
  /* Tranfer error interrupt */
  else if (DMA_GetFlagStatus(DMA2_Stream1, DMA_FLAG_TEIF1) != RESET)
  {
    DCMI_ClearFlag(DCMI_FLAG_OVFRI);

    /* Clear interrupt pending bit */
    DMA_ClearITPendingBit(DMA2_Stream1, DMA_IT_TEIF1);

    /* Mark buffer as empty */
    IPCAM_ImageBuffer.BufferStatus = BUFFER_EMPTY;
  }
}
コード例 #2
0
ファイル: camera.cpp プロジェクト: akynos/FloatSat_Rodos_1
/**
 * Interrupt Handler for DCMI
 */
void DCMI_IRQHandler() {

	if (DCMI_GetFlagStatus(DCMI_FLAG_FRAMERI) == SET) {
		DCMI_ClearFlag(DCMI_FLAG_FRAMERI);
#ifdef CAM
		cam.ProcessData();
#endif
	} else if (DCMI_GetFlagStatus(DCMI_FLAG_OVFRI) == SET) {
		DCMI_ClearFlag(DCMI_FLAG_OVFRI);
	} else if (DCMI_GetFlagStatus(DCMI_FLAG_ERRRI) == SET) {
		DCMI_ClearFlag(DCMI_FLAG_ERRRI);
	}
	DCMI_CaptureCmd(DISABLE);
	DCMI_Cmd(DISABLE);
	DMA_Cmd(DMA2_Stream1, DISABLE);
	DCMI_Cmd(DISABLE);
	DCMI_ITConfig(DCMI_IT_FRAME, DISABLE);

	image = true;
}