135 #ifdef HAL_DCMI_MODULE_ENABLED
137 #if defined(STM32F407xx) || defined(STM32F417xx) || defined(STM32F427xx) || defined(STM32F437xx) ||\
138 defined(STM32F429xx) || defined(STM32F439xx) || defined(STM32F446xx) || defined(STM32F469xx) ||\
142 #define HAL_TIMEOUT_DCMI_STOP 14U
186 assert_param(IS_DCMI_ALL_INSTANCE(hdcmi->
Instance));
198 hdcmi->
Lock = HAL_UNLOCKED;
201 #if (USE_HAL_DCMI_REGISTER_CALLBACKS == 1)
226 hdcmi->
Instance->CR &= ~(DCMI_CR_PCKPOL | DCMI_CR_HSPOL | DCMI_CR_VSPOL | DCMI_CR_EDM_0 |
227 DCMI_CR_EDM_1 | DCMI_CR_FCRC_0 | DCMI_CR_FCRC_1 | DCMI_CR_JPEG |
237 ((uint32_t)hdcmi->
Init.
SyncroCode.LineStartCode << DCMI_POSITION_ESCR_LSC)|
238 ((uint32_t)hdcmi->
Init.
SyncroCode.LineEndCode << DCMI_POSITION_ESCR_LEC) |
239 ((uint32_t)hdcmi->
Init.
SyncroCode.FrameEndCode << DCMI_POSITION_ESCR_FEC));
243 __HAL_DCMI_ENABLE_IT(hdcmi, DCMI_IT_LINE | DCMI_IT_VSYNC | DCMI_IT_ERR | DCMI_IT_OVR);
264 #if (USE_HAL_DCMI_REGISTER_CALLBACKS == 1)
350 uint32_t SecondMemAddress = 0U;
353 assert_param(IS_DCMI_CAPTURE_MODE(DCMI_Mode));
362 __HAL_DCMI_ENABLE(hdcmi);
365 hdcmi->
Instance->CR &= ~(DCMI_CR_CM);
366 hdcmi->
Instance->CR |= (uint32_t)(DCMI_Mode);
381 if(Length <= 0xFFFFU)
408 SecondMemAddress = (uint32_t)(pData + (4U*hdcmi->
XferSize));
415 hdcmi->
Instance->CR |= DCMI_CR_CAPTURE;
432 __IO uint32_t count = SystemCoreClock / HAL_TIMEOUT_DCMI_STOP;
433 HAL_StatusTypeDef status = HAL_OK;
442 hdcmi->
Instance->CR &= ~(DCMI_CR_CAPTURE);
450 hdcmi->
ErrorCode |= HAL_DCMI_ERROR_TIMEOUT;
452 status = HAL_TIMEOUT;
456 while((hdcmi->
Instance->CR & DCMI_CR_CAPTURE) != 0U);
459 __HAL_DCMI_DISABLE(hdcmi);
485 __IO uint32_t count = SystemCoreClock / HAL_TIMEOUT_DCMI_STOP;
486 HAL_StatusTypeDef status = HAL_OK;
497 hdcmi->
Instance->CR &= ~(DCMI_CR_CAPTURE);
505 hdcmi->
ErrorCode |= HAL_DCMI_ERROR_TIMEOUT;
510 status = HAL_TIMEOUT;
514 while((hdcmi->
Instance->CR & DCMI_CR_CAPTURE) != 0);
540 hdcmi->
Instance->CR |= DCMI_CR_CAPTURE;
557 uint32_t isr_value = READ_REG(hdcmi->
Instance->MISR);
560 if((isr_value & DCMI_FLAG_ERRRI) == DCMI_FLAG_ERRRI)
563 __HAL_DCMI_CLEAR_FLAG(hdcmi, DCMI_FLAG_ERRRI);
578 if((isr_value & DCMI_FLAG_OVRRI) == DCMI_FLAG_OVRRI)
581 __HAL_DCMI_CLEAR_FLAG(hdcmi, DCMI_FLAG_OVRRI);
596 if((isr_value & DCMI_FLAG_LINERI) == DCMI_FLAG_LINERI)
599 __HAL_DCMI_CLEAR_FLAG(hdcmi, DCMI_FLAG_LINERI);
602 #if (USE_HAL_DCMI_REGISTER_CALLBACKS == 1)
610 if((isr_value & DCMI_FLAG_VSYNCRI) == DCMI_FLAG_VSYNCRI)
613 __HAL_DCMI_CLEAR_FLAG(hdcmi, DCMI_FLAG_VSYNCRI);
616 #if (USE_HAL_DCMI_REGISTER_CALLBACKS == 1)
624 if((isr_value & DCMI_FLAG_FRAMERI) == DCMI_FLAG_FRAMERI)
627 if((hdcmi->
Instance->CR & DCMI_CR_CM) == DCMI_MODE_SNAPSHOT)
630 __HAL_DCMI_DISABLE_IT(hdcmi, DCMI_IT_LINE | DCMI_IT_VSYNC | DCMI_IT_ERR | DCMI_IT_OVR);
634 __HAL_DCMI_DISABLE_IT(hdcmi, DCMI_IT_FRAME);
637 #if (USE_HAL_DCMI_REGISTER_CALLBACKS == 1)
744 assert_param(IS_DCMI_WINDOW_COORDINATE(X0));
745 assert_param(IS_DCMI_WINDOW_COORDINATE(YSize));
746 assert_param(IS_DCMI_WINDOW_COORDINATE(XSize));
747 assert_param(IS_DCMI_WINDOW_HEIGHT(Y0));
750 hdcmi->
Instance->CWSIZER = (XSize | (YSize << DCMI_POSITION_CWSIZE_VLINE));
751 hdcmi->
Instance->CWSTRTR = (X0 | (Y0 << DCMI_POSITION_CWSTRT_VST));
777 hdcmi->
Instance->CR &= ~(uint32_t)DCMI_CR_CROP;
803 hdcmi->
Instance->CR |= (uint32_t)DCMI_CR_CROP;
831 hdcmi->
Instance->ESUR = (((uint32_t)SyncUnmask->FrameStartUnmask) |\
832 ((uint32_t)SyncUnmask->LineStartUnmask << DCMI_ESUR_LSU_Pos)|\
833 ((uint32_t)SyncUnmask->LineEndUnmask << DCMI_ESUR_LEU_Pos)|\
834 ((uint32_t)SyncUnmask->FrameEndUnmask << DCMI_ESUR_FEU_Pos));
887 #if (USE_HAL_DCMI_REGISTER_CALLBACKS == 1)
898 HAL_StatusTypeDef status = HAL_OK;
900 if(pCallback == NULL)
903 hdcmi->
ErrorCode |= HAL_DCMI_ERROR_INVALID_CALLBACK;
957 hdcmi->
ErrorCode |= HAL_DCMI_ERROR_INVALID_CALLBACK;
966 hdcmi->
ErrorCode |= HAL_DCMI_ERROR_INVALID_CALLBACK;
983 HAL_StatusTypeDef status = HAL_OK;
1015 hdcmi->
ErrorCode |= HAL_DCMI_ERROR_INVALID_CALLBACK;
1035 hdcmi->
ErrorCode |= HAL_DCMI_ERROR_INVALID_CALLBACK;
1044 hdcmi->
ErrorCode |= HAL_DCMI_ERROR_INVALID_CALLBACK;
1077 if(((hdcmi->
XferCount % 2U) == 0U) && (tmp != 0U))
1108 __HAL_DCMI_ENABLE_IT(hdcmi, DCMI_IT_FRAME);
1111 if((hdcmi->
Instance->CR & DCMI_CR_CM) == DCMI_MODE_SNAPSHOT)
1135 #if (USE_HAL_DCMI_REGISTER_CALLBACKS == 1)
void HAL_DCMI_MspInit(DCMI_HandleTypeDef *hdcmi)
Initializes the DCMI MSP.
void HAL_DCMI_MspDeInit(DCMI_HandleTypeDef *hdcmi)
DeInitializes the DCMI MSP.
HAL_StatusTypeDef HAL_DCMI_DeInit(DCMI_HandleTypeDef *hdcmi)
Deinitializes the DCMI peripheral registers to their default reset values.
HAL_StatusTypeDef HAL_DCMI_Init(DCMI_HandleTypeDef *hdcmi)
Initializes the DCMI according to the specified parameters in the DCMI_InitTypeDef and create the ass...
void HAL_DCMI_IRQHandler(DCMI_HandleTypeDef *hdcmi)
Handles DCMI interrupt request.
void HAL_DCMI_LineEventCallback(DCMI_HandleTypeDef *hdcmi)
Line Event callback.
HAL_StatusTypeDef HAL_DCMI_Stop(DCMI_HandleTypeDef *hdcmi)
Disable DCMI DMA request and Disable DCMI capture.
void HAL_DCMI_VsyncEventCallback(DCMI_HandleTypeDef *hdcmi)
VSYNC Event callback.
HAL_StatusTypeDef HAL_DCMI_Start_DMA(DCMI_HandleTypeDef *hdcmi, uint32_t DCMI_Mode, uint32_t pData, uint32_t Length)
Enables DCMI DMA request and enables DCMI capture.
HAL_StatusTypeDef HAL_DCMI_Resume(DCMI_HandleTypeDef *hdcmi)
Resume DCMI capture
void HAL_DCMI_ErrorCallback(DCMI_HandleTypeDef *hdcmi)
Error DCMI callback.
void HAL_DCMI_FrameEventCallback(DCMI_HandleTypeDef *hdcmi)
Frame Event callback.
HAL_StatusTypeDef HAL_DCMI_Suspend(DCMI_HandleTypeDef *hdcmi)
Suspend DCMI capture
HAL_StatusTypeDef HAL_DCMI_EnableCrop(DCMI_HandleTypeDef *hdcmi)
Enable the Crop feature.
HAL_StatusTypeDef HAL_DCMI_ConfigCrop(DCMI_HandleTypeDef *hdcmi, uint32_t X0, uint32_t Y0, uint32_t XSize, uint32_t YSize)
Configure the DCMI CROP coordinate.
HAL_StatusTypeDef HAL_DCMI_ConfigSyncUnmask(DCMI_HandleTypeDef *hdcmi, DCMI_SyncUnmaskTypeDef *SyncUnmask)
Set embedded synchronization delimiters unmasks.
HAL_StatusTypeDef HAL_DCMI_DisableCrop(DCMI_HandleTypeDef *hdcmi)
Disable the Crop feature.
uint32_t HAL_DCMI_GetError(DCMI_HandleTypeDef *hdcmi)
Return the DCMI error code.
HAL_StatusTypeDef HAL_DCMI_RegisterCallback(DCMI_HandleTypeDef *hdcmi, HAL_DCMI_CallbackIDTypeDef CallbackID, pDCMI_CallbackTypeDef pCallback)
DCMI Callback registering.
HAL_StatusTypeDef HAL_DCMI_UnRegisterCallback(DCMI_HandleTypeDef *hdcmi, HAL_DCMI_CallbackIDTypeDef CallbackID)
DCMI Callback Unregistering.
HAL_DCMI_StateTypeDef HAL_DCMI_GetState(DCMI_HandleTypeDef *hdcmi)
Return the DCMI state.
HAL_StatusTypeDef HAL_DMAEx_ChangeMemory(DMA_HandleTypeDef *hdma, uint32_t Address, HAL_DMA_MemoryTypeDef memory)
Change the memory0 or memory1 address on the fly.
HAL_StatusTypeDef HAL_DMAEx_MultiBufferStart_IT(DMA_HandleTypeDef *hdma, uint32_t SrcAddress, uint32_t DstAddress, uint32_t SecondMemAddress, uint32_t DataLength)
Starts the multi_buffer DMA Transfer with interrupt enabled.
HAL_StatusTypeDef HAL_DMA_Abort(DMA_HandleTypeDef *hdma)
Aborts the DMA Transfer.
HAL_StatusTypeDef HAL_DMA_Abort_IT(DMA_HandleTypeDef *hdma)
Aborts the DMA Transfer in Interrupt mode.
HAL_StatusTypeDef HAL_DMA_Start_IT(DMA_HandleTypeDef *hdma, uint32_t SrcAddress, uint32_t DstAddress, uint32_t DataLength)
Start the DMA Transfer with interrupt enabled.
This file contains all the functions prototypes for the HAL module driver.
HAL_DCMI_CallbackIDTypeDef
@ HAL_DCMI_LINE_EVENT_CB_ID
@ HAL_DCMI_FRAME_EVENT_CB_ID
@ HAL_DCMI_MSPDEINIT_CB_ID
@ HAL_DCMI_VSYNC_EVENT_CB_ID
HAL_DCMI_StateTypeDef
HAL DCMI State structures definition.
@ HAL_DCMI_STATE_SUSPENDED
uint32_t ExtendedDataMode
DCMI_CodesInitTypeDef SyncroCode
DCMI handle Structure definition.
void(* VsyncEventCallback)(struct __DCMI_HandleTypeDef *hdcmi)
uint32_t XferTransferNumber
DMA_HandleTypeDef * DMA_Handle
void(* FrameEventCallback)(struct __DCMI_HandleTypeDef *hdcmi)
void(* LineEventCallback)(struct __DCMI_HandleTypeDef *hdcmi)
void(* MspInitCallback)(struct __DCMI_HandleTypeDef *hdcmi)
__IO HAL_DCMI_StateTypeDef State
void(* ErrorCallback)(struct __DCMI_HandleTypeDef *hdcmi)
void(* MspDeInitCallback)(struct __DCMI_HandleTypeDef *hdcmi)
DMA handle Structure definition.
void(* XferAbortCallback)(struct __DMA_HandleTypeDef *hdma)
void(* XferCpltCallback)(struct __DMA_HandleTypeDef *hdma)
void(* XferErrorCallback)(struct __DMA_HandleTypeDef *hdma)
DMA_Stream_TypeDef * Instance
void(* XferM1CpltCallback)(struct __DMA_HandleTypeDef *hdma)