Lines Matching refs:hdma
105 static void DMA_SetConfig(DMA_HandleTypeDef *hdma, uint32_t SrcAddress, uint32_t DstAddress, uint32…
142 HAL_StatusTypeDef HAL_DMA_Init(DMA_HandleTypeDef *hdma) in HAL_DMA_Init() argument
147 if(hdma == NULL) in HAL_DMA_Init()
153 assert_param(IS_DMA_ALL_INSTANCE(hdma->Instance)); in HAL_DMA_Init()
154 assert_param(IS_DMA_DIRECTION(hdma->Init.Direction)); in HAL_DMA_Init()
155 assert_param(IS_DMA_PERIPHERAL_INC_STATE(hdma->Init.PeriphInc)); in HAL_DMA_Init()
156 assert_param(IS_DMA_MEMORY_INC_STATE(hdma->Init.MemInc)); in HAL_DMA_Init()
157 assert_param(IS_DMA_PERIPHERAL_DATA_SIZE(hdma->Init.PeriphDataAlignment)); in HAL_DMA_Init()
158 assert_param(IS_DMA_MEMORY_DATA_SIZE(hdma->Init.MemDataAlignment)); in HAL_DMA_Init()
159 assert_param(IS_DMA_MODE(hdma->Init.Mode)); in HAL_DMA_Init()
160 assert_param(IS_DMA_PRIORITY(hdma->Init.Priority)); in HAL_DMA_Init()
164 if ((uint32_t)(hdma->Instance) < (uint32_t)(DMA2_Channel1)) in HAL_DMA_Init()
167 …hdma->ChannelIndex = (((uint32_t)hdma->Instance - (uint32_t)DMA1_Channel1) / ((uint32_t)DMA1_Chann… in HAL_DMA_Init()
168 hdma->DmaBaseAddress = DMA1; in HAL_DMA_Init()
173 …hdma->ChannelIndex = (((uint32_t)hdma->Instance - (uint32_t)DMA2_Channel1) / ((uint32_t)DMA2_Chann… in HAL_DMA_Init()
174 hdma->DmaBaseAddress = DMA2; in HAL_DMA_Init()
178 …hdma->ChannelIndex = (((uint32_t)hdma->Instance - (uint32_t)DMA1_Channel1) / ((uint32_t)DMA1_Chann… in HAL_DMA_Init()
179 hdma->DmaBaseAddress = DMA1; in HAL_DMA_Init()
183 hdma->State = HAL_DMA_STATE_BUSY; in HAL_DMA_Init()
186 tmp = hdma->Instance->CCR; in HAL_DMA_Init()
194 tmp |= hdma->Init.Direction | in HAL_DMA_Init()
195 hdma->Init.PeriphInc | hdma->Init.MemInc | in HAL_DMA_Init()
196 hdma->Init.PeriphDataAlignment | hdma->Init.MemDataAlignment | in HAL_DMA_Init()
197 hdma->Init.Mode | hdma->Init.Priority; in HAL_DMA_Init()
200 hdma->Instance->CCR = tmp; in HAL_DMA_Init()
203 hdma->ErrorCode = HAL_DMA_ERROR_NONE; in HAL_DMA_Init()
206 hdma->State = HAL_DMA_STATE_READY; in HAL_DMA_Init()
208 hdma->Lock = HAL_UNLOCKED; in HAL_DMA_Init()
219 HAL_StatusTypeDef HAL_DMA_DeInit(DMA_HandleTypeDef *hdma) in HAL_DMA_DeInit() argument
222 if(hdma == NULL) in HAL_DMA_DeInit()
228 assert_param(IS_DMA_ALL_INSTANCE(hdma->Instance)); in HAL_DMA_DeInit()
231 __HAL_DMA_DISABLE(hdma); in HAL_DMA_DeInit()
234 hdma->Instance->CCR = 0U; in HAL_DMA_DeInit()
237 hdma->Instance->CNDTR = 0U; in HAL_DMA_DeInit()
240 hdma->Instance->CPAR = 0U; in HAL_DMA_DeInit()
243 hdma->Instance->CMAR = 0U; in HAL_DMA_DeInit()
247 if ((uint32_t)(hdma->Instance) < (uint32_t)(DMA2_Channel1)) in HAL_DMA_DeInit()
250 …hdma->ChannelIndex = (((uint32_t)hdma->Instance - (uint32_t)DMA1_Channel1) / ((uint32_t)DMA1_Chann… in HAL_DMA_DeInit()
251 hdma->DmaBaseAddress = DMA1; in HAL_DMA_DeInit()
256 …hdma->ChannelIndex = (((uint32_t)hdma->Instance - (uint32_t)DMA2_Channel1) / ((uint32_t)DMA2_Chann… in HAL_DMA_DeInit()
257 hdma->DmaBaseAddress = DMA2; in HAL_DMA_DeInit()
261 …hdma->ChannelIndex = (((uint32_t)hdma->Instance - (uint32_t)DMA1_Channel1) / ((uint32_t)DMA1_Chann… in HAL_DMA_DeInit()
262 hdma->DmaBaseAddress = DMA1; in HAL_DMA_DeInit()
266 hdma->DmaBaseAddress->IFCR = (DMA_ISR_GIF1 << (hdma->ChannelIndex)); in HAL_DMA_DeInit()
269 hdma->XferCpltCallback = NULL; in HAL_DMA_DeInit()
270 hdma->XferHalfCpltCallback = NULL; in HAL_DMA_DeInit()
271 hdma->XferErrorCallback = NULL; in HAL_DMA_DeInit()
272 hdma->XferAbortCallback = NULL; in HAL_DMA_DeInit()
275 hdma->ErrorCode = HAL_DMA_ERROR_NONE; in HAL_DMA_DeInit()
278 hdma->State = HAL_DMA_STATE_RESET; in HAL_DMA_DeInit()
281 __HAL_UNLOCK(hdma); in HAL_DMA_DeInit()
318 HAL_StatusTypeDef HAL_DMA_Start(DMA_HandleTypeDef *hdma, uint32_t SrcAddress, uint32_t DstAddress, … in HAL_DMA_Start() argument
326 __HAL_LOCK(hdma); in HAL_DMA_Start()
328 if(HAL_DMA_STATE_READY == hdma->State) in HAL_DMA_Start()
331 hdma->State = HAL_DMA_STATE_BUSY; in HAL_DMA_Start()
332 hdma->ErrorCode = HAL_DMA_ERROR_NONE; in HAL_DMA_Start()
335 __HAL_DMA_DISABLE(hdma); in HAL_DMA_Start()
338 DMA_SetConfig(hdma, SrcAddress, DstAddress, DataLength); in HAL_DMA_Start()
341 __HAL_DMA_ENABLE(hdma); in HAL_DMA_Start()
346 __HAL_UNLOCK(hdma); in HAL_DMA_Start()
361 HAL_StatusTypeDef HAL_DMA_Start_IT(DMA_HandleTypeDef *hdma, uint32_t SrcAddress, uint32_t DstAddres… in HAL_DMA_Start_IT() argument
369 __HAL_LOCK(hdma); in HAL_DMA_Start_IT()
371 if(HAL_DMA_STATE_READY == hdma->State) in HAL_DMA_Start_IT()
374 hdma->State = HAL_DMA_STATE_BUSY; in HAL_DMA_Start_IT()
375 hdma->ErrorCode = HAL_DMA_ERROR_NONE; in HAL_DMA_Start_IT()
378 __HAL_DMA_DISABLE(hdma); in HAL_DMA_Start_IT()
381 DMA_SetConfig(hdma, SrcAddress, DstAddress, DataLength); in HAL_DMA_Start_IT()
385 if(NULL != hdma->XferHalfCpltCallback) in HAL_DMA_Start_IT()
388 __HAL_DMA_ENABLE_IT(hdma, (DMA_IT_TC | DMA_IT_HT | DMA_IT_TE)); in HAL_DMA_Start_IT()
392 __HAL_DMA_DISABLE_IT(hdma, DMA_IT_HT); in HAL_DMA_Start_IT()
393 __HAL_DMA_ENABLE_IT(hdma, (DMA_IT_TC | DMA_IT_TE)); in HAL_DMA_Start_IT()
396 __HAL_DMA_ENABLE(hdma); in HAL_DMA_Start_IT()
401 __HAL_UNLOCK(hdma); in HAL_DMA_Start_IT()
415 HAL_StatusTypeDef HAL_DMA_Abort(DMA_HandleTypeDef *hdma) in HAL_DMA_Abort() argument
419 if(hdma->State != HAL_DMA_STATE_BUSY) in HAL_DMA_Abort()
422 hdma->ErrorCode = HAL_DMA_ERROR_NO_XFER; in HAL_DMA_Abort()
425 __HAL_UNLOCK(hdma); in HAL_DMA_Abort()
433 __HAL_DMA_DISABLE_IT(hdma, (DMA_IT_TC | DMA_IT_HT | DMA_IT_TE)); in HAL_DMA_Abort()
436 __HAL_DMA_DISABLE(hdma); in HAL_DMA_Abort()
439 hdma->DmaBaseAddress->IFCR = (DMA_ISR_GIF1 << hdma->ChannelIndex); in HAL_DMA_Abort()
442 hdma->State = HAL_DMA_STATE_READY; in HAL_DMA_Abort()
445 __HAL_UNLOCK(hdma); in HAL_DMA_Abort()
456 HAL_StatusTypeDef HAL_DMA_Abort_IT(DMA_HandleTypeDef *hdma) in HAL_DMA_Abort_IT() argument
460 if(HAL_DMA_STATE_BUSY != hdma->State) in HAL_DMA_Abort_IT()
463 hdma->ErrorCode = HAL_DMA_ERROR_NO_XFER; in HAL_DMA_Abort_IT()
470 __HAL_DMA_DISABLE_IT(hdma, (DMA_IT_TC | DMA_IT_HT | DMA_IT_TE)); in HAL_DMA_Abort_IT()
473 __HAL_DMA_DISABLE(hdma); in HAL_DMA_Abort_IT()
476 __HAL_DMA_CLEAR_FLAG(hdma, __HAL_DMA_GET_GI_FLAG_INDEX(hdma)); in HAL_DMA_Abort_IT()
479 hdma->State = HAL_DMA_STATE_READY; in HAL_DMA_Abort_IT()
482 __HAL_UNLOCK(hdma); in HAL_DMA_Abort_IT()
485 if(hdma->XferAbortCallback != NULL) in HAL_DMA_Abort_IT()
487 hdma->XferAbortCallback(hdma); in HAL_DMA_Abort_IT()
501 HAL_StatusTypeDef HAL_DMA_PollForTransfer(DMA_HandleTypeDef *hdma, uint32_t CompleteLevel, uint32_t… in HAL_DMA_PollForTransfer() argument
506 if(HAL_DMA_STATE_BUSY != hdma->State) in HAL_DMA_PollForTransfer()
509 hdma->ErrorCode = HAL_DMA_ERROR_NO_XFER; in HAL_DMA_PollForTransfer()
510 __HAL_UNLOCK(hdma); in HAL_DMA_PollForTransfer()
515 if (RESET != (hdma->Instance->CCR & DMA_CCR_CIRC)) in HAL_DMA_PollForTransfer()
517 hdma->ErrorCode = HAL_DMA_ERROR_NOT_SUPPORTED; in HAL_DMA_PollForTransfer()
525 temp = __HAL_DMA_GET_TC_FLAG_INDEX(hdma); in HAL_DMA_PollForTransfer()
530 temp = __HAL_DMA_GET_HT_FLAG_INDEX(hdma); in HAL_DMA_PollForTransfer()
536 while(__HAL_DMA_GET_FLAG(hdma, temp) == RESET) in HAL_DMA_PollForTransfer()
538 if((__HAL_DMA_GET_FLAG(hdma, __HAL_DMA_GET_TE_FLAG_INDEX(hdma)) != RESET)) in HAL_DMA_PollForTransfer()
543 hdma->DmaBaseAddress->IFCR = (DMA_ISR_GIF1 << hdma->ChannelIndex); in HAL_DMA_PollForTransfer()
546 SET_BIT(hdma->ErrorCode, HAL_DMA_ERROR_TE); in HAL_DMA_PollForTransfer()
549 hdma->State= HAL_DMA_STATE_READY; in HAL_DMA_PollForTransfer()
552 __HAL_UNLOCK(hdma); in HAL_DMA_PollForTransfer()
562 SET_BIT(hdma->ErrorCode, HAL_DMA_ERROR_TIMEOUT); in HAL_DMA_PollForTransfer()
565 hdma->State = HAL_DMA_STATE_READY; in HAL_DMA_PollForTransfer()
568 __HAL_UNLOCK(hdma); in HAL_DMA_PollForTransfer()
578 __HAL_DMA_CLEAR_FLAG(hdma, __HAL_DMA_GET_TC_FLAG_INDEX(hdma)); in HAL_DMA_PollForTransfer()
582 hdma->State = HAL_DMA_STATE_READY; in HAL_DMA_PollForTransfer()
587 __HAL_DMA_CLEAR_FLAG(hdma, __HAL_DMA_GET_HT_FLAG_INDEX(hdma)); in HAL_DMA_PollForTransfer()
591 __HAL_UNLOCK(hdma); in HAL_DMA_PollForTransfer()
602 void HAL_DMA_IRQHandler(DMA_HandleTypeDef *hdma) in HAL_DMA_IRQHandler() argument
604 uint32_t flag_it = hdma->DmaBaseAddress->ISR; in HAL_DMA_IRQHandler()
605 uint32_t source_it = hdma->Instance->CCR; in HAL_DMA_IRQHandler()
608 …if (((flag_it & (DMA_FLAG_HT1 << hdma->ChannelIndex)) != RESET) && ((source_it & DMA_IT_HT) != RES… in HAL_DMA_IRQHandler()
611 if((hdma->Instance->CCR & DMA_CCR_CIRC) == 0U) in HAL_DMA_IRQHandler()
614 __HAL_DMA_DISABLE_IT(hdma, DMA_IT_HT); in HAL_DMA_IRQHandler()
617 __HAL_DMA_CLEAR_FLAG(hdma, __HAL_DMA_GET_HT_FLAG_INDEX(hdma)); in HAL_DMA_IRQHandler()
622 if(hdma->XferHalfCpltCallback != NULL) in HAL_DMA_IRQHandler()
625 hdma->XferHalfCpltCallback(hdma); in HAL_DMA_IRQHandler()
630 …else if (((flag_it & (DMA_FLAG_TC1 << hdma->ChannelIndex)) != RESET) && ((source_it & DMA_IT_TC) !… in HAL_DMA_IRQHandler()
632 if((hdma->Instance->CCR & DMA_CCR_CIRC) == 0U) in HAL_DMA_IRQHandler()
635 __HAL_DMA_DISABLE_IT(hdma, DMA_IT_TE | DMA_IT_TC); in HAL_DMA_IRQHandler()
638 hdma->State = HAL_DMA_STATE_READY; in HAL_DMA_IRQHandler()
641 __HAL_DMA_CLEAR_FLAG(hdma, __HAL_DMA_GET_TC_FLAG_INDEX(hdma)); in HAL_DMA_IRQHandler()
644 __HAL_UNLOCK(hdma); in HAL_DMA_IRQHandler()
646 if(hdma->XferCpltCallback != NULL) in HAL_DMA_IRQHandler()
649 hdma->XferCpltCallback(hdma); in HAL_DMA_IRQHandler()
654 …else if (( RESET != (flag_it & (DMA_FLAG_TE1 << hdma->ChannelIndex))) && (RESET != (source_it & DM… in HAL_DMA_IRQHandler()
659 __HAL_DMA_DISABLE_IT(hdma, (DMA_IT_TC | DMA_IT_HT | DMA_IT_TE)); in HAL_DMA_IRQHandler()
662 hdma->DmaBaseAddress->IFCR = (DMA_ISR_GIF1 << hdma->ChannelIndex); in HAL_DMA_IRQHandler()
665 hdma->ErrorCode = HAL_DMA_ERROR_TE; in HAL_DMA_IRQHandler()
668 hdma->State = HAL_DMA_STATE_READY; in HAL_DMA_IRQHandler()
671 __HAL_UNLOCK(hdma); in HAL_DMA_IRQHandler()
673 if (hdma->XferErrorCallback != NULL) in HAL_DMA_IRQHandler()
676 hdma->XferErrorCallback(hdma); in HAL_DMA_IRQHandler()
692 HAL_StatusTypeDef HAL_DMA_RegisterCallback(DMA_HandleTypeDef *hdma, HAL_DMA_CallbackIDTypeDef Callb… in HAL_DMA_RegisterCallback() argument
697 __HAL_LOCK(hdma); in HAL_DMA_RegisterCallback()
699 if(HAL_DMA_STATE_READY == hdma->State) in HAL_DMA_RegisterCallback()
704 hdma->XferCpltCallback = pCallback; in HAL_DMA_RegisterCallback()
708 hdma->XferHalfCpltCallback = pCallback; in HAL_DMA_RegisterCallback()
712 hdma->XferErrorCallback = pCallback; in HAL_DMA_RegisterCallback()
716 hdma->XferAbortCallback = pCallback; in HAL_DMA_RegisterCallback()
730 __HAL_UNLOCK(hdma); in HAL_DMA_RegisterCallback()
743 HAL_StatusTypeDef HAL_DMA_UnRegisterCallback(DMA_HandleTypeDef *hdma, HAL_DMA_CallbackIDTypeDef Cal… in HAL_DMA_UnRegisterCallback() argument
748 __HAL_LOCK(hdma); in HAL_DMA_UnRegisterCallback()
750 if(HAL_DMA_STATE_READY == hdma->State) in HAL_DMA_UnRegisterCallback()
755 hdma->XferCpltCallback = NULL; in HAL_DMA_UnRegisterCallback()
759 hdma->XferHalfCpltCallback = NULL; in HAL_DMA_UnRegisterCallback()
763 hdma->XferErrorCallback = NULL; in HAL_DMA_UnRegisterCallback()
767 hdma->XferAbortCallback = NULL; in HAL_DMA_UnRegisterCallback()
771 hdma->XferCpltCallback = NULL; in HAL_DMA_UnRegisterCallback()
772 hdma->XferHalfCpltCallback = NULL; in HAL_DMA_UnRegisterCallback()
773 hdma->XferErrorCallback = NULL; in HAL_DMA_UnRegisterCallback()
774 hdma->XferAbortCallback = NULL; in HAL_DMA_UnRegisterCallback()
788 __HAL_UNLOCK(hdma); in HAL_DMA_UnRegisterCallback()
819 HAL_DMA_StateTypeDef HAL_DMA_GetState(DMA_HandleTypeDef *hdma) in HAL_DMA_GetState() argument
822 return hdma->State; in HAL_DMA_GetState()
831 uint32_t HAL_DMA_GetError(DMA_HandleTypeDef *hdma) in HAL_DMA_GetError() argument
833 return hdma->ErrorCode; in HAL_DMA_GetError()
857 static void DMA_SetConfig(DMA_HandleTypeDef *hdma, uint32_t SrcAddress, uint32_t DstAddress, uint32… in DMA_SetConfig() argument
860 hdma->DmaBaseAddress->IFCR = (DMA_ISR_GIF1 << hdma->ChannelIndex); in DMA_SetConfig()
863 hdma->Instance->CNDTR = DataLength; in DMA_SetConfig()
866 if((hdma->Init.Direction) == DMA_MEMORY_TO_PERIPH) in DMA_SetConfig()
869 hdma->Instance->CPAR = DstAddress; in DMA_SetConfig()
872 hdma->Instance->CMAR = SrcAddress; in DMA_SetConfig()
878 hdma->Instance->CPAR = SrcAddress; in DMA_SetConfig()
881 hdma->Instance->CMAR = DstAddress; in DMA_SetConfig()