Lines Matching refs:hdma

107 static void DMA_SetConfig(DMA_HandleTypeDef *hdma, uint32_t SrcAddress, uint32_t DstAddress, uint32…
144 HAL_StatusTypeDef HAL_DMA_Init(DMA_HandleTypeDef *hdma) in HAL_DMA_Init() argument
149 if(hdma == NULL) in HAL_DMA_Init()
155 assert_param(IS_DMA_ALL_INSTANCE(hdma->Instance)); in HAL_DMA_Init()
156 assert_param(IS_DMA_DIRECTION(hdma->Init.Direction)); in HAL_DMA_Init()
157 assert_param(IS_DMA_PERIPHERAL_INC_STATE(hdma->Init.PeriphInc)); in HAL_DMA_Init()
158 assert_param(IS_DMA_MEMORY_INC_STATE(hdma->Init.MemInc)); in HAL_DMA_Init()
159 assert_param(IS_DMA_PERIPHERAL_DATA_SIZE(hdma->Init.PeriphDataAlignment)); in HAL_DMA_Init()
160 assert_param(IS_DMA_MEMORY_DATA_SIZE(hdma->Init.MemDataAlignment)); in HAL_DMA_Init()
161 assert_param(IS_DMA_MODE(hdma->Init.Mode)); in HAL_DMA_Init()
162 assert_param(IS_DMA_PRIORITY(hdma->Init.Priority)); in HAL_DMA_Init()
166 if ((uint32_t)(hdma->Instance) < (uint32_t)(DMA2_Channel1)) in HAL_DMA_Init()
169hdma->ChannelIndex = (((uint32_t)hdma->Instance - (uint32_t)DMA1_Channel1) / ((uint32_t)DMA1_Chann… in HAL_DMA_Init()
170 hdma->DmaBaseAddress = DMA1; in HAL_DMA_Init()
175hdma->ChannelIndex = (((uint32_t)hdma->Instance - (uint32_t)DMA2_Channel1) / ((uint32_t)DMA2_Chann… in HAL_DMA_Init()
176 hdma->DmaBaseAddress = DMA2; in HAL_DMA_Init()
181hdma->ChannelIndex = (((uint32_t)hdma->Instance - (uint32_t)DMA1_Channel1) / ((uint32_t)DMA1_Chann… in HAL_DMA_Init()
182 hdma->DmaBaseAddress = DMA1; in HAL_DMA_Init()
186 hdma->State = HAL_DMA_STATE_BUSY; in HAL_DMA_Init()
189 tmp = hdma->Instance->CCR; in HAL_DMA_Init()
197 tmp |= hdma->Init.Direction | in HAL_DMA_Init()
198 hdma->Init.PeriphInc | hdma->Init.MemInc | in HAL_DMA_Init()
199 hdma->Init.PeriphDataAlignment | hdma->Init.MemDataAlignment | in HAL_DMA_Init()
200 hdma->Init.Mode | hdma->Init.Priority; in HAL_DMA_Init()
203 hdma->Instance->CCR = tmp; in HAL_DMA_Init()
206 hdma->ErrorCode = HAL_DMA_ERROR_NONE; in HAL_DMA_Init()
209 hdma->State = HAL_DMA_STATE_READY; in HAL_DMA_Init()
212 hdma->Lock = HAL_UNLOCKED; in HAL_DMA_Init()
223 HAL_StatusTypeDef HAL_DMA_DeInit(DMA_HandleTypeDef *hdma) in HAL_DMA_DeInit() argument
227 if (NULL == hdma ) in HAL_DMA_DeInit()
233 assert_param(IS_DMA_ALL_INSTANCE(hdma->Instance)); in HAL_DMA_DeInit()
236 __HAL_DMA_DISABLE(hdma); in HAL_DMA_DeInit()
240 if ((uint32_t)(hdma->Instance) < (uint32_t)(DMA2_Channel1)) in HAL_DMA_DeInit()
243hdma->ChannelIndex = (((uint32_t)hdma->Instance - (uint32_t)DMA1_Channel1) / ((uint32_t)DMA1_Chann… in HAL_DMA_DeInit()
244 hdma->DmaBaseAddress = DMA1; in HAL_DMA_DeInit()
249hdma->ChannelIndex = (((uint32_t)hdma->Instance - (uint32_t)DMA2_Channel1) / ((uint32_t)DMA2_Chann… in HAL_DMA_DeInit()
250 hdma->DmaBaseAddress = DMA2; in HAL_DMA_DeInit()
255hdma->ChannelIndex = (((uint32_t)hdma->Instance - (uint32_t)DMA1_Channel1) / ((uint32_t)DMA1_Chann… in HAL_DMA_DeInit()
256 hdma->DmaBaseAddress = DMA1; in HAL_DMA_DeInit()
260 hdma->Instance->CCR = 0U; in HAL_DMA_DeInit()
263 hdma->DmaBaseAddress->IFCR = (DMA_ISR_GIF1 << (hdma->ChannelIndex & 0x1CU)); in HAL_DMA_DeInit()
266 hdma->XferCpltCallback = NULL; in HAL_DMA_DeInit()
267 hdma->XferHalfCpltCallback = NULL; in HAL_DMA_DeInit()
268 hdma->XferErrorCallback = NULL; in HAL_DMA_DeInit()
269 hdma->XferAbortCallback = NULL; in HAL_DMA_DeInit()
272 hdma->ErrorCode = HAL_DMA_ERROR_NONE; in HAL_DMA_DeInit()
275 hdma->State = HAL_DMA_STATE_RESET; in HAL_DMA_DeInit()
278 __HAL_UNLOCK(hdma); in HAL_DMA_DeInit()
315 HAL_StatusTypeDef HAL_DMA_Start(DMA_HandleTypeDef *hdma, uint32_t SrcAddress, uint32_t DstAddress, … in HAL_DMA_Start() argument
323 __HAL_LOCK(hdma); in HAL_DMA_Start()
325 if(HAL_DMA_STATE_READY == hdma->State) in HAL_DMA_Start()
328 hdma->State = HAL_DMA_STATE_BUSY; in HAL_DMA_Start()
329 hdma->ErrorCode = HAL_DMA_ERROR_NONE; in HAL_DMA_Start()
332 __HAL_DMA_DISABLE(hdma); in HAL_DMA_Start()
335 DMA_SetConfig(hdma, SrcAddress, DstAddress, DataLength); in HAL_DMA_Start()
338 __HAL_DMA_ENABLE(hdma); in HAL_DMA_Start()
343 __HAL_UNLOCK(hdma); in HAL_DMA_Start()
358 HAL_StatusTypeDef HAL_DMA_Start_IT(DMA_HandleTypeDef *hdma, uint32_t SrcAddress, uint32_t DstAddres… in HAL_DMA_Start_IT() argument
366 __HAL_LOCK(hdma); in HAL_DMA_Start_IT()
368 if(HAL_DMA_STATE_READY == hdma->State) in HAL_DMA_Start_IT()
371 hdma->State = HAL_DMA_STATE_BUSY; in HAL_DMA_Start_IT()
372 hdma->ErrorCode = HAL_DMA_ERROR_NONE; in HAL_DMA_Start_IT()
375 __HAL_DMA_DISABLE(hdma); in HAL_DMA_Start_IT()
378 DMA_SetConfig(hdma, SrcAddress, DstAddress, DataLength); in HAL_DMA_Start_IT()
382 if(NULL != hdma->XferHalfCpltCallback ) in HAL_DMA_Start_IT()
385 __HAL_DMA_ENABLE_IT(hdma, (DMA_IT_TC | DMA_IT_HT | DMA_IT_TE)); in HAL_DMA_Start_IT()
389 __HAL_DMA_DISABLE_IT(hdma, DMA_IT_HT); in HAL_DMA_Start_IT()
390 __HAL_DMA_ENABLE_IT(hdma, (DMA_IT_TC | DMA_IT_TE)); in HAL_DMA_Start_IT()
394 __HAL_DMA_ENABLE(hdma); in HAL_DMA_Start_IT()
399 __HAL_UNLOCK(hdma); in HAL_DMA_Start_IT()
413 HAL_StatusTypeDef HAL_DMA_Abort(DMA_HandleTypeDef *hdma) in HAL_DMA_Abort() argument
418 if(hdma->State != HAL_DMA_STATE_BUSY) in HAL_DMA_Abort()
420 hdma->ErrorCode = HAL_DMA_ERROR_NO_XFER; in HAL_DMA_Abort()
423 __HAL_UNLOCK(hdma); in HAL_DMA_Abort()
430 __HAL_DMA_DISABLE_IT(hdma, (DMA_IT_TC | DMA_IT_HT | DMA_IT_TE)); in HAL_DMA_Abort()
433 __HAL_DMA_DISABLE(hdma); in HAL_DMA_Abort()
436 hdma->DmaBaseAddress->IFCR = (DMA_ISR_GIF1 << (hdma->ChannelIndex & 0x1CU)); in HAL_DMA_Abort()
439 hdma->State = HAL_DMA_STATE_READY; in HAL_DMA_Abort()
442 __HAL_UNLOCK(hdma); in HAL_DMA_Abort()
454 HAL_StatusTypeDef HAL_DMA_Abort_IT(DMA_HandleTypeDef *hdma) in HAL_DMA_Abort_IT() argument
458 if(HAL_DMA_STATE_BUSY != hdma->State) in HAL_DMA_Abort_IT()
461 hdma->ErrorCode = HAL_DMA_ERROR_NO_XFER; in HAL_DMA_Abort_IT()
468 __HAL_DMA_DISABLE_IT(hdma, (DMA_IT_TC | DMA_IT_HT | DMA_IT_TE)); in HAL_DMA_Abort_IT()
471 __HAL_DMA_DISABLE(hdma); in HAL_DMA_Abort_IT()
474 hdma->DmaBaseAddress->IFCR = (DMA_ISR_GIF1 << (hdma->ChannelIndex & 0x1CU)); in HAL_DMA_Abort_IT()
477 hdma->State = HAL_DMA_STATE_READY; in HAL_DMA_Abort_IT()
480 __HAL_UNLOCK(hdma); in HAL_DMA_Abort_IT()
483 if(hdma->XferAbortCallback != NULL) in HAL_DMA_Abort_IT()
485 hdma->XferAbortCallback(hdma); in HAL_DMA_Abort_IT()
499 HAL_StatusTypeDef HAL_DMA_PollForTransfer(DMA_HandleTypeDef *hdma, HAL_DMA_LevelCompleteTypeDef Com… in HAL_DMA_PollForTransfer() argument
504 if(HAL_DMA_STATE_BUSY != hdma->State) in HAL_DMA_PollForTransfer()
507 hdma->ErrorCode = HAL_DMA_ERROR_NO_XFER; in HAL_DMA_PollForTransfer()
508 __HAL_UNLOCK(hdma); in HAL_DMA_PollForTransfer()
513 if ((hdma->Instance->CCR & DMA_CCR_CIRC) != 0U) in HAL_DMA_PollForTransfer()
515 hdma->ErrorCode = HAL_DMA_ERROR_NOT_SUPPORTED; in HAL_DMA_PollForTransfer()
523 temp = DMA_FLAG_TC1 << (hdma->ChannelIndex & 0x1CU); in HAL_DMA_PollForTransfer()
528 temp = DMA_FLAG_HT1 << (hdma->ChannelIndex & 0x1CU); in HAL_DMA_PollForTransfer()
534 while((hdma->DmaBaseAddress->ISR & temp) == 0U) in HAL_DMA_PollForTransfer()
536 if((hdma->DmaBaseAddress->ISR & (DMA_FLAG_TE1 << (hdma->ChannelIndex& 0x1CU))) != 0U) in HAL_DMA_PollForTransfer()
541 hdma->DmaBaseAddress->IFCR = (DMA_ISR_GIF1 << (hdma->ChannelIndex & 0x1CU)); in HAL_DMA_PollForTransfer()
544 hdma->ErrorCode = HAL_DMA_ERROR_TE; in HAL_DMA_PollForTransfer()
547 hdma->State= HAL_DMA_STATE_READY; in HAL_DMA_PollForTransfer()
550 __HAL_UNLOCK(hdma); in HAL_DMA_PollForTransfer()
560 hdma->ErrorCode = HAL_DMA_ERROR_TIMEOUT; in HAL_DMA_PollForTransfer()
563 hdma->State = HAL_DMA_STATE_READY; in HAL_DMA_PollForTransfer()
566 __HAL_UNLOCK(hdma); in HAL_DMA_PollForTransfer()
576 hdma->DmaBaseAddress->IFCR = (DMA_FLAG_TC1 << (hdma->ChannelIndex& 0x1CU)); in HAL_DMA_PollForTransfer()
580 hdma->State = HAL_DMA_STATE_READY; in HAL_DMA_PollForTransfer()
585 hdma->DmaBaseAddress->IFCR = (DMA_FLAG_HT1 << (hdma->ChannelIndex & 0x1CU)); in HAL_DMA_PollForTransfer()
589 __HAL_UNLOCK(hdma); in HAL_DMA_PollForTransfer()
600 void HAL_DMA_IRQHandler(DMA_HandleTypeDef *hdma) in HAL_DMA_IRQHandler() argument
602 uint32_t flag_it = hdma->DmaBaseAddress->ISR; in HAL_DMA_IRQHandler()
603 uint32_t source_it = hdma->Instance->CCR; in HAL_DMA_IRQHandler()
606 …if (((flag_it & (DMA_FLAG_HT1 << (hdma->ChannelIndex & 0x1CU))) != 0U) && ((source_it & DMA_IT_HT)… in HAL_DMA_IRQHandler()
609 if((hdma->Instance->CCR & DMA_CCR_CIRC) == 0U) in HAL_DMA_IRQHandler()
612 __HAL_DMA_DISABLE_IT(hdma, DMA_IT_HT); in HAL_DMA_IRQHandler()
615 hdma->DmaBaseAddress->IFCR = DMA_ISR_HTIF1 << (hdma->ChannelIndex & 0x1CU); in HAL_DMA_IRQHandler()
620 if(hdma->XferHalfCpltCallback != NULL) in HAL_DMA_IRQHandler()
623 hdma->XferHalfCpltCallback(hdma); in HAL_DMA_IRQHandler()
628 …else if (((flag_it & (DMA_FLAG_TC1 << (hdma->ChannelIndex & 0x1CU))) != 0U) && ((source_it & DMA_I… in HAL_DMA_IRQHandler()
631 if((hdma->Instance->CCR & DMA_CCR_CIRC) == 0U) in HAL_DMA_IRQHandler()
636 __HAL_DMA_DISABLE_IT(hdma, DMA_IT_TE | DMA_IT_TC); in HAL_DMA_IRQHandler()
639 hdma->State = HAL_DMA_STATE_READY; in HAL_DMA_IRQHandler()
642 hdma->DmaBaseAddress->IFCR = (DMA_ISR_TCIF1 << (hdma->ChannelIndex & 0x1CU)); in HAL_DMA_IRQHandler()
645 __HAL_UNLOCK(hdma); in HAL_DMA_IRQHandler()
647 if(hdma->XferCpltCallback != NULL) in HAL_DMA_IRQHandler()
650 hdma->XferCpltCallback(hdma); in HAL_DMA_IRQHandler()
655 …else if (((flag_it & (DMA_FLAG_TE1 << (hdma->ChannelIndex & 0x1CU))) != 0U) && ((source_it & DMA_I… in HAL_DMA_IRQHandler()
660 __HAL_DMA_DISABLE_IT(hdma, (DMA_IT_TC | DMA_IT_HT | DMA_IT_TE)); in HAL_DMA_IRQHandler()
663 hdma->DmaBaseAddress->IFCR = (DMA_ISR_GIF1 << (hdma->ChannelIndex & 0x1CU)); in HAL_DMA_IRQHandler()
666 hdma->ErrorCode = HAL_DMA_ERROR_TE; in HAL_DMA_IRQHandler()
669 hdma->State = HAL_DMA_STATE_READY; in HAL_DMA_IRQHandler()
672 __HAL_UNLOCK(hdma); in HAL_DMA_IRQHandler()
674 if (hdma->XferErrorCallback != NULL) in HAL_DMA_IRQHandler()
677 hdma->XferErrorCallback(hdma); in HAL_DMA_IRQHandler()
697 HAL_StatusTypeDef HAL_DMA_RegisterCallback(DMA_HandleTypeDef *hdma, HAL_DMA_CallbackIDTypeDef Callb… in HAL_DMA_RegisterCallback() argument
702 __HAL_LOCK(hdma); in HAL_DMA_RegisterCallback()
704 if(HAL_DMA_STATE_READY == hdma->State) in HAL_DMA_RegisterCallback()
709 hdma->XferCpltCallback = pCallback; in HAL_DMA_RegisterCallback()
713 hdma->XferHalfCpltCallback = pCallback; in HAL_DMA_RegisterCallback()
717 hdma->XferErrorCallback = pCallback; in HAL_DMA_RegisterCallback()
721 hdma->XferAbortCallback = pCallback; in HAL_DMA_RegisterCallback()
735 __HAL_UNLOCK(hdma); in HAL_DMA_RegisterCallback()
748 HAL_StatusTypeDef HAL_DMA_UnRegisterCallback(DMA_HandleTypeDef *hdma, HAL_DMA_CallbackIDTypeDef Cal… in HAL_DMA_UnRegisterCallback() argument
753 __HAL_LOCK(hdma); in HAL_DMA_UnRegisterCallback()
755 if(HAL_DMA_STATE_READY == hdma->State) in HAL_DMA_UnRegisterCallback()
760 hdma->XferCpltCallback = NULL; in HAL_DMA_UnRegisterCallback()
764 hdma->XferHalfCpltCallback = NULL; in HAL_DMA_UnRegisterCallback()
768 hdma->XferErrorCallback = NULL; in HAL_DMA_UnRegisterCallback()
772 hdma->XferAbortCallback = NULL; in HAL_DMA_UnRegisterCallback()
776 hdma->XferCpltCallback = NULL; in HAL_DMA_UnRegisterCallback()
777 hdma->XferHalfCpltCallback = NULL; in HAL_DMA_UnRegisterCallback()
778 hdma->XferErrorCallback = NULL; in HAL_DMA_UnRegisterCallback()
779 hdma->XferAbortCallback = NULL; in HAL_DMA_UnRegisterCallback()
793 __HAL_UNLOCK(hdma); in HAL_DMA_UnRegisterCallback()
826 HAL_DMA_StateTypeDef HAL_DMA_GetState(DMA_HandleTypeDef *hdma) in HAL_DMA_GetState() argument
829 return hdma->State; in HAL_DMA_GetState()
838 uint32_t HAL_DMA_GetError(DMA_HandleTypeDef *hdma) in HAL_DMA_GetError() argument
840 return hdma->ErrorCode; in HAL_DMA_GetError()
864 static void DMA_SetConfig(DMA_HandleTypeDef *hdma, uint32_t SrcAddress, uint32_t DstAddress, uint32… in DMA_SetConfig() argument
867 hdma->DmaBaseAddress->IFCR = (DMA_ISR_GIF1 << (hdma->ChannelIndex & 0x1CU)); in DMA_SetConfig()
870 hdma->Instance->CNDTR = DataLength; in DMA_SetConfig()
873 if((hdma->Init.Direction) == DMA_MEMORY_TO_PERIPH) in DMA_SetConfig()
876 hdma->Instance->CPAR = DstAddress; in DMA_SetConfig()
879 hdma->Instance->CMAR = SrcAddress; in DMA_SetConfig()
885 hdma->Instance->CPAR = SrcAddress; in DMA_SetConfig()
888 hdma->Instance->CMAR = DstAddress; in DMA_SetConfig()