Lines Matching refs:hdma

99 static void DMA_SetConfig(DMA_HandleTypeDef *hdma, uint32_t SrcAddress, uint32_t DstAddress, uint32…
100 static void DMA_CalcBaseAndBitshift(DMA_HandleTypeDef *hdma);
137 HAL_StatusTypeDef HAL_DMA_Init(DMA_HandleTypeDef *hdma) in HAL_DMA_Init() argument
142 if (NULL == hdma) in HAL_DMA_Init()
148 assert_param(IS_DMA_ALL_INSTANCE(hdma->Instance)); in HAL_DMA_Init()
149 assert_param(IS_DMA_DIRECTION(hdma->Init.Direction)); in HAL_DMA_Init()
150 assert_param(IS_DMA_PERIPHERAL_INC_STATE(hdma->Init.PeriphInc)); in HAL_DMA_Init()
151 assert_param(IS_DMA_MEMORY_INC_STATE(hdma->Init.MemInc)); in HAL_DMA_Init()
152 assert_param(IS_DMA_PERIPHERAL_DATA_SIZE(hdma->Init.PeriphDataAlignment)); in HAL_DMA_Init()
153 assert_param(IS_DMA_MEMORY_DATA_SIZE(hdma->Init.MemDataAlignment)); in HAL_DMA_Init()
154 assert_param(IS_DMA_MODE(hdma->Init.Mode)); in HAL_DMA_Init()
155 assert_param(IS_DMA_PRIORITY(hdma->Init.Priority)); in HAL_DMA_Init()
158 hdma->State = HAL_DMA_STATE_BUSY; in HAL_DMA_Init()
161 tmp = hdma->Instance->CCR; in HAL_DMA_Init()
169 tmp |= hdma->Init.Direction | in HAL_DMA_Init()
170 hdma->Init.PeriphInc | hdma->Init.MemInc | in HAL_DMA_Init()
171 hdma->Init.PeriphDataAlignment | hdma->Init.MemDataAlignment | in HAL_DMA_Init()
172 hdma->Init.Mode | hdma->Init.Priority; in HAL_DMA_Init()
175 hdma->Instance->CCR = tmp; in HAL_DMA_Init()
179 DMA_CalcBaseAndBitshift(hdma); in HAL_DMA_Init()
182 hdma->ErrorCode = HAL_DMA_ERROR_NONE; in HAL_DMA_Init()
185 hdma->State = HAL_DMA_STATE_READY; in HAL_DMA_Init()
188 hdma->Lock = HAL_UNLOCKED; in HAL_DMA_Init()
199 HAL_StatusTypeDef HAL_DMA_DeInit(DMA_HandleTypeDef *hdma) in HAL_DMA_DeInit() argument
202 if (NULL == hdma) in HAL_DMA_DeInit()
208 assert_param(IS_DMA_ALL_INSTANCE(hdma->Instance)); in HAL_DMA_DeInit()
211 hdma->Instance->CCR &= ~DMA_CCR_EN; in HAL_DMA_DeInit()
214 hdma->Instance->CCR = 0U; in HAL_DMA_DeInit()
217 hdma->Instance->CNDTR = 0U; in HAL_DMA_DeInit()
220 hdma->Instance->CPAR = 0U; in HAL_DMA_DeInit()
223 hdma->Instance->CMAR = 0U; in HAL_DMA_DeInit()
226 DMA_CalcBaseAndBitshift(hdma); in HAL_DMA_DeInit()
229 hdma->DmaBaseAddress->IFCR = DMA_FLAG_GL1 << hdma->ChannelIndex; in HAL_DMA_DeInit()
232 hdma->XferCpltCallback = NULL; in HAL_DMA_DeInit()
233 hdma->XferHalfCpltCallback = NULL; in HAL_DMA_DeInit()
234 hdma->XferErrorCallback = NULL; in HAL_DMA_DeInit()
235 hdma->XferAbortCallback = NULL; in HAL_DMA_DeInit()
238 hdma->ErrorCode = HAL_DMA_ERROR_NONE; in HAL_DMA_DeInit()
241 hdma->State = HAL_DMA_STATE_RESET; in HAL_DMA_DeInit()
244 __HAL_UNLOCK(hdma); in HAL_DMA_DeInit()
281 HAL_StatusTypeDef HAL_DMA_Start(DMA_HandleTypeDef *hdma, uint32_t SrcAddress, uint32_t DstAddress, … in HAL_DMA_Start() argument
289 __HAL_LOCK(hdma); in HAL_DMA_Start()
291 if (HAL_DMA_STATE_READY == hdma->State) in HAL_DMA_Start()
294 hdma->State = HAL_DMA_STATE_BUSY; in HAL_DMA_Start()
296 hdma->ErrorCode = HAL_DMA_ERROR_NONE; in HAL_DMA_Start()
299 hdma->Instance->CCR &= ~DMA_CCR_EN; in HAL_DMA_Start()
302 DMA_SetConfig(hdma, SrcAddress, DstAddress, DataLength); in HAL_DMA_Start()
305 hdma->Instance->CCR |= DMA_CCR_EN; in HAL_DMA_Start()
310 __HAL_UNLOCK(hdma); in HAL_DMA_Start()
328 HAL_StatusTypeDef HAL_DMA_Start_IT(DMA_HandleTypeDef *hdma, uint32_t SrcAddress, uint32_t DstAddres… in HAL_DMA_Start_IT() argument
336 __HAL_LOCK(hdma); in HAL_DMA_Start_IT()
338 if (HAL_DMA_STATE_READY == hdma->State) in HAL_DMA_Start_IT()
341 hdma->State = HAL_DMA_STATE_BUSY; in HAL_DMA_Start_IT()
343 hdma->ErrorCode = HAL_DMA_ERROR_NONE; in HAL_DMA_Start_IT()
346 hdma->Instance->CCR &= ~DMA_CCR_EN; in HAL_DMA_Start_IT()
349 DMA_SetConfig(hdma, SrcAddress, DstAddress, DataLength); in HAL_DMA_Start_IT()
353 if (NULL != hdma->XferHalfCpltCallback) in HAL_DMA_Start_IT()
355 hdma->Instance->CCR |= (DMA_IT_TC | DMA_IT_HT | DMA_IT_TE); in HAL_DMA_Start_IT()
359 hdma->Instance->CCR |= (DMA_IT_TC | DMA_IT_TE); in HAL_DMA_Start_IT()
360 hdma->Instance->CCR &= ~DMA_IT_HT; in HAL_DMA_Start_IT()
364 hdma->Instance->CCR |= DMA_CCR_EN; in HAL_DMA_Start_IT()
369 __HAL_UNLOCK(hdma); in HAL_DMA_Start_IT()
384 HAL_StatusTypeDef HAL_DMA_Abort(DMA_HandleTypeDef *hdma) in HAL_DMA_Abort() argument
386 if (hdma->State != HAL_DMA_STATE_BUSY) in HAL_DMA_Abort()
389 hdma->ErrorCode = HAL_DMA_ERROR_NO_XFER; in HAL_DMA_Abort()
392 __HAL_UNLOCK(hdma); in HAL_DMA_Abort()
399 hdma->Instance->CCR &= ~(DMA_IT_TC | DMA_IT_HT | DMA_IT_TE); in HAL_DMA_Abort()
402 hdma->Instance->CCR &= ~DMA_CCR_EN; in HAL_DMA_Abort()
405 hdma->DmaBaseAddress->IFCR = (DMA_FLAG_GL1 << hdma->ChannelIndex); in HAL_DMA_Abort()
408 hdma->State = HAL_DMA_STATE_READY; in HAL_DMA_Abort()
411 __HAL_UNLOCK(hdma); in HAL_DMA_Abort()
422 HAL_StatusTypeDef HAL_DMA_Abort_IT(DMA_HandleTypeDef *hdma) in HAL_DMA_Abort_IT() argument
426 if (HAL_DMA_STATE_BUSY != hdma->State) in HAL_DMA_Abort_IT()
429 hdma->ErrorCode = HAL_DMA_ERROR_NO_XFER; in HAL_DMA_Abort_IT()
437 hdma->Instance->CCR &= ~(DMA_IT_TC | DMA_IT_HT | DMA_IT_TE); in HAL_DMA_Abort_IT()
440 hdma->Instance->CCR &= ~DMA_CCR_EN; in HAL_DMA_Abort_IT()
443 hdma->DmaBaseAddress->IFCR = DMA_FLAG_GL1 << hdma->ChannelIndex; in HAL_DMA_Abort_IT()
446 hdma->State = HAL_DMA_STATE_READY; in HAL_DMA_Abort_IT()
449 __HAL_UNLOCK(hdma); in HAL_DMA_Abort_IT()
452 if (hdma->XferAbortCallback != NULL) in HAL_DMA_Abort_IT()
454 hdma->XferAbortCallback(hdma); in HAL_DMA_Abort_IT()
468 HAL_StatusTypeDef HAL_DMA_PollForTransfer(DMA_HandleTypeDef *hdma, uint32_t CompleteLevel, uint32_t… in HAL_DMA_PollForTransfer() argument
473 if (HAL_DMA_STATE_BUSY != hdma->State) in HAL_DMA_PollForTransfer()
476 hdma->ErrorCode = HAL_DMA_ERROR_NO_XFER; in HAL_DMA_PollForTransfer()
477 __HAL_UNLOCK(hdma); in HAL_DMA_PollForTransfer()
482 if (RESET != (hdma->Instance->CCR & DMA_CCR_CIRC)) in HAL_DMA_PollForTransfer()
484 hdma->ErrorCode = HAL_DMA_ERROR_NOT_SUPPORTED; in HAL_DMA_PollForTransfer()
492 temp = DMA_FLAG_TC1 << hdma->ChannelIndex; in HAL_DMA_PollForTransfer()
497 temp = DMA_FLAG_HT1 << hdma->ChannelIndex; in HAL_DMA_PollForTransfer()
503 while (RESET == (hdma->DmaBaseAddress->ISR & temp)) in HAL_DMA_PollForTransfer()
505 if (RESET != (hdma->DmaBaseAddress->ISR & (DMA_FLAG_TE1 << hdma->ChannelIndex))) in HAL_DMA_PollForTransfer()
510 hdma->DmaBaseAddress->IFCR = DMA_FLAG_GL1 << hdma->ChannelIndex; in HAL_DMA_PollForTransfer()
513 hdma->ErrorCode = HAL_DMA_ERROR_TE; in HAL_DMA_PollForTransfer()
516 hdma->State = HAL_DMA_STATE_READY; in HAL_DMA_PollForTransfer()
519 __HAL_UNLOCK(hdma); in HAL_DMA_PollForTransfer()
529 hdma->ErrorCode = HAL_DMA_ERROR_TIMEOUT; in HAL_DMA_PollForTransfer()
532 hdma->State = HAL_DMA_STATE_READY; in HAL_DMA_PollForTransfer()
535 __HAL_UNLOCK(hdma); in HAL_DMA_PollForTransfer()
545 hdma->DmaBaseAddress->IFCR = DMA_FLAG_TC1 << hdma->ChannelIndex; in HAL_DMA_PollForTransfer()
549 hdma->State = HAL_DMA_STATE_READY; in HAL_DMA_PollForTransfer()
554 hdma->DmaBaseAddress->IFCR = DMA_FLAG_HT1 << hdma->ChannelIndex; in HAL_DMA_PollForTransfer()
558 __HAL_UNLOCK(hdma); in HAL_DMA_PollForTransfer()
569 void HAL_DMA_IRQHandler(DMA_HandleTypeDef *hdma) in HAL_DMA_IRQHandler() argument
571 uint32_t flag_it = hdma->DmaBaseAddress->ISR; in HAL_DMA_IRQHandler()
572 uint32_t source_it = hdma->Instance->CCR; in HAL_DMA_IRQHandler()
575 …if ((RESET != (flag_it & (DMA_FLAG_HT1 << hdma->ChannelIndex))) && (RESET != (source_it & DMA_IT_H… in HAL_DMA_IRQHandler()
578 if ((hdma->Instance->CCR & DMA_CCR_CIRC) == 0U) in HAL_DMA_IRQHandler()
581 hdma->Instance->CCR &= ~DMA_IT_HT; in HAL_DMA_IRQHandler()
585 hdma->DmaBaseAddress->IFCR = DMA_FLAG_HT1 << hdma->ChannelIndex; in HAL_DMA_IRQHandler()
590 if (hdma->XferHalfCpltCallback != NULL) in HAL_DMA_IRQHandler()
593 hdma->XferHalfCpltCallback(hdma); in HAL_DMA_IRQHandler()
598 …else if ((RESET != (flag_it & (DMA_FLAG_TC1 << hdma->ChannelIndex))) && (RESET != (source_it & DMA… in HAL_DMA_IRQHandler()
600 if ((hdma->Instance->CCR & DMA_CCR_CIRC) == 0U) in HAL_DMA_IRQHandler()
604 hdma->Instance->CCR &= ~(DMA_IT_TC | DMA_IT_TE); in HAL_DMA_IRQHandler()
607 hdma->State = HAL_DMA_STATE_READY; in HAL_DMA_IRQHandler()
611 hdma->DmaBaseAddress->IFCR = DMA_FLAG_TC1 << hdma->ChannelIndex; in HAL_DMA_IRQHandler()
614 __HAL_UNLOCK(hdma); in HAL_DMA_IRQHandler()
616 if (hdma->XferCpltCallback != NULL) in HAL_DMA_IRQHandler()
619 hdma->XferCpltCallback(hdma); in HAL_DMA_IRQHandler()
624 …else if ((RESET != (flag_it & (DMA_FLAG_TE1 << hdma->ChannelIndex))) && (RESET != (source_it & DMA… in HAL_DMA_IRQHandler()
629 hdma->Instance->CCR &= ~(DMA_IT_TC | DMA_IT_HT | DMA_IT_TE); in HAL_DMA_IRQHandler()
632 hdma->DmaBaseAddress->IFCR = DMA_FLAG_GL1 << hdma->ChannelIndex; in HAL_DMA_IRQHandler()
635 hdma->ErrorCode = HAL_DMA_ERROR_TE; in HAL_DMA_IRQHandler()
638 hdma->State = HAL_DMA_STATE_READY; in HAL_DMA_IRQHandler()
641 __HAL_UNLOCK(hdma); in HAL_DMA_IRQHandler()
643 if (hdma->XferErrorCallback != NULL) in HAL_DMA_IRQHandler()
646 hdma->XferErrorCallback(hdma); in HAL_DMA_IRQHandler()
661 HAL_StatusTypeDef HAL_DMA_RegisterCallback(DMA_HandleTypeDef *hdma, HAL_DMA_CallbackIDTypeDef Callb… in HAL_DMA_RegisterCallback() argument
666 __HAL_LOCK(hdma); in HAL_DMA_RegisterCallback()
668 if (HAL_DMA_STATE_READY == hdma->State) in HAL_DMA_RegisterCallback()
673 hdma->XferCpltCallback = pCallback; in HAL_DMA_RegisterCallback()
677 hdma->XferHalfCpltCallback = pCallback; in HAL_DMA_RegisterCallback()
681 hdma->XferErrorCallback = pCallback; in HAL_DMA_RegisterCallback()
685 hdma->XferAbortCallback = pCallback; in HAL_DMA_RegisterCallback()
699 __HAL_UNLOCK(hdma); in HAL_DMA_RegisterCallback()
712 HAL_StatusTypeDef HAL_DMA_UnRegisterCallback(DMA_HandleTypeDef *hdma, HAL_DMA_CallbackIDTypeDef Cal… in HAL_DMA_UnRegisterCallback() argument
717 __HAL_LOCK(hdma); in HAL_DMA_UnRegisterCallback()
719 if (HAL_DMA_STATE_READY == hdma->State) in HAL_DMA_UnRegisterCallback()
724 hdma->XferCpltCallback = NULL; in HAL_DMA_UnRegisterCallback()
728 hdma->XferHalfCpltCallback = NULL; in HAL_DMA_UnRegisterCallback()
732 hdma->XferErrorCallback = NULL; in HAL_DMA_UnRegisterCallback()
736 hdma->XferAbortCallback = NULL; in HAL_DMA_UnRegisterCallback()
740 hdma->XferCpltCallback = NULL; in HAL_DMA_UnRegisterCallback()
741 hdma->XferHalfCpltCallback = NULL; in HAL_DMA_UnRegisterCallback()
742 hdma->XferErrorCallback = NULL; in HAL_DMA_UnRegisterCallback()
743 hdma->XferAbortCallback = NULL; in HAL_DMA_UnRegisterCallback()
757 __HAL_UNLOCK(hdma); in HAL_DMA_UnRegisterCallback()
788 HAL_DMA_StateTypeDef HAL_DMA_GetState(DMA_HandleTypeDef *hdma) in HAL_DMA_GetState() argument
790 return hdma->State; in HAL_DMA_GetState()
799 uint32_t HAL_DMA_GetError(DMA_HandleTypeDef *hdma) in HAL_DMA_GetError() argument
801 return hdma->ErrorCode; in HAL_DMA_GetError()
825 static void DMA_SetConfig(DMA_HandleTypeDef *hdma, uint32_t SrcAddress, uint32_t DstAddress, uint32… in DMA_SetConfig() argument
828 hdma->DmaBaseAddress->IFCR = (DMA_FLAG_GL1 << hdma->ChannelIndex); in DMA_SetConfig()
831 hdma->Instance->CNDTR = DataLength; in DMA_SetConfig()
834 if ((hdma->Init.Direction) == DMA_MEMORY_TO_PERIPH) in DMA_SetConfig()
837 hdma->Instance->CPAR = DstAddress; in DMA_SetConfig()
840 hdma->Instance->CMAR = SrcAddress; in DMA_SetConfig()
846 hdma->Instance->CPAR = SrcAddress; in DMA_SetConfig()
849 hdma->Instance->CMAR = DstAddress; in DMA_SetConfig()
859 static void DMA_CalcBaseAndBitshift(DMA_HandleTypeDef *hdma) in DMA_CalcBaseAndBitshift() argument
863 if ((uint32_t)(hdma->Instance) < (uint32_t)(DMA2_Channel1)) in DMA_CalcBaseAndBitshift()
866hdma->ChannelIndex = (((uint32_t)hdma->Instance - (uint32_t)DMA1_Channel1) / ((uint32_t)DMA1_Chann… in DMA_CalcBaseAndBitshift()
867 hdma->DmaBaseAddress = DMA1; in DMA_CalcBaseAndBitshift()
872hdma->ChannelIndex = (((uint32_t)hdma->Instance - (uint32_t)DMA2_Channel1) / ((uint32_t)DMA2_Chann… in DMA_CalcBaseAndBitshift()
873 hdma->DmaBaseAddress = DMA2; in DMA_CalcBaseAndBitshift()
878hdma->ChannelIndex = (((uint32_t)hdma->Instance - (uint32_t)DMA1_Channel1) / ((uint32_t)DMA1_Chann… in DMA_CalcBaseAndBitshift()
879 hdma->DmaBaseAddress = DMA1; in DMA_CalcBaseAndBitshift()