Lines Matching refs:hdma
103 static void DMA_SetConfig(DMA_HandleTypeDef *hdma, uint32_t SrcAddress, uint32_t DstAddress, uint32…
140 HAL_StatusTypeDef HAL_DMA_Init(DMA_HandleTypeDef *hdma) in HAL_DMA_Init() argument
145 if(hdma == NULL) in HAL_DMA_Init()
151 assert_param(IS_DMA_ALL_INSTANCE(hdma->Instance)); in HAL_DMA_Init()
152 assert_param(IS_DMA_ALL_REQUEST(hdma->Init.Request)); in HAL_DMA_Init()
153 assert_param(IS_DMA_DIRECTION(hdma->Init.Direction)); in HAL_DMA_Init()
154 assert_param(IS_DMA_PERIPHERAL_INC_STATE(hdma->Init.PeriphInc)); in HAL_DMA_Init()
155 assert_param(IS_DMA_MEMORY_INC_STATE(hdma->Init.MemInc)); in HAL_DMA_Init()
156 assert_param(IS_DMA_PERIPHERAL_DATA_SIZE(hdma->Init.PeriphDataAlignment)); in HAL_DMA_Init()
157 assert_param(IS_DMA_MEMORY_DATA_SIZE(hdma->Init.MemDataAlignment)); in HAL_DMA_Init()
158 assert_param(IS_DMA_MODE(hdma->Init.Mode)); in HAL_DMA_Init()
159 assert_param(IS_DMA_PRIORITY(hdma->Init.Priority)); in HAL_DMA_Init()
163 …hdma->ChannelIndex = (((uint32_t)hdma->Instance - (uint32_t)DMA1_Channel1) / ((uint32_t)DMA1_Chann… in HAL_DMA_Init()
164 hdma->DmaBaseAddress = DMA1; in HAL_DMA_Init()
167 hdma->State = HAL_DMA_STATE_BUSY; in HAL_DMA_Init()
170 tmp = hdma->Instance->CCR; in HAL_DMA_Init()
178 tmp |= hdma->Init.Direction | in HAL_DMA_Init()
179 hdma->Init.PeriphInc | hdma->Init.MemInc | in HAL_DMA_Init()
180 hdma->Init.PeriphDataAlignment | hdma->Init.MemDataAlignment | in HAL_DMA_Init()
181 hdma->Init.Mode | hdma->Init.Priority; in HAL_DMA_Init()
184 hdma->Instance->CCR = tmp; in HAL_DMA_Init()
187 if(hdma->Init.Direction != DMA_MEMORY_TO_MEMORY) in HAL_DMA_Init()
191 DMA1_CSELR->CSELR &= ~(DMA_CSELR_C1S << (hdma->ChannelIndex & 0x1cU)); in HAL_DMA_Init()
194 DMA1_CSELR->CSELR |= (uint32_t) (hdma->Init.Request << (hdma->ChannelIndex & 0x1cU)); in HAL_DMA_Init()
198 hdma->ErrorCode = HAL_DMA_ERROR_NONE; in HAL_DMA_Init()
201 hdma->State = HAL_DMA_STATE_READY; in HAL_DMA_Init()
204 hdma->Lock = HAL_UNLOCKED; in HAL_DMA_Init()
215 HAL_StatusTypeDef HAL_DMA_DeInit(DMA_HandleTypeDef *hdma) in HAL_DMA_DeInit() argument
219 if (NULL == hdma ) in HAL_DMA_DeInit()
225 assert_param(IS_DMA_ALL_INSTANCE(hdma->Instance)); in HAL_DMA_DeInit()
228 __HAL_DMA_DISABLE(hdma); in HAL_DMA_DeInit()
232 …hdma->ChannelIndex = (((uint32_t)hdma->Instance - (uint32_t)DMA1_Channel1) / ((uint32_t)DMA1_Chann… in HAL_DMA_DeInit()
233 hdma->DmaBaseAddress = DMA1; in HAL_DMA_DeInit()
236 hdma->Instance->CCR = 0U; in HAL_DMA_DeInit()
239 hdma->DmaBaseAddress->IFCR = (DMA_ISR_GIF1 << (hdma->ChannelIndex & 0x1cU)); in HAL_DMA_DeInit()
243 DMA1_CSELR->CSELR &= ~(DMA_CSELR_C1S << (hdma->ChannelIndex & 0x1cU)); in HAL_DMA_DeInit()
246 hdma->XferCpltCallback = NULL; in HAL_DMA_DeInit()
247 hdma->XferHalfCpltCallback = NULL; in HAL_DMA_DeInit()
248 hdma->XferErrorCallback = NULL; in HAL_DMA_DeInit()
249 hdma->XferAbortCallback = NULL; in HAL_DMA_DeInit()
252 hdma->ErrorCode = HAL_DMA_ERROR_NONE; in HAL_DMA_DeInit()
255 hdma->State = HAL_DMA_STATE_RESET; in HAL_DMA_DeInit()
258 __HAL_UNLOCK(hdma); in HAL_DMA_DeInit()
295 HAL_StatusTypeDef HAL_DMA_Start(DMA_HandleTypeDef *hdma, uint32_t SrcAddress, uint32_t DstAddress, … in HAL_DMA_Start() argument
303 __HAL_LOCK(hdma); in HAL_DMA_Start()
305 if(HAL_DMA_STATE_READY == hdma->State) in HAL_DMA_Start()
308 hdma->State = HAL_DMA_STATE_BUSY; in HAL_DMA_Start()
309 hdma->ErrorCode = HAL_DMA_ERROR_NONE; in HAL_DMA_Start()
312 __HAL_DMA_DISABLE(hdma); in HAL_DMA_Start()
315 DMA_SetConfig(hdma, SrcAddress, DstAddress, DataLength); in HAL_DMA_Start()
318 __HAL_DMA_ENABLE(hdma); in HAL_DMA_Start()
323 __HAL_UNLOCK(hdma); in HAL_DMA_Start()
338 HAL_StatusTypeDef HAL_DMA_Start_IT(DMA_HandleTypeDef *hdma, uint32_t SrcAddress, uint32_t DstAddres… in HAL_DMA_Start_IT() argument
346 __HAL_LOCK(hdma); in HAL_DMA_Start_IT()
348 if(HAL_DMA_STATE_READY == hdma->State) in HAL_DMA_Start_IT()
351 hdma->State = HAL_DMA_STATE_BUSY; in HAL_DMA_Start_IT()
352 hdma->ErrorCode = HAL_DMA_ERROR_NONE; in HAL_DMA_Start_IT()
355 __HAL_DMA_DISABLE(hdma); in HAL_DMA_Start_IT()
358 DMA_SetConfig(hdma, SrcAddress, DstAddress, DataLength); in HAL_DMA_Start_IT()
362 if(NULL != hdma->XferHalfCpltCallback ) in HAL_DMA_Start_IT()
365 __HAL_DMA_ENABLE_IT(hdma, (DMA_IT_TC | DMA_IT_HT | DMA_IT_TE)); in HAL_DMA_Start_IT()
369 __HAL_DMA_DISABLE_IT(hdma, DMA_IT_HT); in HAL_DMA_Start_IT()
370 __HAL_DMA_ENABLE_IT(hdma, (DMA_IT_TC | DMA_IT_TE)); in HAL_DMA_Start_IT()
374 __HAL_DMA_ENABLE(hdma); in HAL_DMA_Start_IT()
379 __HAL_UNLOCK(hdma); in HAL_DMA_Start_IT()
393 HAL_StatusTypeDef HAL_DMA_Abort(DMA_HandleTypeDef *hdma) in HAL_DMA_Abort() argument
398 if(hdma->State != HAL_DMA_STATE_BUSY) in HAL_DMA_Abort()
400 hdma->ErrorCode = HAL_DMA_ERROR_NO_XFER; in HAL_DMA_Abort()
403 __HAL_UNLOCK(hdma); in HAL_DMA_Abort()
410 __HAL_DMA_DISABLE_IT(hdma, (DMA_IT_TC | DMA_IT_HT | DMA_IT_TE)); in HAL_DMA_Abort()
413 __HAL_DMA_DISABLE(hdma); in HAL_DMA_Abort()
416 hdma->DmaBaseAddress->IFCR = (DMA_ISR_GIF1 << (hdma->ChannelIndex & 0x1cU)); in HAL_DMA_Abort()
419 hdma->State = HAL_DMA_STATE_READY; in HAL_DMA_Abort()
422 __HAL_UNLOCK(hdma); in HAL_DMA_Abort()
434 HAL_StatusTypeDef HAL_DMA_Abort_IT(DMA_HandleTypeDef *hdma) in HAL_DMA_Abort_IT() argument
438 if(HAL_DMA_STATE_BUSY != hdma->State) in HAL_DMA_Abort_IT()
441 hdma->ErrorCode = HAL_DMA_ERROR_NO_XFER; in HAL_DMA_Abort_IT()
448 __HAL_DMA_DISABLE_IT(hdma, (DMA_IT_TC | DMA_IT_HT | DMA_IT_TE)); in HAL_DMA_Abort_IT()
451 __HAL_DMA_DISABLE(hdma); in HAL_DMA_Abort_IT()
454 hdma->DmaBaseAddress->IFCR = (DMA_ISR_GIF1 << (hdma->ChannelIndex & 0x1cU)); in HAL_DMA_Abort_IT()
457 hdma->State = HAL_DMA_STATE_READY; in HAL_DMA_Abort_IT()
460 __HAL_UNLOCK(hdma); in HAL_DMA_Abort_IT()
463 if(hdma->XferAbortCallback != NULL) in HAL_DMA_Abort_IT()
465 hdma->XferAbortCallback(hdma); in HAL_DMA_Abort_IT()
479 HAL_StatusTypeDef HAL_DMA_PollForTransfer(DMA_HandleTypeDef *hdma, HAL_DMA_LevelCompleteTypeDef Com… in HAL_DMA_PollForTransfer() argument
484 if(HAL_DMA_STATE_BUSY != hdma->State) in HAL_DMA_PollForTransfer()
487 hdma->ErrorCode = HAL_DMA_ERROR_NO_XFER; in HAL_DMA_PollForTransfer()
488 __HAL_UNLOCK(hdma); in HAL_DMA_PollForTransfer()
493 if (0U != (hdma->Instance->CCR & DMA_CCR_CIRC)) in HAL_DMA_PollForTransfer()
495 hdma->ErrorCode = HAL_DMA_ERROR_NOT_SUPPORTED; in HAL_DMA_PollForTransfer()
503 temp = DMA_FLAG_TC1 << (hdma->ChannelIndex & 0x1cU); in HAL_DMA_PollForTransfer()
508 temp = DMA_FLAG_HT1 << (hdma->ChannelIndex & 0x1cU); in HAL_DMA_PollForTransfer()
514 while(0U == (hdma->DmaBaseAddress->ISR & temp)) in HAL_DMA_PollForTransfer()
516 if((0U != (hdma->DmaBaseAddress->ISR & (DMA_FLAG_TE1 << (hdma->ChannelIndex& 0x1cU))))) in HAL_DMA_PollForTransfer()
521 hdma->DmaBaseAddress->IFCR = (DMA_ISR_GIF1 << (hdma->ChannelIndex & 0x1cU)); in HAL_DMA_PollForTransfer()
524 hdma->ErrorCode = HAL_DMA_ERROR_TE; in HAL_DMA_PollForTransfer()
527 hdma->State= HAL_DMA_STATE_READY; in HAL_DMA_PollForTransfer()
530 __HAL_UNLOCK(hdma); in HAL_DMA_PollForTransfer()
540 hdma->ErrorCode = HAL_DMA_ERROR_TIMEOUT; in HAL_DMA_PollForTransfer()
543 hdma->State = HAL_DMA_STATE_READY; in HAL_DMA_PollForTransfer()
546 __HAL_UNLOCK(hdma); in HAL_DMA_PollForTransfer()
556 hdma->DmaBaseAddress->IFCR = (DMA_FLAG_TC1 << (hdma->ChannelIndex& 0x1cU)); in HAL_DMA_PollForTransfer()
560 hdma->State = HAL_DMA_STATE_READY; in HAL_DMA_PollForTransfer()
565 hdma->DmaBaseAddress->IFCR = (DMA_FLAG_HT1 << (hdma->ChannelIndex & 0x1cU)); in HAL_DMA_PollForTransfer()
569 __HAL_UNLOCK(hdma); in HAL_DMA_PollForTransfer()
580 void HAL_DMA_IRQHandler(DMA_HandleTypeDef *hdma) in HAL_DMA_IRQHandler() argument
582 uint32_t flag_it = hdma->DmaBaseAddress->ISR; in HAL_DMA_IRQHandler()
583 uint32_t source_it = hdma->Instance->CCR; in HAL_DMA_IRQHandler()
586 …if ((0U != (flag_it & (DMA_FLAG_HT1 << (hdma->ChannelIndex & 0x1cU)))) && (0U != (source_it & DMA_… in HAL_DMA_IRQHandler()
589 if((hdma->Instance->CCR & DMA_CCR_CIRC) == 0U) in HAL_DMA_IRQHandler()
592 __HAL_DMA_DISABLE_IT(hdma, DMA_IT_HT); in HAL_DMA_IRQHandler()
595 hdma->DmaBaseAddress->IFCR = DMA_ISR_HTIF1 << (hdma->ChannelIndex & 0x1cU); in HAL_DMA_IRQHandler()
600 if(hdma->XferHalfCpltCallback != NULL) in HAL_DMA_IRQHandler()
603 hdma->XferHalfCpltCallback(hdma); in HAL_DMA_IRQHandler()
608 …else if ((0U != (flag_it & (DMA_FLAG_TC1 << (hdma->ChannelIndex & 0x1cU)))) && (0U != (source_it &… in HAL_DMA_IRQHandler()
610 if((hdma->Instance->CCR & DMA_CCR_CIRC) == 0U) in HAL_DMA_IRQHandler()
613 __HAL_DMA_DISABLE_IT(hdma, DMA_IT_TE | DMA_IT_TC); in HAL_DMA_IRQHandler()
616 hdma->State = HAL_DMA_STATE_READY; in HAL_DMA_IRQHandler()
619 hdma->DmaBaseAddress->IFCR = (DMA_ISR_TCIF1 << (hdma->ChannelIndex & 0x1cU)); in HAL_DMA_IRQHandler()
622 __HAL_UNLOCK(hdma); in HAL_DMA_IRQHandler()
624 if(hdma->XferCpltCallback != NULL) in HAL_DMA_IRQHandler()
627 hdma->XferCpltCallback(hdma); in HAL_DMA_IRQHandler()
632 …else if ((0U != (flag_it & (DMA_FLAG_TE1 << (hdma->ChannelIndex & 0x1cU)))) && (0U != (source_it &… in HAL_DMA_IRQHandler()
637 __HAL_DMA_DISABLE_IT(hdma, (DMA_IT_TC | DMA_IT_HT | DMA_IT_TE)); in HAL_DMA_IRQHandler()
640 hdma->DmaBaseAddress->IFCR = (DMA_ISR_GIF1 << (hdma->ChannelIndex & 0x1cU)); in HAL_DMA_IRQHandler()
643 hdma->ErrorCode = HAL_DMA_ERROR_TE; in HAL_DMA_IRQHandler()
646 hdma->State = HAL_DMA_STATE_READY; in HAL_DMA_IRQHandler()
649 __HAL_UNLOCK(hdma); in HAL_DMA_IRQHandler()
651 if (hdma->XferErrorCallback != NULL) in HAL_DMA_IRQHandler()
654 hdma->XferErrorCallback(hdma); in HAL_DMA_IRQHandler()
674 HAL_StatusTypeDef HAL_DMA_RegisterCallback(DMA_HandleTypeDef *hdma, HAL_DMA_CallbackIDTypeDef Callb… in HAL_DMA_RegisterCallback() argument
679 __HAL_LOCK(hdma); in HAL_DMA_RegisterCallback()
681 if(HAL_DMA_STATE_READY == hdma->State) in HAL_DMA_RegisterCallback()
686 hdma->XferCpltCallback = pCallback; in HAL_DMA_RegisterCallback()
690 hdma->XferHalfCpltCallback = pCallback; in HAL_DMA_RegisterCallback()
694 hdma->XferErrorCallback = pCallback; in HAL_DMA_RegisterCallback()
698 hdma->XferAbortCallback = pCallback; in HAL_DMA_RegisterCallback()
712 __HAL_UNLOCK(hdma); in HAL_DMA_RegisterCallback()
725 HAL_StatusTypeDef HAL_DMA_UnRegisterCallback(DMA_HandleTypeDef *hdma, HAL_DMA_CallbackIDTypeDef Cal… in HAL_DMA_UnRegisterCallback() argument
730 __HAL_LOCK(hdma); in HAL_DMA_UnRegisterCallback()
732 if(HAL_DMA_STATE_READY == hdma->State) in HAL_DMA_UnRegisterCallback()
737 hdma->XferCpltCallback = NULL; in HAL_DMA_UnRegisterCallback()
741 hdma->XferHalfCpltCallback = NULL; in HAL_DMA_UnRegisterCallback()
745 hdma->XferErrorCallback = NULL; in HAL_DMA_UnRegisterCallback()
749 hdma->XferAbortCallback = NULL; in HAL_DMA_UnRegisterCallback()
753 hdma->XferCpltCallback = NULL; in HAL_DMA_UnRegisterCallback()
754 hdma->XferHalfCpltCallback = NULL; in HAL_DMA_UnRegisterCallback()
755 hdma->XferErrorCallback = NULL; in HAL_DMA_UnRegisterCallback()
756 hdma->XferAbortCallback = NULL; in HAL_DMA_UnRegisterCallback()
770 __HAL_UNLOCK(hdma); in HAL_DMA_UnRegisterCallback()
803 HAL_DMA_StateTypeDef HAL_DMA_GetState(DMA_HandleTypeDef *hdma) in HAL_DMA_GetState() argument
806 return hdma->State; in HAL_DMA_GetState()
815 uint32_t HAL_DMA_GetError(DMA_HandleTypeDef *hdma) in HAL_DMA_GetError() argument
817 return hdma->ErrorCode; in HAL_DMA_GetError()
841 static void DMA_SetConfig(DMA_HandleTypeDef *hdma, uint32_t SrcAddress, uint32_t DstAddress, uint32… in DMA_SetConfig() argument
844 hdma->DmaBaseAddress->IFCR = (DMA_ISR_GIF1 << (hdma->ChannelIndex & 0x1cU)); in DMA_SetConfig()
847 hdma->Instance->CNDTR = DataLength; in DMA_SetConfig()
850 if((hdma->Init.Direction) == DMA_MEMORY_TO_PERIPH) in DMA_SetConfig()
853 hdma->Instance->CPAR = DstAddress; in DMA_SetConfig()
856 hdma->Instance->CMAR = SrcAddress; in DMA_SetConfig()
862 hdma->Instance->CPAR = SrcAddress; in DMA_SetConfig()
865 hdma->Instance->CMAR = DstAddress; in DMA_SetConfig()