Lines Matching refs:hdma
98 static void DMA_SetConfig(DMA_HandleTypeDef *hdma, uint32_t SrcAddress, uint32_t DstAddress, uint32…
99 static void DMA_CalcBaseAndBitshift(DMA_HandleTypeDef *hdma);
136 HAL_StatusTypeDef HAL_DMA_Init(DMA_HandleTypeDef *hdma) in HAL_DMA_Init() argument
141 if(NULL == hdma) in HAL_DMA_Init()
147 assert_param(IS_DMA_ALL_INSTANCE(hdma->Instance)); in HAL_DMA_Init()
148 assert_param(IS_DMA_DIRECTION(hdma->Init.Direction)); in HAL_DMA_Init()
149 assert_param(IS_DMA_PERIPHERAL_INC_STATE(hdma->Init.PeriphInc)); in HAL_DMA_Init()
150 assert_param(IS_DMA_MEMORY_INC_STATE(hdma->Init.MemInc)); in HAL_DMA_Init()
151 assert_param(IS_DMA_PERIPHERAL_DATA_SIZE(hdma->Init.PeriphDataAlignment)); in HAL_DMA_Init()
152 assert_param(IS_DMA_MEMORY_DATA_SIZE(hdma->Init.MemDataAlignment)); in HAL_DMA_Init()
153 assert_param(IS_DMA_MODE(hdma->Init.Mode)); in HAL_DMA_Init()
154 assert_param(IS_DMA_PRIORITY(hdma->Init.Priority)); in HAL_DMA_Init()
157 hdma->State = HAL_DMA_STATE_BUSY; in HAL_DMA_Init()
160 tmp = hdma->Instance->CCR; in HAL_DMA_Init()
168 tmp |= hdma->Init.Direction | in HAL_DMA_Init()
169 hdma->Init.PeriphInc | hdma->Init.MemInc | in HAL_DMA_Init()
170 hdma->Init.PeriphDataAlignment | hdma->Init.MemDataAlignment | in HAL_DMA_Init()
171 hdma->Init.Mode | hdma->Init.Priority; in HAL_DMA_Init()
174 hdma->Instance->CCR = tmp; in HAL_DMA_Init()
178 DMA_CalcBaseAndBitshift(hdma); in HAL_DMA_Init()
181 hdma->ErrorCode = HAL_DMA_ERROR_NONE; in HAL_DMA_Init()
184 hdma->State = HAL_DMA_STATE_READY; in HAL_DMA_Init()
187 hdma->Lock = HAL_UNLOCKED; in HAL_DMA_Init()
198 HAL_StatusTypeDef HAL_DMA_DeInit(DMA_HandleTypeDef *hdma) in HAL_DMA_DeInit() argument
201 if(NULL == hdma) in HAL_DMA_DeInit()
207 assert_param(IS_DMA_ALL_INSTANCE(hdma->Instance)); in HAL_DMA_DeInit()
210 hdma->Instance->CCR &= ~DMA_CCR_EN; in HAL_DMA_DeInit()
213 hdma->Instance->CCR = 0U; in HAL_DMA_DeInit()
216 hdma->Instance->CNDTR = 0U; in HAL_DMA_DeInit()
219 hdma->Instance->CPAR = 0U; in HAL_DMA_DeInit()
222 hdma->Instance->CMAR = 0U; in HAL_DMA_DeInit()
225 DMA_CalcBaseAndBitshift(hdma); in HAL_DMA_DeInit()
228 hdma->DmaBaseAddress->IFCR = DMA_FLAG_GL1 << hdma->ChannelIndex; in HAL_DMA_DeInit()
231 hdma->XferCpltCallback = NULL; in HAL_DMA_DeInit()
232 hdma->XferHalfCpltCallback = NULL; in HAL_DMA_DeInit()
233 hdma->XferErrorCallback = NULL; in HAL_DMA_DeInit()
234 hdma->XferAbortCallback = NULL; in HAL_DMA_DeInit()
237 hdma->ErrorCode = HAL_DMA_ERROR_NONE; in HAL_DMA_DeInit()
240 hdma->State = HAL_DMA_STATE_RESET; in HAL_DMA_DeInit()
243 __HAL_UNLOCK(hdma); in HAL_DMA_DeInit()
280 HAL_StatusTypeDef HAL_DMA_Start(DMA_HandleTypeDef *hdma, uint32_t SrcAddress, uint32_t DstAddress, … in HAL_DMA_Start() argument
288 __HAL_LOCK(hdma); in HAL_DMA_Start()
290 if(HAL_DMA_STATE_READY == hdma->State) in HAL_DMA_Start()
293 hdma->State = HAL_DMA_STATE_BUSY; in HAL_DMA_Start()
295 hdma->ErrorCode = HAL_DMA_ERROR_NONE; in HAL_DMA_Start()
298 hdma->Instance->CCR &= ~DMA_CCR_EN; in HAL_DMA_Start()
301 DMA_SetConfig(hdma, SrcAddress, DstAddress, DataLength); in HAL_DMA_Start()
304 hdma->Instance->CCR |= DMA_CCR_EN; in HAL_DMA_Start()
309 __HAL_UNLOCK(hdma); in HAL_DMA_Start()
327 HAL_StatusTypeDef HAL_DMA_Start_IT(DMA_HandleTypeDef *hdma, uint32_t SrcAddress, uint32_t DstAddres… in HAL_DMA_Start_IT() argument
335 __HAL_LOCK(hdma); in HAL_DMA_Start_IT()
337 if(HAL_DMA_STATE_READY == hdma->State) in HAL_DMA_Start_IT()
340 hdma->State = HAL_DMA_STATE_BUSY; in HAL_DMA_Start_IT()
342 hdma->ErrorCode = HAL_DMA_ERROR_NONE; in HAL_DMA_Start_IT()
345 hdma->Instance->CCR &= ~DMA_CCR_EN; in HAL_DMA_Start_IT()
348 DMA_SetConfig(hdma, SrcAddress, DstAddress, DataLength); in HAL_DMA_Start_IT()
352 if(NULL != hdma->XferHalfCpltCallback ) in HAL_DMA_Start_IT()
354 hdma->Instance->CCR |= (DMA_IT_TC | DMA_IT_HT | DMA_IT_TE); in HAL_DMA_Start_IT()
358 hdma->Instance->CCR |= (DMA_IT_TC | DMA_IT_TE); in HAL_DMA_Start_IT()
359 hdma->Instance->CCR &= ~DMA_IT_HT; in HAL_DMA_Start_IT()
363 hdma->Instance->CCR |= DMA_CCR_EN; in HAL_DMA_Start_IT()
368 __HAL_UNLOCK(hdma); in HAL_DMA_Start_IT()
383 HAL_StatusTypeDef HAL_DMA_Abort(DMA_HandleTypeDef *hdma) in HAL_DMA_Abort() argument
386 if(NULL == hdma) in HAL_DMA_Abort()
391 if(hdma->State != HAL_DMA_STATE_BUSY) in HAL_DMA_Abort()
394 hdma->ErrorCode = HAL_DMA_ERROR_NO_XFER; in HAL_DMA_Abort()
397 __HAL_UNLOCK(hdma); in HAL_DMA_Abort()
404 hdma->Instance->CCR &= ~(DMA_IT_TC | DMA_IT_HT | DMA_IT_TE); in HAL_DMA_Abort()
407 hdma->Instance->CCR &= ~DMA_CCR_EN; in HAL_DMA_Abort()
410 hdma->DmaBaseAddress->IFCR = (DMA_FLAG_GL1 << hdma->ChannelIndex); in HAL_DMA_Abort()
413 hdma->State = HAL_DMA_STATE_READY; in HAL_DMA_Abort()
416 __HAL_UNLOCK(hdma); in HAL_DMA_Abort()
427 HAL_StatusTypeDef HAL_DMA_Abort_IT(DMA_HandleTypeDef *hdma) in HAL_DMA_Abort_IT() argument
431 if(HAL_DMA_STATE_BUSY != hdma->State) in HAL_DMA_Abort_IT()
434 hdma->ErrorCode = HAL_DMA_ERROR_NO_XFER; in HAL_DMA_Abort_IT()
441 hdma->Instance->CCR &= ~(DMA_IT_TC | DMA_IT_HT | DMA_IT_TE); in HAL_DMA_Abort_IT()
444 hdma->Instance->CCR &= ~DMA_CCR_EN; in HAL_DMA_Abort_IT()
447 hdma->DmaBaseAddress->IFCR = DMA_FLAG_GL1 << hdma->ChannelIndex; in HAL_DMA_Abort_IT()
450 hdma->State = HAL_DMA_STATE_READY; in HAL_DMA_Abort_IT()
453 __HAL_UNLOCK(hdma); in HAL_DMA_Abort_IT()
456 if(hdma->XferAbortCallback != NULL) in HAL_DMA_Abort_IT()
458 hdma->XferAbortCallback(hdma); in HAL_DMA_Abort_IT()
472 HAL_StatusTypeDef HAL_DMA_PollForTransfer(DMA_HandleTypeDef *hdma, uint32_t CompleteLevel, uint32_t… in HAL_DMA_PollForTransfer() argument
477 if(HAL_DMA_STATE_BUSY != hdma->State) in HAL_DMA_PollForTransfer()
480 hdma->ErrorCode = HAL_DMA_ERROR_NO_XFER; in HAL_DMA_PollForTransfer()
481 __HAL_UNLOCK(hdma); in HAL_DMA_PollForTransfer()
486 if (RESET != (hdma->Instance->CCR & DMA_CCR_CIRC)) in HAL_DMA_PollForTransfer()
488 hdma->ErrorCode = HAL_DMA_ERROR_NOT_SUPPORTED; in HAL_DMA_PollForTransfer()
496 temp = DMA_FLAG_TC1 << hdma->ChannelIndex; in HAL_DMA_PollForTransfer()
501 temp = DMA_FLAG_HT1 << hdma->ChannelIndex; in HAL_DMA_PollForTransfer()
507 while(RESET == (hdma->DmaBaseAddress->ISR & temp)) in HAL_DMA_PollForTransfer()
509 if(RESET != (hdma->DmaBaseAddress->ISR & (DMA_FLAG_TE1 << hdma->ChannelIndex))) in HAL_DMA_PollForTransfer()
514 hdma->DmaBaseAddress->IFCR = DMA_FLAG_GL1 << hdma->ChannelIndex; in HAL_DMA_PollForTransfer()
517 hdma->ErrorCode = HAL_DMA_ERROR_TE; in HAL_DMA_PollForTransfer()
520 hdma->State= HAL_DMA_STATE_READY; in HAL_DMA_PollForTransfer()
523 __HAL_UNLOCK(hdma); in HAL_DMA_PollForTransfer()
533 hdma->ErrorCode = HAL_DMA_ERROR_TIMEOUT; in HAL_DMA_PollForTransfer()
536 hdma->State = HAL_DMA_STATE_READY; in HAL_DMA_PollForTransfer()
539 __HAL_UNLOCK(hdma); in HAL_DMA_PollForTransfer()
549 hdma->DmaBaseAddress->IFCR = DMA_FLAG_TC1 << hdma->ChannelIndex; in HAL_DMA_PollForTransfer()
553 hdma->State = HAL_DMA_STATE_READY; in HAL_DMA_PollForTransfer()
558 hdma->DmaBaseAddress->IFCR = DMA_FLAG_HT1 << hdma->ChannelIndex; in HAL_DMA_PollForTransfer()
562 __HAL_UNLOCK(hdma); in HAL_DMA_PollForTransfer()
573 void HAL_DMA_IRQHandler(DMA_HandleTypeDef *hdma) in HAL_DMA_IRQHandler() argument
575 uint32_t flag_it = hdma->DmaBaseAddress->ISR; in HAL_DMA_IRQHandler()
576 uint32_t source_it = hdma->Instance->CCR; in HAL_DMA_IRQHandler()
579 …if ((RESET != (flag_it & (DMA_FLAG_HT1 << hdma->ChannelIndex))) && (RESET != (source_it & DMA_IT_H… in HAL_DMA_IRQHandler()
582 if((hdma->Instance->CCR & DMA_CCR_CIRC) == 0U) in HAL_DMA_IRQHandler()
585 hdma->Instance->CCR &= ~DMA_IT_HT; in HAL_DMA_IRQHandler()
589 hdma->DmaBaseAddress->IFCR = DMA_FLAG_HT1 << hdma->ChannelIndex; in HAL_DMA_IRQHandler()
594 if(hdma->XferHalfCpltCallback != NULL) in HAL_DMA_IRQHandler()
597 hdma->XferHalfCpltCallback(hdma); in HAL_DMA_IRQHandler()
602 …else if ((RESET != (flag_it & (DMA_FLAG_TC1 << hdma->ChannelIndex))) && (RESET != (source_it & DMA… in HAL_DMA_IRQHandler()
604 if((hdma->Instance->CCR & DMA_CCR_CIRC) == 0U) in HAL_DMA_IRQHandler()
608 hdma->Instance->CCR &= ~(DMA_IT_TC | DMA_IT_TE); in HAL_DMA_IRQHandler()
611 hdma->State = HAL_DMA_STATE_READY; in HAL_DMA_IRQHandler()
615 hdma->DmaBaseAddress->IFCR = DMA_FLAG_TC1 << hdma->ChannelIndex; in HAL_DMA_IRQHandler()
618 __HAL_UNLOCK(hdma); in HAL_DMA_IRQHandler()
620 if(hdma->XferCpltCallback != NULL) in HAL_DMA_IRQHandler()
623 hdma->XferCpltCallback(hdma); in HAL_DMA_IRQHandler()
628 …else if (( RESET != (flag_it & (DMA_FLAG_TE1 << hdma->ChannelIndex))) && (RESET != (source_it & DM… in HAL_DMA_IRQHandler()
633 hdma->Instance->CCR &= ~(DMA_IT_TC | DMA_IT_HT | DMA_IT_TE); in HAL_DMA_IRQHandler()
636 hdma->DmaBaseAddress->IFCR = DMA_FLAG_GL1 << hdma->ChannelIndex; in HAL_DMA_IRQHandler()
639 hdma->ErrorCode = HAL_DMA_ERROR_TE; in HAL_DMA_IRQHandler()
642 hdma->State = HAL_DMA_STATE_READY; in HAL_DMA_IRQHandler()
645 __HAL_UNLOCK(hdma); in HAL_DMA_IRQHandler()
647 if(hdma->XferErrorCallback != NULL) in HAL_DMA_IRQHandler()
650 hdma->XferErrorCallback(hdma); in HAL_DMA_IRQHandler()
665 HAL_StatusTypeDef HAL_DMA_RegisterCallback(DMA_HandleTypeDef *hdma, HAL_DMA_CallbackIDTypeDef Callb… in HAL_DMA_RegisterCallback() argument
670 __HAL_LOCK(hdma); in HAL_DMA_RegisterCallback()
672 if(HAL_DMA_STATE_READY == hdma->State) in HAL_DMA_RegisterCallback()
677 hdma->XferCpltCallback = pCallback; in HAL_DMA_RegisterCallback()
681 hdma->XferHalfCpltCallback = pCallback; in HAL_DMA_RegisterCallback()
685 hdma->XferErrorCallback = pCallback; in HAL_DMA_RegisterCallback()
689 hdma->XferAbortCallback = pCallback; in HAL_DMA_RegisterCallback()
703 __HAL_UNLOCK(hdma); in HAL_DMA_RegisterCallback()
716 HAL_StatusTypeDef HAL_DMA_UnRegisterCallback(DMA_HandleTypeDef *hdma, HAL_DMA_CallbackIDTypeDef Cal… in HAL_DMA_UnRegisterCallback() argument
721 __HAL_LOCK(hdma); in HAL_DMA_UnRegisterCallback()
723 if(HAL_DMA_STATE_READY == hdma->State) in HAL_DMA_UnRegisterCallback()
728 hdma->XferCpltCallback = NULL; in HAL_DMA_UnRegisterCallback()
732 hdma->XferHalfCpltCallback = NULL; in HAL_DMA_UnRegisterCallback()
736 hdma->XferErrorCallback = NULL; in HAL_DMA_UnRegisterCallback()
740 hdma->XferAbortCallback = NULL; in HAL_DMA_UnRegisterCallback()
744 hdma->XferCpltCallback = NULL; in HAL_DMA_UnRegisterCallback()
745 hdma->XferHalfCpltCallback = NULL; in HAL_DMA_UnRegisterCallback()
746 hdma->XferErrorCallback = NULL; in HAL_DMA_UnRegisterCallback()
747 hdma->XferAbortCallback = NULL; in HAL_DMA_UnRegisterCallback()
761 __HAL_UNLOCK(hdma); in HAL_DMA_UnRegisterCallback()
792 HAL_DMA_StateTypeDef HAL_DMA_GetState(DMA_HandleTypeDef *hdma) in HAL_DMA_GetState() argument
794 return hdma->State; in HAL_DMA_GetState()
803 uint32_t HAL_DMA_GetError(DMA_HandleTypeDef *hdma) in HAL_DMA_GetError() argument
805 return hdma->ErrorCode; in HAL_DMA_GetError()
829 static void DMA_SetConfig(DMA_HandleTypeDef *hdma, uint32_t SrcAddress, uint32_t DstAddress, uint32… in DMA_SetConfig() argument
832 hdma->DmaBaseAddress->IFCR = (DMA_FLAG_GL1 << hdma->ChannelIndex); in DMA_SetConfig()
835 hdma->Instance->CNDTR = DataLength; in DMA_SetConfig()
838 if((hdma->Init.Direction) == DMA_MEMORY_TO_PERIPH) in DMA_SetConfig()
841 hdma->Instance->CPAR = DstAddress; in DMA_SetConfig()
844 hdma->Instance->CMAR = SrcAddress; in DMA_SetConfig()
850 hdma->Instance->CPAR = SrcAddress; in DMA_SetConfig()
853 hdma->Instance->CMAR = DstAddress; in DMA_SetConfig()
863 static void DMA_CalcBaseAndBitshift(DMA_HandleTypeDef *hdma) in DMA_CalcBaseAndBitshift() argument
867 if ((uint32_t)(hdma->Instance) < (uint32_t)(DMA2_Channel1)) in DMA_CalcBaseAndBitshift()
870 …hdma->ChannelIndex = (((uint32_t)hdma->Instance - (uint32_t)DMA1_Channel1) / ((uint32_t)DMA1_Chann… in DMA_CalcBaseAndBitshift()
871 hdma->DmaBaseAddress = DMA1; in DMA_CalcBaseAndBitshift()
876 …hdma->ChannelIndex = (((uint32_t)hdma->Instance - (uint32_t)DMA2_Channel1) / ((uint32_t)DMA2_Chann… in DMA_CalcBaseAndBitshift()
877 hdma->DmaBaseAddress = DMA2; in DMA_CalcBaseAndBitshift()
882 …hdma->ChannelIndex = (((uint32_t)hdma->Instance - (uint32_t)DMA1_Channel1) / ((uint32_t)DMA1_Chann… in DMA_CalcBaseAndBitshift()
883 hdma->DmaBaseAddress = DMA1; in DMA_CalcBaseAndBitshift()