101 #ifdef HAL_DMA_MODULE_ENABLED 176 if ((uint32_t)(hdma->
Instance) < (uint32_t)(DMA2_Channel1))
179 hdma->
ChannelIndex = (((uint32_t)hdma->
Instance - (uint32_t)DMA1_Channel1) / ((uint32_t)DMA1_Channel2 - (uint32_t)DMA1_Channel1)) << 2U;
185 hdma->
ChannelIndex = (((uint32_t)hdma->
Instance - (uint32_t)DMA2_Channel1) / ((uint32_t)DMA2_Channel2 - (uint32_t)DMA2_Channel1)) << 2U;
196 tmp &= ((uint32_t)~(DMA_CCR_PL | DMA_CCR_MSIZE | DMA_CCR_PSIZE |
197 DMA_CCR_MINC | DMA_CCR_PINC | DMA_CCR_CIRC |
198 DMA_CCR_DIR | DMA_CCR_MEM2MEM));
201 tmp |= hdma->
Init.Direction |
202 hdma->
Init.PeriphInc | hdma->
Init.MemInc |
203 hdma->
Init.PeriphDataAlignment | hdma->
Init.MemDataAlignment |
204 hdma->
Init.Mode | hdma->
Init.Priority;
215 if(hdma->
Init.Direction == DMA_MEMORY_TO_MEMORY)
218 hdma->
Init.Request = DMA_REQUEST_MEM2MEM;
227 if(((hdma->
Init.Request > 0U) && (hdma->
Init.Request <= DMA_REQUEST_GENERATOR3)))
248 #if !defined (DMAMUX1) 251 if(hdma->
Init.Direction != DMA_MEMORY_TO_MEMORY)
257 DMA1_CSELR->CSELR &= ~(DMA_CSELR_C1S << (hdma->
ChannelIndex & 0x1cU));
260 DMA1_CSELR->CSELR |= (uint32_t) (hdma->
Init.Request << (hdma->
ChannelIndex & 0x1cU));
265 DMA2_CSELR->CSELR &= ~(DMA_CSELR_C1S << (hdma->
ChannelIndex & 0x1cU));
268 DMA2_CSELR->CSELR |= (uint32_t) (hdma->
Init.Request << (hdma->
ChannelIndex & 0x1cU));
307 __HAL_DMA_DISABLE(hdma);
310 if ((uint32_t)(hdma->
Instance) < (uint32_t)(DMA2_Channel1))
313 hdma->
ChannelIndex = (((uint32_t)hdma->
Instance - (uint32_t)DMA1_Channel1) / ((uint32_t)DMA1_Channel2 - (uint32_t)DMA1_Channel1)) << 2U;
319 hdma->
ChannelIndex = (((uint32_t)hdma->
Instance - (uint32_t)DMA2_Channel1) / ((uint32_t)DMA2_Channel2 - (uint32_t)DMA2_Channel1)) << 2U;
329 #if !defined (DMAMUX1) 335 DMA1_CSELR->CSELR &= ~(DMA_CSELR_C1S << (hdma->
ChannelIndex & 0x1cU));
340 DMA2_CSELR->CSELR &= ~(DMA_CSELR_C1S << (hdma->
ChannelIndex & 0x1cU));
360 if(((hdma->
Init.Request > 0U) && (hdma->
Init.Request <= DMA_REQUEST_GENERATOR3)))
432 HAL_StatusTypeDef status =
HAL_OK;
447 __HAL_DMA_DISABLE(hdma);
453 __HAL_DMA_ENABLE(hdma);
475 HAL_StatusTypeDef status =
HAL_OK;
490 __HAL_DMA_DISABLE(hdma);
500 __HAL_DMA_ENABLE_IT(hdma, (DMA_IT_TC | DMA_IT_HT | DMA_IT_TE));
504 __HAL_DMA_DISABLE_IT(hdma, DMA_IT_HT);
505 __HAL_DMA_ENABLE_IT(hdma, (DMA_IT_TC | DMA_IT_TE));
527 __HAL_DMA_ENABLE(hdma);
548 HAL_StatusTypeDef status =
HAL_OK;
563 __HAL_DMA_DISABLE_IT(hdma, (DMA_IT_TC | DMA_IT_HT | DMA_IT_TE));
571 __HAL_DMA_DISABLE(hdma);
610 HAL_StatusTypeDef status =
HAL_OK;
622 __HAL_DMA_DISABLE_IT(hdma, (DMA_IT_TC | DMA_IT_HT | DMA_IT_TE));
625 __HAL_DMA_DISABLE(hdma);
689 if ((hdma->
Instance->CCR & DMA_CCR_CIRC) != 0U)
691 hdma->
ErrorCode = HAL_DMA_ERROR_NOT_SUPPORTED;
731 if(Timeout != HAL_MAX_DELAY)
733 if(((
HAL_GetTick() - tickstart) > Timeout) || (Timeout == 0U))
808 uint32_t source_it = hdma->
Instance->CCR;
811 if (((flag_it & (DMA_FLAG_HT1 << (hdma->
ChannelIndex & 0x1CU))) != 0U) && ((source_it & DMA_IT_HT) != 0U))
814 if((hdma->
Instance->CCR & DMA_CCR_CIRC) == 0U)
817 __HAL_DMA_DISABLE_IT(hdma, DMA_IT_HT);
833 else if (((flag_it & (DMA_FLAG_TC1 << (hdma->
ChannelIndex & 0x1CU))) != 0U) && ((source_it & DMA_IT_TC) != 0U))
835 if((hdma->
Instance->CCR & DMA_CCR_CIRC) == 0U)
840 __HAL_DMA_DISABLE_IT(hdma, DMA_IT_TE | DMA_IT_TC);
859 else if (((flag_it & (DMA_FLAG_TE1 << (hdma->
ChannelIndex & 0x1CU))) != 0U) && ((source_it & DMA_IT_TE) != 0U))
864 __HAL_DMA_DISABLE_IT(hdma, (DMA_IT_TC | DMA_IT_HT | DMA_IT_TE));
903 HAL_StatusTypeDef status =
HAL_OK;
954 HAL_StatusTypeDef status =
HAL_OK;
1070 #if defined(DMAMUX1) 1085 hdma->
Instance->CNDTR = DataLength;
1088 if((hdma->
Init.Direction) == DMA_MEMORY_TO_PERIPH)
1107 #if defined(DMAMUX1) 1117 uint32_t channel_number;
1120 if ((uint32_t)hdma->
Instance < (uint32_t)DMA2_Channel1)
1131 channel_number = (((uint32_t)hdma->
Instance & 0xFFU) - 8U) / 20U;
1145 uint32_t request = hdma->
Init.Request & DMAMUX_CxCR_DMAREQ_ID;
1148 hdma->
DMAmuxRequestGen = (DMAMUX_RequestGen_TypeDef *)((uint32_t)(((uint32_t)DMAMUX1_RequestGenerator0) + ((request - 1U) * 4U)));
uint32_t DMAmuxChannelStatusMask
HAL_StatusTypeDef HAL_DMA_RegisterCallback(DMA_HandleTypeDef *hdma, HAL_DMA_CallbackIDTypeDef CallbackID, void(*pCallback)(DMA_HandleTypeDef *_hdma))
Register callbacks.
void(* XferAbortCallback)(struct __DMA_HandleTypeDef *hdma)
HAL_DMA_StateTypeDef
HAL DMA State structures definition.
HAL_DMA_CallbackIDTypeDef
HAL DMA Callback ID structure definition.
DMA handle Structure definition.
void(* XferCpltCallback)(struct __DMA_HandleTypeDef *hdma)
DMAMUX_RequestGenStatus_TypeDef * DMAmuxRequestGenStatus
This file contains all the functions prototypes for the HAL module driver.
DMAMUX_RequestGen_TypeDef * DMAmuxRequestGen
HAL_DMA_LevelCompleteTypeDef
HAL DMA Error Code structure definition.
uint32_t HAL_GetTick(void)
Provide a tick value in millisecond.
DMA_Channel_TypeDef * Instance
void(* XferErrorCallback)(struct __DMA_HandleTypeDef *hdma)
HAL_StatusTypeDef HAL_DMA_Abort_IT(DMA_HandleTypeDef *hdma)
Aborts the DMA Transfer in Interrupt mode.
void(* XferHalfCpltCallback)(struct __DMA_HandleTypeDef *hdma)
DMA_TypeDef * DmaBaseAddress
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.
HAL_DMA_StateTypeDef HAL_DMA_GetState(DMA_HandleTypeDef *hdma)
Return the DMA handle state.
__IO HAL_DMA_StateTypeDef State
DMAMUX_Channel_TypeDef * DMAmuxChannel
uint32_t DMAmuxRequestGenStatusMask
HAL_StatusTypeDef HAL_DMA_Abort(DMA_HandleTypeDef *hdma)
Abort the DMA Transfer.
HAL_StatusTypeDef HAL_DMA_UnRegisterCallback(DMA_HandleTypeDef *hdma, HAL_DMA_CallbackIDTypeDef CallbackID)
UnRegister callbacks.
HAL_StatusTypeDef HAL_DMA_PollForTransfer(DMA_HandleTypeDef *hdma, HAL_DMA_LevelCompleteTypeDef CompleteLevel, uint32_t Timeout)
Polling for transfer complete.
HAL_StatusTypeDef HAL_DMA_Start(DMA_HandleTypeDef *hdma, uint32_t SrcAddress, uint32_t DstAddress, uint32_t DataLength)
Start the DMA Transfer.
DMAMUX_ChannelStatus_TypeDef * DMAmuxChannelStatus
static void DMA_CalcDMAMUXRequestGenBaseAndMask(DMA_HandleTypeDef *hdma)
Updates the DMA handle with the DMAMUX request generator params.
static void DMA_SetConfig(DMA_HandleTypeDef *hdma, uint32_t SrcAddress, uint32_t DstAddress, uint32_t DataLength)
Sets the DMA Transfer parameter.
static void DMA_CalcDMAMUXChannelBaseAndMask(DMA_HandleTypeDef *hdma)
Updates the DMA handle with the DMAMUX channel and status mask depending on channel number...
HAL_StatusTypeDef HAL_DMA_Init(DMA_HandleTypeDef *hdma)
Initialize the DMA according to the specified parameters in the DMA_InitTypeDef and initialize the as...
void HAL_DMA_IRQHandler(DMA_HandleTypeDef *hdma)
Handle DMA interrupt request.
HAL_StatusTypeDef HAL_DMA_DeInit(DMA_HandleTypeDef *hdma)
DeInitialize the DMA peripheral.
assert_param(IS_RTC_WAKEUP_CLOCK(WakeUpClock))
uint32_t HAL_DMA_GetError(DMA_HandleTypeDef *hdma)
Return the DMA error code.