Lines Matching refs:husart

174 void USART_InitCallbacksToDefault(USART_HandleTypeDef *husart);
176 static void USART_EndTransfer(USART_HandleTypeDef *husart);
185 static HAL_StatusTypeDef USART_WaitOnFlagUntilTimeout(USART_HandleTypeDef *husart, uint32_t Flag, F…
187 static HAL_StatusTypeDef USART_SetConfig(USART_HandleTypeDef *husart);
188 static HAL_StatusTypeDef USART_CheckIdleState(USART_HandleTypeDef *husart);
189 static void USART_TxISR_8BIT(USART_HandleTypeDef *husart);
190 static void USART_TxISR_16BIT(USART_HandleTypeDef *husart);
191 static void USART_EndTransmit_IT(USART_HandleTypeDef *husart);
192 static void USART_RxISR_8BIT(USART_HandleTypeDef *husart);
193 static void USART_RxISR_16BIT(USART_HandleTypeDef *husart);
263 HAL_StatusTypeDef HAL_USART_Init(USART_HandleTypeDef *husart) in HAL_USART_Init() argument
266 if (husart == NULL) in HAL_USART_Init()
272 assert_param(IS_USART_INSTANCE(husart->Instance)); in HAL_USART_Init()
274 if (husart->State == HAL_USART_STATE_RESET) in HAL_USART_Init()
277 husart->Lock = HAL_UNLOCKED; in HAL_USART_Init()
280 USART_InitCallbacksToDefault(husart); in HAL_USART_Init()
282 if (husart->MspInitCallback == NULL) in HAL_USART_Init()
284 husart->MspInitCallback = HAL_USART_MspInit; in HAL_USART_Init()
288 husart->MspInitCallback(husart); in HAL_USART_Init()
291 HAL_USART_MspInit(husart); in HAL_USART_Init()
295 husart->State = HAL_USART_STATE_BUSY; in HAL_USART_Init()
298 __HAL_USART_DISABLE(husart); in HAL_USART_Init()
301 if (USART_SetConfig(husart) == HAL_ERROR) in HAL_USART_Init()
310 husart->Instance->CR2 &= ~USART_CR2_LINEN; in HAL_USART_Init()
311 husart->Instance->CR3 &= ~(USART_CR3_SCEN | USART_CR3_HDSEL | USART_CR3_IREN); in HAL_USART_Init()
314 __HAL_USART_ENABLE(husart); in HAL_USART_Init()
317 return (USART_CheckIdleState(husart)); in HAL_USART_Init()
325 HAL_StatusTypeDef HAL_USART_DeInit(USART_HandleTypeDef *husart) in HAL_USART_DeInit() argument
328 if (husart == NULL) in HAL_USART_DeInit()
334 assert_param(IS_USART_INSTANCE(husart->Instance)); in HAL_USART_DeInit()
336 husart->State = HAL_USART_STATE_BUSY; in HAL_USART_DeInit()
338 husart->Instance->CR1 = 0x0U; in HAL_USART_DeInit()
339 husart->Instance->CR2 = 0x0U; in HAL_USART_DeInit()
340 husart->Instance->CR3 = 0x0U; in HAL_USART_DeInit()
343 if (husart->MspDeInitCallback == NULL) in HAL_USART_DeInit()
345 husart->MspDeInitCallback = HAL_USART_MspDeInit; in HAL_USART_DeInit()
348 husart->MspDeInitCallback(husart); in HAL_USART_DeInit()
351 HAL_USART_MspDeInit(husart); in HAL_USART_DeInit()
354 husart->ErrorCode = HAL_USART_ERROR_NONE; in HAL_USART_DeInit()
355 husart->State = HAL_USART_STATE_RESET; in HAL_USART_DeInit()
358 __HAL_UNLOCK(husart); in HAL_USART_DeInit()
368 __weak void HAL_USART_MspInit(USART_HandleTypeDef *husart) in HAL_USART_MspInit() argument
371 UNUSED(husart); in HAL_USART_MspInit()
383 __weak void HAL_USART_MspDeInit(USART_HandleTypeDef *husart) in HAL_USART_MspDeInit() argument
386 UNUSED(husart); in HAL_USART_MspDeInit()
414 HAL_StatusTypeDef HAL_USART_RegisterCallback(USART_HandleTypeDef *husart, HAL_USART_CallbackIDTypeD… in HAL_USART_RegisterCallback() argument
422 husart->ErrorCode |= HAL_USART_ERROR_INVALID_CALLBACK; in HAL_USART_RegisterCallback()
427 if (husart->State == HAL_USART_STATE_READY) in HAL_USART_RegisterCallback()
432 husart->TxHalfCpltCallback = pCallback; in HAL_USART_RegisterCallback()
436 husart->TxCpltCallback = pCallback; in HAL_USART_RegisterCallback()
440 husart->RxHalfCpltCallback = pCallback; in HAL_USART_RegisterCallback()
444 husart->RxCpltCallback = pCallback; in HAL_USART_RegisterCallback()
448 husart->TxRxCpltCallback = pCallback; in HAL_USART_RegisterCallback()
452 husart->ErrorCallback = pCallback; in HAL_USART_RegisterCallback()
456 husart->AbortCpltCallback = pCallback; in HAL_USART_RegisterCallback()
461 husart->MspInitCallback = pCallback; in HAL_USART_RegisterCallback()
465 husart->MspDeInitCallback = pCallback; in HAL_USART_RegisterCallback()
470 husart->ErrorCode |= HAL_USART_ERROR_INVALID_CALLBACK; in HAL_USART_RegisterCallback()
477 else if (husart->State == HAL_USART_STATE_RESET) in HAL_USART_RegisterCallback()
482 husart->MspInitCallback = pCallback; in HAL_USART_RegisterCallback()
486 husart->MspDeInitCallback = pCallback; in HAL_USART_RegisterCallback()
491 husart->ErrorCode |= HAL_USART_ERROR_INVALID_CALLBACK; in HAL_USART_RegisterCallback()
501 husart->ErrorCode |= HAL_USART_ERROR_INVALID_CALLBACK; in HAL_USART_RegisterCallback()
529 HAL_StatusTypeDef HAL_USART_UnRegisterCallback(USART_HandleTypeDef *husart, HAL_USART_CallbackIDTyp… in HAL_USART_UnRegisterCallback() argument
533 if (HAL_USART_STATE_READY == husart->State) in HAL_USART_UnRegisterCallback()
538husart->TxHalfCpltCallback = HAL_USART_TxHalfCpltCallback; /* Legacy weak TxHalfCpl… in HAL_USART_UnRegisterCallback()
542husart->TxCpltCallback = HAL_USART_TxCpltCallback; /* Legacy weak TxCpltCall… in HAL_USART_UnRegisterCallback()
546husart->RxHalfCpltCallback = HAL_USART_RxHalfCpltCallback; /* Legacy weak RxHalfCplt… in HAL_USART_UnRegisterCallback()
550husart->RxCpltCallback = HAL_USART_RxCpltCallback; /* Legacy weak RxCpltCall… in HAL_USART_UnRegisterCallback()
554husart->TxRxCpltCallback = HAL_USART_TxRxCpltCallback; /* Legacy weak TxRxCpltCa… in HAL_USART_UnRegisterCallback()
558husart->ErrorCallback = HAL_USART_ErrorCallback; /* Legacy weak ErrorCallb… in HAL_USART_UnRegisterCallback()
562husart->AbortCpltCallback = HAL_USART_AbortCpltCallback; /* Legacy weak AbortCpltC… in HAL_USART_UnRegisterCallback()
567husart->MspInitCallback = HAL_USART_MspInit; /* Legacy weak MspInitCal… in HAL_USART_UnRegisterCallback()
571husart->MspDeInitCallback = HAL_USART_MspDeInit; /* Legacy weak MspDeInitC… in HAL_USART_UnRegisterCallback()
576 husart->ErrorCode |= HAL_USART_ERROR_INVALID_CALLBACK; in HAL_USART_UnRegisterCallback()
583 else if (HAL_USART_STATE_RESET == husart->State) in HAL_USART_UnRegisterCallback()
588 husart->MspInitCallback = HAL_USART_MspInit; in HAL_USART_UnRegisterCallback()
592 husart->MspDeInitCallback = HAL_USART_MspDeInit; in HAL_USART_UnRegisterCallback()
597 husart->ErrorCode |= HAL_USART_ERROR_INVALID_CALLBACK; in HAL_USART_UnRegisterCallback()
607 husart->ErrorCode |= HAL_USART_ERROR_INVALID_CALLBACK; in HAL_USART_UnRegisterCallback()
713 HAL_StatusTypeDef HAL_USART_Transmit(USART_HandleTypeDef *husart, const uint8_t *pTxData, uint16_t … in HAL_USART_Transmit() argument
720 if (husart->State == HAL_USART_STATE_READY) in HAL_USART_Transmit()
728 __HAL_LOCK(husart); in HAL_USART_Transmit()
730 husart->ErrorCode = HAL_USART_ERROR_NONE; in HAL_USART_Transmit()
731 husart->State = HAL_USART_STATE_BUSY_TX; in HAL_USART_Transmit()
736 husart->TxXferSize = Size; in HAL_USART_Transmit()
737 husart->TxXferCount = Size; in HAL_USART_Transmit()
740 …if ((husart->Init.WordLength == USART_WORDLENGTH_9B) && (husart->Init.Parity == USART_PARITY_NONE)) in HAL_USART_Transmit()
752 while (husart->TxXferCount > 0U) in HAL_USART_Transmit()
754 if (USART_WaitOnFlagUntilTimeout(husart, USART_FLAG_TXE, RESET, tickstart, Timeout) != HAL_OK) in HAL_USART_Transmit()
760 husart->Instance->TDR = (uint16_t)(*ptxdata16bits & 0x01FFU); in HAL_USART_Transmit()
765 husart->Instance->TDR = (uint8_t)(*ptxdata8bits & 0xFFU); in HAL_USART_Transmit()
769 husart->TxXferCount--; in HAL_USART_Transmit()
772 if (USART_WaitOnFlagUntilTimeout(husart, USART_FLAG_TC, RESET, tickstart, Timeout) != HAL_OK) in HAL_USART_Transmit()
778 __HAL_USART_CLEAR_FLAG(husart, USART_CLEAR_TCF); in HAL_USART_Transmit()
781 __HAL_USART_CLEAR_OREFLAG(husart); in HAL_USART_Transmit()
782 __HAL_USART_SEND_REQ(husart, USART_RXDATA_FLUSH_REQUEST); in HAL_USART_Transmit()
783 __HAL_USART_SEND_REQ(husart, USART_TXDATA_FLUSH_REQUEST); in HAL_USART_Transmit()
786 husart->State = HAL_USART_STATE_READY; in HAL_USART_Transmit()
789 __HAL_UNLOCK(husart); in HAL_USART_Transmit()
811 HAL_StatusTypeDef HAL_USART_Receive(USART_HandleTypeDef *husart, uint8_t *pRxData, uint16_t Size, u… in HAL_USART_Receive() argument
818 if (husart->State == HAL_USART_STATE_READY) in HAL_USART_Receive()
826 __HAL_LOCK(husart); in HAL_USART_Receive()
828 husart->ErrorCode = HAL_USART_ERROR_NONE; in HAL_USART_Receive()
829 husart->State = HAL_USART_STATE_BUSY_RX; in HAL_USART_Receive()
834 husart->RxXferSize = Size; in HAL_USART_Receive()
835 husart->RxXferCount = Size; in HAL_USART_Receive()
838 USART_MASK_COMPUTATION(husart); in HAL_USART_Receive()
839 uhMask = husart->Mask; in HAL_USART_Receive()
842 …if ((husart->Init.WordLength == USART_WORDLENGTH_9B) && (husart->Init.Parity == USART_PARITY_NONE)) in HAL_USART_Receive()
854 while (husart->RxXferCount > 0U) in HAL_USART_Receive()
861 … if (USART_WaitOnFlagUntilTimeout(husart, USART_FLAG_TXE, RESET, tickstart, Timeout) != HAL_OK) in HAL_USART_Receive()
865 husart->Instance->TDR = (USART_DUMMY_DATA & (uint16_t)0x0FF); in HAL_USART_Receive()
869 … if (USART_WaitOnFlagUntilTimeout(husart, USART_FLAG_RXNE, RESET, tickstart, Timeout) != HAL_OK) in HAL_USART_Receive()
876 *prxdata16bits = (uint16_t)(husart->Instance->RDR & uhMask); in HAL_USART_Receive()
881 *prxdata8bits = (uint8_t)(husart->Instance->RDR & (uint8_t)(uhMask & 0xFFU)); in HAL_USART_Receive()
885 husart->RxXferCount--; in HAL_USART_Receive()
891 husart->State = HAL_USART_STATE_READY; in HAL_USART_Receive()
894 __HAL_UNLOCK(husart); in HAL_USART_Receive()
916 HAL_StatusTypeDef HAL_USART_TransmitReceive(USART_HandleTypeDef *husart, const uint8_t *pTxData, ui… in HAL_USART_TransmitReceive() argument
927 if (husart->State == HAL_USART_STATE_READY) in HAL_USART_TransmitReceive()
935 __HAL_LOCK(husart); in HAL_USART_TransmitReceive()
937 husart->ErrorCode = HAL_USART_ERROR_NONE; in HAL_USART_TransmitReceive()
938 husart->State = HAL_USART_STATE_BUSY_RX; in HAL_USART_TransmitReceive()
943 husart->RxXferSize = Size; in HAL_USART_TransmitReceive()
944 husart->TxXferSize = Size; in HAL_USART_TransmitReceive()
945 husart->TxXferCount = Size; in HAL_USART_TransmitReceive()
946 husart->RxXferCount = Size; in HAL_USART_TransmitReceive()
949 USART_MASK_COMPUTATION(husart); in HAL_USART_TransmitReceive()
950 uhMask = husart->Mask; in HAL_USART_TransmitReceive()
953 …if ((husart->Init.WordLength == USART_WORDLENGTH_9B) && (husart->Init.Parity == USART_PARITY_NONE)) in HAL_USART_TransmitReceive()
968 if (husart->TxXferCount == 0x01U) in HAL_USART_TransmitReceive()
971 if (USART_WaitOnFlagUntilTimeout(husart, USART_FLAG_TXE, RESET, tickstart, Timeout) != HAL_OK) in HAL_USART_TransmitReceive()
977 husart->Instance->TDR = (uint16_t)(*ptxdata16bits & uhMask); in HAL_USART_TransmitReceive()
982 husart->Instance->TDR = (uint8_t)(*ptxdata8bits & (uint8_t)(uhMask & 0xFFU)); in HAL_USART_TransmitReceive()
986 husart->TxXferCount--; in HAL_USART_TransmitReceive()
991 rxdatacount = husart->RxXferCount; in HAL_USART_TransmitReceive()
992 while ((husart->TxXferCount > 0U) || (rxdatacount > 0U)) in HAL_USART_TransmitReceive()
994 if (husart->TxXferCount > 0U) in HAL_USART_TransmitReceive()
997 … if (USART_WaitOnFlagUntilTimeout(husart, USART_FLAG_TXE, RESET, tickstart, Timeout) != HAL_OK) in HAL_USART_TransmitReceive()
1003 husart->Instance->TDR = (uint16_t)(*ptxdata16bits & uhMask); in HAL_USART_TransmitReceive()
1008 husart->Instance->TDR = (uint8_t)(*ptxdata8bits & (uint8_t)(uhMask & 0xFFU)); in HAL_USART_TransmitReceive()
1012 husart->TxXferCount--; in HAL_USART_TransmitReceive()
1015 if (husart->RxXferCount > 0U) in HAL_USART_TransmitReceive()
1018 … if (USART_WaitOnFlagUntilTimeout(husart, USART_FLAG_RXNE, RESET, tickstart, Timeout) != HAL_OK) in HAL_USART_TransmitReceive()
1025 *prxdata16bits = (uint16_t)(husart->Instance->RDR & uhMask); in HAL_USART_TransmitReceive()
1030 *prxdata8bits = (uint8_t)(husart->Instance->RDR & (uint8_t)(uhMask & 0xFFU)); in HAL_USART_TransmitReceive()
1034 husart->RxXferCount--; in HAL_USART_TransmitReceive()
1036 rxdatacount = husart->RxXferCount; in HAL_USART_TransmitReceive()
1040 husart->State = HAL_USART_STATE_READY; in HAL_USART_TransmitReceive()
1043 __HAL_UNLOCK(husart); in HAL_USART_TransmitReceive()
1063 HAL_StatusTypeDef HAL_USART_Transmit_IT(USART_HandleTypeDef *husart, const uint8_t *pTxData, uint16… in HAL_USART_Transmit_IT() argument
1065 if (husart->State == HAL_USART_STATE_READY) in HAL_USART_Transmit_IT()
1073 __HAL_LOCK(husart); in HAL_USART_Transmit_IT()
1075 husart->pTxBuffPtr = pTxData; in HAL_USART_Transmit_IT()
1076 husart->TxXferSize = Size; in HAL_USART_Transmit_IT()
1077 husart->TxXferCount = Size; in HAL_USART_Transmit_IT()
1078 husart->TxISR = NULL; in HAL_USART_Transmit_IT()
1080 husart->ErrorCode = HAL_USART_ERROR_NONE; in HAL_USART_Transmit_IT()
1081 husart->State = HAL_USART_STATE_BUSY_TX; in HAL_USART_Transmit_IT()
1091 …if ((husart->Init.WordLength == USART_WORDLENGTH_9B) && (husart->Init.Parity == USART_PARITY_NONE)) in HAL_USART_Transmit_IT()
1093 husart->TxISR = USART_TxISR_16BIT; in HAL_USART_Transmit_IT()
1097 husart->TxISR = USART_TxISR_8BIT; in HAL_USART_Transmit_IT()
1101 __HAL_UNLOCK(husart); in HAL_USART_Transmit_IT()
1104 __HAL_USART_ENABLE_IT(husart, USART_IT_TXE); in HAL_USART_Transmit_IT()
1126 HAL_StatusTypeDef HAL_USART_Receive_IT(USART_HandleTypeDef *husart, uint8_t *pRxData, uint16_t Size) in HAL_USART_Receive_IT() argument
1129 if (husart->State == HAL_USART_STATE_READY) in HAL_USART_Receive_IT()
1137 __HAL_LOCK(husart); in HAL_USART_Receive_IT()
1139 husart->pRxBuffPtr = pRxData; in HAL_USART_Receive_IT()
1140 husart->RxXferSize = Size; in HAL_USART_Receive_IT()
1141 husart->RxXferCount = Size; in HAL_USART_Receive_IT()
1142 husart->RxISR = NULL; in HAL_USART_Receive_IT()
1144 USART_MASK_COMPUTATION(husart); in HAL_USART_Receive_IT()
1146 husart->ErrorCode = HAL_USART_ERROR_NONE; in HAL_USART_Receive_IT()
1147 husart->State = HAL_USART_STATE_BUSY_RX; in HAL_USART_Receive_IT()
1150 SET_BIT(husart->Instance->CR3, USART_CR3_EIE); in HAL_USART_Receive_IT()
1154 …if ((husart->Init.WordLength == USART_WORDLENGTH_9B) && (husart->Init.Parity == USART_PARITY_NONE)) in HAL_USART_Receive_IT()
1156 husart->RxISR = USART_RxISR_16BIT; in HAL_USART_Receive_IT()
1160 husart->RxISR = USART_RxISR_8BIT; in HAL_USART_Receive_IT()
1164 __HAL_UNLOCK(husart); in HAL_USART_Receive_IT()
1167 if (husart->Init.Parity != USART_PARITY_NONE) in HAL_USART_Receive_IT()
1169 SET_BIT(husart->Instance->CR1, USART_CR1_PEIE | USART_CR1_RXNEIE); in HAL_USART_Receive_IT()
1173 SET_BIT(husart->Instance->CR1, USART_CR1_RXNEIE); in HAL_USART_Receive_IT()
1181 husart->Instance->TDR = (USART_DUMMY_DATA & (uint16_t)0x00FF); in HAL_USART_Receive_IT()
1204 HAL_StatusTypeDef HAL_USART_TransmitReceive_IT(USART_HandleTypeDef *husart, const uint8_t *pTxData,… in HAL_USART_TransmitReceive_IT() argument
1208 if (husart->State == HAL_USART_STATE_READY) in HAL_USART_TransmitReceive_IT()
1216 __HAL_LOCK(husart); in HAL_USART_TransmitReceive_IT()
1218 husart->pRxBuffPtr = pRxData; in HAL_USART_TransmitReceive_IT()
1219 husart->RxXferSize = Size; in HAL_USART_TransmitReceive_IT()
1220 husart->RxXferCount = Size; in HAL_USART_TransmitReceive_IT()
1221 husart->pTxBuffPtr = pTxData; in HAL_USART_TransmitReceive_IT()
1222 husart->TxXferSize = Size; in HAL_USART_TransmitReceive_IT()
1223 husart->TxXferCount = Size; in HAL_USART_TransmitReceive_IT()
1226 USART_MASK_COMPUTATION(husart); in HAL_USART_TransmitReceive_IT()
1228 husart->ErrorCode = HAL_USART_ERROR_NONE; in HAL_USART_TransmitReceive_IT()
1229 husart->State = HAL_USART_STATE_BUSY_TX_RX; in HAL_USART_TransmitReceive_IT()
1232 …if ((husart->Init.WordLength == USART_WORDLENGTH_9B) && (husart->Init.Parity == USART_PARITY_NONE)) in HAL_USART_TransmitReceive_IT()
1234 husart->TxISR = USART_TxISR_16BIT; in HAL_USART_TransmitReceive_IT()
1235 husart->RxISR = USART_RxISR_16BIT; in HAL_USART_TransmitReceive_IT()
1239 husart->TxISR = USART_TxISR_8BIT; in HAL_USART_TransmitReceive_IT()
1240 husart->RxISR = USART_RxISR_8BIT; in HAL_USART_TransmitReceive_IT()
1244 __HAL_UNLOCK(husart); in HAL_USART_TransmitReceive_IT()
1247 SET_BIT(husart->Instance->CR3, USART_CR3_EIE); in HAL_USART_TransmitReceive_IT()
1250 if (husart->Init.Parity != USART_PARITY_NONE) in HAL_USART_TransmitReceive_IT()
1252 SET_BIT(husart->Instance->CR1, USART_CR1_PEIE | USART_CR1_RXNEIE); in HAL_USART_TransmitReceive_IT()
1256 SET_BIT(husart->Instance->CR1, USART_CR1_RXNEIE); in HAL_USART_TransmitReceive_IT()
1260 SET_BIT(husart->Instance->CR1, USART_CR1_TXEIE); in HAL_USART_TransmitReceive_IT()
1281 HAL_StatusTypeDef HAL_USART_Transmit_DMA(USART_HandleTypeDef *husart, const uint8_t *pTxData, uint1… in HAL_USART_Transmit_DMA() argument
1286 if (husart->State == HAL_USART_STATE_READY) in HAL_USART_Transmit_DMA()
1294 __HAL_LOCK(husart); in HAL_USART_Transmit_DMA()
1296 husart->pTxBuffPtr = pTxData; in HAL_USART_Transmit_DMA()
1297 husart->TxXferSize = Size; in HAL_USART_Transmit_DMA()
1298 husart->TxXferCount = Size; in HAL_USART_Transmit_DMA()
1300 husart->ErrorCode = HAL_USART_ERROR_NONE; in HAL_USART_Transmit_DMA()
1301 husart->State = HAL_USART_STATE_BUSY_TX; in HAL_USART_Transmit_DMA()
1303 if (husart->hdmatx != NULL) in HAL_USART_Transmit_DMA()
1306 husart->hdmatx->XferCpltCallback = USART_DMATransmitCplt; in HAL_USART_Transmit_DMA()
1309 husart->hdmatx->XferHalfCpltCallback = USART_DMATxHalfCplt; in HAL_USART_Transmit_DMA()
1312 husart->hdmatx->XferErrorCallback = USART_DMAError; in HAL_USART_Transmit_DMA()
1316 …status = HAL_DMA_Start_IT(husart->hdmatx, *(const uint32_t *)tmp, (uint32_t)&husart->Instance->TDR… in HAL_USART_Transmit_DMA()
1322 __HAL_USART_CLEAR_FLAG(husart, USART_CLEAR_TCF); in HAL_USART_Transmit_DMA()
1325 __HAL_UNLOCK(husart); in HAL_USART_Transmit_DMA()
1329 SET_BIT(husart->Instance->CR3, USART_CR3_DMAT); in HAL_USART_Transmit_DMA()
1336 husart->ErrorCode = HAL_USART_ERROR_DMA; in HAL_USART_Transmit_DMA()
1339 __HAL_UNLOCK(husart); in HAL_USART_Transmit_DMA()
1342 husart->State = HAL_USART_STATE_READY; in HAL_USART_Transmit_DMA()
1366 HAL_StatusTypeDef HAL_USART_Receive_DMA(USART_HandleTypeDef *husart, uint8_t *pRxData, uint16_t Siz… in HAL_USART_Receive_DMA() argument
1372 if (husart->State == HAL_USART_STATE_READY) in HAL_USART_Receive_DMA()
1380 __HAL_LOCK(husart); in HAL_USART_Receive_DMA()
1382 husart->pRxBuffPtr = pRxData; in HAL_USART_Receive_DMA()
1383 husart->RxXferSize = Size; in HAL_USART_Receive_DMA()
1384 husart->pTxBuffPtr = pRxData; in HAL_USART_Receive_DMA()
1385 husart->TxXferSize = Size; in HAL_USART_Receive_DMA()
1387 husart->ErrorCode = HAL_USART_ERROR_NONE; in HAL_USART_Receive_DMA()
1388 husart->State = HAL_USART_STATE_BUSY_RX; in HAL_USART_Receive_DMA()
1390 if (husart->hdmarx != NULL) in HAL_USART_Receive_DMA()
1393 husart->hdmarx->XferCpltCallback = USART_DMAReceiveCplt; in HAL_USART_Receive_DMA()
1396 husart->hdmarx->XferHalfCpltCallback = USART_DMARxHalfCplt; in HAL_USART_Receive_DMA()
1399 husart->hdmarx->XferErrorCallback = USART_DMAError; in HAL_USART_Receive_DMA()
1402 …status = HAL_DMA_Start_IT(husart->hdmarx, (uint32_t)&husart->Instance->RDR, *(uint32_t *)tmp, Size… in HAL_USART_Receive_DMA()
1411 if (husart->hdmatx != NULL) in HAL_USART_Receive_DMA()
1413 husart->hdmatx->XferErrorCallback = NULL; in HAL_USART_Receive_DMA()
1414 husart->hdmatx->XferHalfCpltCallback = NULL; in HAL_USART_Receive_DMA()
1415 husart->hdmatx->XferCpltCallback = NULL; in HAL_USART_Receive_DMA()
1416 …status = HAL_DMA_Start_IT(husart->hdmatx, *(uint32_t *)tmp, (uint32_t)&husart->Instance->TDR, Size… in HAL_USART_Receive_DMA()
1423 __HAL_UNLOCK(husart); in HAL_USART_Receive_DMA()
1425 if (husart->Init.Parity != USART_PARITY_NONE) in HAL_USART_Receive_DMA()
1428 SET_BIT(husart->Instance->CR1, USART_CR1_PEIE); in HAL_USART_Receive_DMA()
1432 SET_BIT(husart->Instance->CR3, USART_CR3_EIE); in HAL_USART_Receive_DMA()
1436 SET_BIT(husart->Instance->CR3, USART_CR3_DMAR); in HAL_USART_Receive_DMA()
1440 SET_BIT(husart->Instance->CR3, USART_CR3_DMAT); in HAL_USART_Receive_DMA()
1446 if (husart->hdmarx != NULL) in HAL_USART_Receive_DMA()
1448 status = HAL_DMA_Abort(husart->hdmarx); in HAL_USART_Receive_DMA()
1455 husart->ErrorCode = HAL_USART_ERROR_DMA; in HAL_USART_Receive_DMA()
1458 __HAL_UNLOCK(husart); in HAL_USART_Receive_DMA()
1461 husart->State = HAL_USART_STATE_READY; in HAL_USART_Receive_DMA()
1484 HAL_StatusTypeDef HAL_USART_TransmitReceive_DMA(USART_HandleTypeDef *husart, const uint8_t *pTxData… in HAL_USART_TransmitReceive_DMA() argument
1490 if (husart->State == HAL_USART_STATE_READY) in HAL_USART_TransmitReceive_DMA()
1498 __HAL_LOCK(husart); in HAL_USART_TransmitReceive_DMA()
1500 husart->pRxBuffPtr = pRxData; in HAL_USART_TransmitReceive_DMA()
1501 husart->RxXferSize = Size; in HAL_USART_TransmitReceive_DMA()
1502 husart->pTxBuffPtr = pTxData; in HAL_USART_TransmitReceive_DMA()
1503 husart->TxXferSize = Size; in HAL_USART_TransmitReceive_DMA()
1505 husart->ErrorCode = HAL_USART_ERROR_NONE; in HAL_USART_TransmitReceive_DMA()
1506 husart->State = HAL_USART_STATE_BUSY_TX_RX; in HAL_USART_TransmitReceive_DMA()
1508 if ((husart->hdmarx != NULL) && (husart->hdmatx != NULL)) in HAL_USART_TransmitReceive_DMA()
1511 husart->hdmarx->XferCpltCallback = USART_DMAReceiveCplt; in HAL_USART_TransmitReceive_DMA()
1514 husart->hdmarx->XferHalfCpltCallback = USART_DMARxHalfCplt; in HAL_USART_TransmitReceive_DMA()
1517 husart->hdmatx->XferCpltCallback = USART_DMATransmitCplt; in HAL_USART_TransmitReceive_DMA()
1520 husart->hdmatx->XferHalfCpltCallback = USART_DMATxHalfCplt; in HAL_USART_TransmitReceive_DMA()
1523 husart->hdmatx->XferErrorCallback = USART_DMAError; in HAL_USART_TransmitReceive_DMA()
1526 husart->hdmarx->XferErrorCallback = USART_DMAError; in HAL_USART_TransmitReceive_DMA()
1530 …status = HAL_DMA_Start_IT(husart->hdmarx, (uint32_t)&husart->Instance->RDR, *(const uint32_t *)tmp… in HAL_USART_TransmitReceive_DMA()
1536 …status = HAL_DMA_Start_IT(husart->hdmatx, *(const uint32_t *)tmp, (uint32_t)&husart->Instance->TDR… in HAL_USART_TransmitReceive_DMA()
1547 __HAL_UNLOCK(husart); in HAL_USART_TransmitReceive_DMA()
1549 if (husart->Init.Parity != USART_PARITY_NONE) in HAL_USART_TransmitReceive_DMA()
1552 SET_BIT(husart->Instance->CR1, USART_CR1_PEIE); in HAL_USART_TransmitReceive_DMA()
1556 SET_BIT(husart->Instance->CR3, USART_CR3_EIE); in HAL_USART_TransmitReceive_DMA()
1559 __HAL_USART_CLEAR_FLAG(husart, USART_CLEAR_TCF); in HAL_USART_TransmitReceive_DMA()
1563 SET_BIT(husart->Instance->CR3, USART_CR3_DMAR); in HAL_USART_TransmitReceive_DMA()
1567 SET_BIT(husart->Instance->CR3, USART_CR3_DMAT); in HAL_USART_TransmitReceive_DMA()
1573 if (husart->hdmarx != NULL) in HAL_USART_TransmitReceive_DMA()
1575 status = HAL_DMA_Abort(husart->hdmarx); in HAL_USART_TransmitReceive_DMA()
1582 husart->ErrorCode = HAL_USART_ERROR_DMA; in HAL_USART_TransmitReceive_DMA()
1585 __HAL_UNLOCK(husart); in HAL_USART_TransmitReceive_DMA()
1588 husart->State = HAL_USART_STATE_READY; in HAL_USART_TransmitReceive_DMA()
1604 HAL_StatusTypeDef HAL_USART_DMAPause(USART_HandleTypeDef *husart) in HAL_USART_DMAPause() argument
1606 const HAL_USART_StateTypeDef state = husart->State; in HAL_USART_DMAPause()
1609 __HAL_LOCK(husart); in HAL_USART_DMAPause()
1611 if ((HAL_IS_BIT_SET(husart->Instance->CR3, USART_CR3_DMAT)) && in HAL_USART_DMAPause()
1615 CLEAR_BIT(husart->Instance->CR3, USART_CR3_DMAT); in HAL_USART_DMAPause()
1620 if (HAL_IS_BIT_SET(husart->Instance->CR3, USART_CR3_DMAT)) in HAL_USART_DMAPause()
1623 CLEAR_BIT(husart->Instance->CR3, USART_CR3_DMAT); in HAL_USART_DMAPause()
1625 if (HAL_IS_BIT_SET(husart->Instance->CR3, USART_CR3_DMAR)) in HAL_USART_DMAPause()
1628 CLEAR_BIT(husart->Instance->CR1, USART_CR1_PEIE); in HAL_USART_DMAPause()
1629 CLEAR_BIT(husart->Instance->CR3, USART_CR3_EIE); in HAL_USART_DMAPause()
1632 CLEAR_BIT(husart->Instance->CR3, USART_CR3_DMAR); in HAL_USART_DMAPause()
1641 __HAL_UNLOCK(husart); in HAL_USART_DMAPause()
1651 HAL_StatusTypeDef HAL_USART_DMAResume(USART_HandleTypeDef *husart) in HAL_USART_DMAResume() argument
1653 const HAL_USART_StateTypeDef state = husart->State; in HAL_USART_DMAResume()
1656 __HAL_LOCK(husart); in HAL_USART_DMAResume()
1661 SET_BIT(husart->Instance->CR3, USART_CR3_DMAT); in HAL_USART_DMAResume()
1667 __HAL_USART_CLEAR_FLAG(husart, USART_CLEAR_OREF); in HAL_USART_DMAResume()
1670 if (husart->Init.Parity != USART_PARITY_NONE) in HAL_USART_DMAResume()
1672 SET_BIT(husart->Instance->CR1, USART_CR1_PEIE); in HAL_USART_DMAResume()
1674 SET_BIT(husart->Instance->CR3, USART_CR3_EIE); in HAL_USART_DMAResume()
1677 SET_BIT(husart->Instance->CR3, USART_CR3_DMAR); in HAL_USART_DMAResume()
1680 SET_BIT(husart->Instance->CR3, USART_CR3_DMAT); in HAL_USART_DMAResume()
1688 __HAL_UNLOCK(husart); in HAL_USART_DMAResume()
1698 HAL_StatusTypeDef HAL_USART_DMAStop(USART_HandleTypeDef *husart) in HAL_USART_DMAStop() argument
1708 CLEAR_BIT(husart->Instance->CR3, USART_CR3_DMAT); in HAL_USART_DMAStop()
1709 CLEAR_BIT(husart->Instance->CR3, USART_CR3_DMAR); in HAL_USART_DMAStop()
1712 if (husart->hdmatx != NULL) in HAL_USART_DMAStop()
1714 if (HAL_DMA_Abort(husart->hdmatx) != HAL_OK) in HAL_USART_DMAStop()
1716 if (HAL_DMA_GetError(husart->hdmatx) == HAL_DMA_ERROR_TIMEOUT) in HAL_USART_DMAStop()
1719 husart->ErrorCode = HAL_USART_ERROR_DMA; in HAL_USART_DMAStop()
1726 if (husart->hdmarx != NULL) in HAL_USART_DMAStop()
1728 if (HAL_DMA_Abort(husart->hdmarx) != HAL_OK) in HAL_USART_DMAStop()
1730 if (HAL_DMA_GetError(husart->hdmarx) == HAL_DMA_ERROR_TIMEOUT) in HAL_USART_DMAStop()
1733 husart->ErrorCode = HAL_USART_ERROR_DMA; in HAL_USART_DMAStop()
1740 USART_EndTransfer(husart); in HAL_USART_DMAStop()
1741 husart->State = HAL_USART_STATE_READY; in HAL_USART_DMAStop()
1758 HAL_StatusTypeDef HAL_USART_Abort(USART_HandleTypeDef *husart) in HAL_USART_Abort() argument
1760 …CLEAR_BIT(husart->Instance->CR1, (USART_CR1_RXNEIE | USART_CR1_PEIE | USART_CR1_TXEIE | USART_CR1_… in HAL_USART_Abort()
1761 CLEAR_BIT(husart->Instance->CR3, USART_CR3_EIE); in HAL_USART_Abort()
1764 if (HAL_IS_BIT_SET(husart->Instance->CR3, USART_CR3_DMAT)) in HAL_USART_Abort()
1767 CLEAR_BIT(husart->Instance->CR3, USART_CR3_DMAT); in HAL_USART_Abort()
1770 if (husart->hdmatx != NULL) in HAL_USART_Abort()
1774 husart->hdmatx->XferAbortCallback = NULL; in HAL_USART_Abort()
1776 if (HAL_DMA_Abort(husart->hdmatx) != HAL_OK) in HAL_USART_Abort()
1778 if (HAL_DMA_GetError(husart->hdmatx) == HAL_DMA_ERROR_TIMEOUT) in HAL_USART_Abort()
1781 husart->ErrorCode = HAL_USART_ERROR_DMA; in HAL_USART_Abort()
1790 if (HAL_IS_BIT_SET(husart->Instance->CR3, USART_CR3_DMAR)) in HAL_USART_Abort()
1793 CLEAR_BIT(husart->Instance->CR3, USART_CR3_DMAR); in HAL_USART_Abort()
1796 if (husart->hdmarx != NULL) in HAL_USART_Abort()
1800 husart->hdmarx->XferAbortCallback = NULL; in HAL_USART_Abort()
1802 if (HAL_DMA_Abort(husart->hdmarx) != HAL_OK) in HAL_USART_Abort()
1804 if (HAL_DMA_GetError(husart->hdmarx) == HAL_DMA_ERROR_TIMEOUT) in HAL_USART_Abort()
1807 husart->ErrorCode = HAL_USART_ERROR_DMA; in HAL_USART_Abort()
1816 husart->TxXferCount = 0U; in HAL_USART_Abort()
1817 husart->RxXferCount = 0U; in HAL_USART_Abort()
1820 …__HAL_USART_CLEAR_FLAG(husart, USART_CLEAR_OREF | USART_CLEAR_NEF | USART_CLEAR_PEF | USART_CLEAR_… in HAL_USART_Abort()
1824 __HAL_USART_SEND_REQ(husart, USART_RXDATA_FLUSH_REQUEST); in HAL_USART_Abort()
1827 husart->State = HAL_USART_STATE_READY; in HAL_USART_Abort()
1830 husart->ErrorCode = HAL_USART_ERROR_NONE; in HAL_USART_Abort()
1849 HAL_StatusTypeDef HAL_USART_Abort_IT(USART_HandleTypeDef *husart) in HAL_USART_Abort_IT() argument
1853 …CLEAR_BIT(husart->Instance->CR1, (USART_CR1_RXNEIE | USART_CR1_PEIE | USART_CR1_TXEIE | USART_CR1_… in HAL_USART_Abort_IT()
1854 CLEAR_BIT(husart->Instance->CR3, USART_CR3_EIE); in HAL_USART_Abort_IT()
1859 if (husart->hdmatx != NULL) in HAL_USART_Abort_IT()
1863 if (HAL_IS_BIT_SET(husart->Instance->CR3, USART_CR3_DMAT)) in HAL_USART_Abort_IT()
1865 husart->hdmatx->XferAbortCallback = USART_DMATxAbortCallback; in HAL_USART_Abort_IT()
1869 husart->hdmatx->XferAbortCallback = NULL; in HAL_USART_Abort_IT()
1873 if (husart->hdmarx != NULL) in HAL_USART_Abort_IT()
1877 if (HAL_IS_BIT_SET(husart->Instance->CR3, USART_CR3_DMAR)) in HAL_USART_Abort_IT()
1879 husart->hdmarx->XferAbortCallback = USART_DMARxAbortCallback; in HAL_USART_Abort_IT()
1883 husart->hdmarx->XferAbortCallback = NULL; in HAL_USART_Abort_IT()
1888 if (HAL_IS_BIT_SET(husart->Instance->CR3, USART_CR3_DMAT)) in HAL_USART_Abort_IT()
1891 CLEAR_BIT(husart->Instance->CR3, USART_CR3_DMAT); in HAL_USART_Abort_IT()
1894 if (husart->hdmatx != NULL) in HAL_USART_Abort_IT()
1900 if (HAL_DMA_Abort_IT(husart->hdmatx) != HAL_OK) in HAL_USART_Abort_IT()
1902 husart->hdmatx->XferAbortCallback = NULL; in HAL_USART_Abort_IT()
1912 if (HAL_IS_BIT_SET(husart->Instance->CR3, USART_CR3_DMAR)) in HAL_USART_Abort_IT()
1915 CLEAR_BIT(husart->Instance->CR3, USART_CR3_DMAR); in HAL_USART_Abort_IT()
1918 if (husart->hdmarx != NULL) in HAL_USART_Abort_IT()
1924 if (HAL_DMA_Abort_IT(husart->hdmarx) != HAL_OK) in HAL_USART_Abort_IT()
1926 husart->hdmarx->XferAbortCallback = NULL; in HAL_USART_Abort_IT()
1940 husart->TxXferCount = 0U; in HAL_USART_Abort_IT()
1941 husart->RxXferCount = 0U; in HAL_USART_Abort_IT()
1944 husart->ErrorCode = HAL_USART_ERROR_NONE; in HAL_USART_Abort_IT()
1947 …__HAL_USART_CLEAR_FLAG(husart, USART_CLEAR_OREF | USART_CLEAR_NEF | USART_CLEAR_PEF | USART_CLEAR_… in HAL_USART_Abort_IT()
1951 __HAL_USART_SEND_REQ(husart, USART_RXDATA_FLUSH_REQUEST); in HAL_USART_Abort_IT()
1954 husart->State = HAL_USART_STATE_READY; in HAL_USART_Abort_IT()
1959 husart->AbortCpltCallback(husart); in HAL_USART_Abort_IT()
1962 HAL_USART_AbortCpltCallback(husart); in HAL_USART_Abort_IT()
1974 void HAL_USART_IRQHandler(USART_HandleTypeDef *husart) in HAL_USART_IRQHandler() argument
1976 uint32_t isrflags = READ_REG(husart->Instance->ISR); in HAL_USART_IRQHandler()
1977 uint32_t cr1its = READ_REG(husart->Instance->CR1); in HAL_USART_IRQHandler()
1978 uint32_t cr3its = READ_REG(husart->Instance->CR3); in HAL_USART_IRQHandler()
1991 if (husart->RxISR != NULL) in HAL_USART_IRQHandler()
1993 husart->RxISR(husart); in HAL_USART_IRQHandler()
2007 __HAL_USART_CLEAR_IT(husart, USART_CLEAR_PEF); in HAL_USART_IRQHandler()
2009 husart->ErrorCode |= HAL_USART_ERROR_PE; in HAL_USART_IRQHandler()
2015 __HAL_USART_CLEAR_IT(husart, USART_CLEAR_FEF); in HAL_USART_IRQHandler()
2017 husart->ErrorCode |= HAL_USART_ERROR_FE; in HAL_USART_IRQHandler()
2023 __HAL_USART_CLEAR_IT(husart, USART_CLEAR_NEF); in HAL_USART_IRQHandler()
2025 husart->ErrorCode |= HAL_USART_ERROR_NE; in HAL_USART_IRQHandler()
2033 __HAL_USART_CLEAR_IT(husart, USART_CLEAR_OREF); in HAL_USART_IRQHandler()
2035 husart->ErrorCode |= HAL_USART_ERROR_ORE; in HAL_USART_IRQHandler()
2041 __HAL_USART_CLEAR_IT(husart, USART_CLEAR_RTOF); in HAL_USART_IRQHandler()
2043 husart->ErrorCode |= HAL_USART_ERROR_RTO; in HAL_USART_IRQHandler()
2048 if (husart->ErrorCode != HAL_USART_ERROR_NONE) in HAL_USART_IRQHandler()
2054 if (husart->RxISR != NULL) in HAL_USART_IRQHandler()
2056 husart->RxISR(husart); in HAL_USART_IRQHandler()
2062 errorcode = husart->ErrorCode & HAL_USART_ERROR_ORE; in HAL_USART_IRQHandler()
2063 if ((HAL_IS_BIT_SET(husart->Instance->CR3, USART_CR3_DMAR)) || in HAL_USART_IRQHandler()
2069 USART_EndTransfer(husart); in HAL_USART_IRQHandler()
2072 if (HAL_IS_BIT_SET(husart->Instance->CR3, USART_CR3_DMAR)) in HAL_USART_IRQHandler()
2075 CLEAR_BIT(husart->Instance->CR3, USART_CR3_DMAR | USART_CR3_DMAR); in HAL_USART_IRQHandler()
2078 if (husart->hdmatx != NULL) in HAL_USART_IRQHandler()
2082 husart->hdmatx->XferAbortCallback = NULL; in HAL_USART_IRQHandler()
2085 (void)HAL_DMA_Abort_IT(husart->hdmatx); in HAL_USART_IRQHandler()
2089 if (husart->hdmarx != NULL) in HAL_USART_IRQHandler()
2093 husart->hdmarx->XferAbortCallback = USART_DMAAbortOnError; in HAL_USART_IRQHandler()
2096 if (HAL_DMA_Abort_IT(husart->hdmarx) != HAL_OK) in HAL_USART_IRQHandler()
2099 husart->hdmarx->XferAbortCallback(husart->hdmarx); in HAL_USART_IRQHandler()
2107 husart->ErrorCallback(husart); in HAL_USART_IRQHandler()
2110 HAL_USART_ErrorCallback(husart); in HAL_USART_IRQHandler()
2119 husart->ErrorCallback(husart); in HAL_USART_IRQHandler()
2122 HAL_USART_ErrorCallback(husart); in HAL_USART_IRQHandler()
2132 husart->ErrorCallback(husart); in HAL_USART_IRQHandler()
2135 HAL_USART_ErrorCallback(husart); in HAL_USART_IRQHandler()
2137 husart->ErrorCode = HAL_USART_ERROR_NONE; in HAL_USART_IRQHandler()
2149 if (husart->TxISR != NULL) in HAL_USART_IRQHandler()
2151 husart->TxISR(husart); in HAL_USART_IRQHandler()
2159 USART_EndTransmit_IT(husart); in HAL_USART_IRQHandler()
2170 __weak void HAL_USART_TxCpltCallback(USART_HandleTypeDef *husart) in HAL_USART_TxCpltCallback() argument
2173 UNUSED(husart); in HAL_USART_TxCpltCallback()
2185 __weak void HAL_USART_TxHalfCpltCallback(USART_HandleTypeDef *husart) in HAL_USART_TxHalfCpltCallback() argument
2188 UNUSED(husart); in HAL_USART_TxHalfCpltCallback()
2200 __weak void HAL_USART_RxCpltCallback(USART_HandleTypeDef *husart) in HAL_USART_RxCpltCallback() argument
2203 UNUSED(husart); in HAL_USART_RxCpltCallback()
2215 __weak void HAL_USART_RxHalfCpltCallback(USART_HandleTypeDef *husart) in HAL_USART_RxHalfCpltCallback() argument
2218 UNUSED(husart); in HAL_USART_RxHalfCpltCallback()
2230 __weak void HAL_USART_TxRxCpltCallback(USART_HandleTypeDef *husart) in HAL_USART_TxRxCpltCallback() argument
2233 UNUSED(husart); in HAL_USART_TxRxCpltCallback()
2245 __weak void HAL_USART_ErrorCallback(USART_HandleTypeDef *husart) in HAL_USART_ErrorCallback() argument
2248 UNUSED(husart); in HAL_USART_ErrorCallback()
2260 __weak void HAL_USART_AbortCpltCallback(USART_HandleTypeDef *husart) in HAL_USART_AbortCpltCallback() argument
2263 UNUSED(husart); in HAL_USART_AbortCpltCallback()
2297 HAL_USART_StateTypeDef HAL_USART_GetState(const USART_HandleTypeDef *husart) in HAL_USART_GetState() argument
2299 return husart->State; in HAL_USART_GetState()
2308 uint32_t HAL_USART_GetError(const USART_HandleTypeDef *husart) in HAL_USART_GetError() argument
2310 return husart->ErrorCode; in HAL_USART_GetError()
2331 void USART_InitCallbacksToDefault(USART_HandleTypeDef *husart) in USART_InitCallbacksToDefault() argument
2334husart->TxHalfCpltCallback = HAL_USART_TxHalfCpltCallback; /* Legacy weak TxHalfCplt… in USART_InitCallbacksToDefault()
2335husart->TxCpltCallback = HAL_USART_TxCpltCallback; /* Legacy weak TxCpltCall… in USART_InitCallbacksToDefault()
2336husart->RxHalfCpltCallback = HAL_USART_RxHalfCpltCallback; /* Legacy weak RxHalfCplt… in USART_InitCallbacksToDefault()
2337husart->RxCpltCallback = HAL_USART_RxCpltCallback; /* Legacy weak RxCpltCall… in USART_InitCallbacksToDefault()
2338husart->TxRxCpltCallback = HAL_USART_TxRxCpltCallback; /* Legacy weak TxRxCpltCa… in USART_InitCallbacksToDefault()
2339husart->ErrorCallback = HAL_USART_ErrorCallback; /* Legacy weak ErrorCallb… in USART_InitCallbacksToDefault()
2340husart->AbortCpltCallback = HAL_USART_AbortCpltCallback; /* Legacy weak AbortCpltC… in USART_InitCallbacksToDefault()
2349 static void USART_EndTransfer(USART_HandleTypeDef *husart) in USART_EndTransfer() argument
2352 …CLEAR_BIT(husart->Instance->CR1, (USART_CR1_RXNEIE | USART_CR1_PEIE | USART_CR1_TXEIE | USART_CR1_… in USART_EndTransfer()
2353 CLEAR_BIT(husart->Instance->CR3, USART_CR3_EIE); in USART_EndTransfer()
2356 husart->State = HAL_USART_STATE_READY; in USART_EndTransfer()
2366 USART_HandleTypeDef *husart = (USART_HandleTypeDef *)(hdma->Parent); in USART_DMATransmitCplt() local
2371 husart->TxXferCount = 0U; in USART_DMATransmitCplt()
2373 if (husart->State == HAL_USART_STATE_BUSY_TX) in USART_DMATransmitCplt()
2377 CLEAR_BIT(husart->Instance->CR3, USART_CR3_DMAT); in USART_DMATransmitCplt()
2380 __HAL_USART_ENABLE_IT(husart, USART_IT_TC); in USART_DMATransmitCplt()
2386 if (husart->State == HAL_USART_STATE_BUSY_TX) in USART_DMATransmitCplt()
2390 husart->TxCpltCallback(husart); in USART_DMATransmitCplt()
2393 HAL_USART_TxCpltCallback(husart); in USART_DMATransmitCplt()
2406 USART_HandleTypeDef *husart = (USART_HandleTypeDef *)(hdma->Parent); in USART_DMATxHalfCplt() local
2410 husart->TxHalfCpltCallback(husart); in USART_DMATxHalfCplt()
2413 HAL_USART_TxHalfCpltCallback(husart); in USART_DMATxHalfCplt()
2424 USART_HandleTypeDef *husart = (USART_HandleTypeDef *)(hdma->Parent); in USART_DMAReceiveCplt() local
2429 husart->RxXferCount = 0U; in USART_DMAReceiveCplt()
2432 CLEAR_BIT(husart->Instance->CR1, USART_CR1_PEIE); in USART_DMAReceiveCplt()
2433 CLEAR_BIT(husart->Instance->CR3, USART_CR3_EIE); in USART_DMAReceiveCplt()
2437 CLEAR_BIT(husart->Instance->CR3, USART_CR3_DMAR); in USART_DMAReceiveCplt()
2440 CLEAR_BIT(husart->Instance->CR3, USART_CR3_DMAT); in USART_DMAReceiveCplt()
2442 if (husart->State == HAL_USART_STATE_BUSY_RX) in USART_DMAReceiveCplt()
2446 husart->RxCpltCallback(husart); in USART_DMAReceiveCplt()
2449 HAL_USART_RxCpltCallback(husart); in USART_DMAReceiveCplt()
2457 husart->TxRxCpltCallback(husart); in USART_DMAReceiveCplt()
2460 HAL_USART_TxRxCpltCallback(husart); in USART_DMAReceiveCplt()
2463 husart->State = HAL_USART_STATE_READY; in USART_DMAReceiveCplt()
2468 if (husart->State == HAL_USART_STATE_BUSY_RX) in USART_DMAReceiveCplt()
2472 husart->RxCpltCallback(husart); in USART_DMAReceiveCplt()
2475 HAL_USART_RxCpltCallback(husart); in USART_DMAReceiveCplt()
2483 husart->TxRxCpltCallback(husart); in USART_DMAReceiveCplt()
2486 HAL_USART_TxRxCpltCallback(husart); in USART_DMAReceiveCplt()
2499 USART_HandleTypeDef *husart = (USART_HandleTypeDef *)(hdma->Parent); in USART_DMARxHalfCplt() local
2503 husart->RxHalfCpltCallback(husart); in USART_DMARxHalfCplt()
2506 HAL_USART_RxHalfCpltCallback(husart); in USART_DMARxHalfCplt()
2517 USART_HandleTypeDef *husart = (USART_HandleTypeDef *)(hdma->Parent); in USART_DMAError() local
2519 husart->RxXferCount = 0U; in USART_DMAError()
2520 husart->TxXferCount = 0U; in USART_DMAError()
2521 USART_EndTransfer(husart); in USART_DMAError()
2523 husart->ErrorCode |= HAL_USART_ERROR_DMA; in USART_DMAError()
2524 husart->State = HAL_USART_STATE_READY; in USART_DMAError()
2528 husart->ErrorCallback(husart); in USART_DMAError()
2531 HAL_USART_ErrorCallback(husart); in USART_DMAError()
2543 USART_HandleTypeDef *husart = (USART_HandleTypeDef *)(hdma->Parent); in USART_DMAAbortOnError() local
2544 husart->RxXferCount = 0U; in USART_DMAAbortOnError()
2545 husart->TxXferCount = 0U; in USART_DMAAbortOnError()
2549 husart->ErrorCallback(husart); in USART_DMAAbortOnError()
2552 HAL_USART_ErrorCallback(husart); in USART_DMAAbortOnError()
2566 USART_HandleTypeDef *husart = (USART_HandleTypeDef *)(hdma->Parent); in USART_DMATxAbortCallback() local
2568 husart->hdmatx->XferAbortCallback = NULL; in USART_DMATxAbortCallback()
2571 if (husart->hdmarx != NULL) in USART_DMATxAbortCallback()
2573 if (husart->hdmarx->XferAbortCallback != NULL) in USART_DMATxAbortCallback()
2580 husart->TxXferCount = 0U; in USART_DMATxAbortCallback()
2581 husart->RxXferCount = 0U; in USART_DMATxAbortCallback()
2584 husart->ErrorCode = HAL_USART_ERROR_NONE; in USART_DMATxAbortCallback()
2587 …__HAL_USART_CLEAR_FLAG(husart, USART_CLEAR_OREF | USART_CLEAR_NEF | USART_CLEAR_PEF | USART_CLEAR_… in USART_DMATxAbortCallback()
2590 husart->State = HAL_USART_STATE_READY; in USART_DMATxAbortCallback()
2595 husart->AbortCpltCallback(husart); in USART_DMATxAbortCallback()
2598 HAL_USART_AbortCpltCallback(husart); in USART_DMATxAbortCallback()
2614 USART_HandleTypeDef *husart = (USART_HandleTypeDef *)(hdma->Parent); in USART_DMARxAbortCallback() local
2616 husart->hdmarx->XferAbortCallback = NULL; in USART_DMARxAbortCallback()
2619 if (husart->hdmatx != NULL) in USART_DMARxAbortCallback()
2621 if (husart->hdmatx->XferAbortCallback != NULL) in USART_DMARxAbortCallback()
2628 husart->TxXferCount = 0U; in USART_DMARxAbortCallback()
2629 husart->RxXferCount = 0U; in USART_DMARxAbortCallback()
2632 husart->ErrorCode = HAL_USART_ERROR_NONE; in USART_DMARxAbortCallback()
2635 …__HAL_USART_CLEAR_FLAG(husart, USART_CLEAR_OREF | USART_CLEAR_NEF | USART_CLEAR_PEF | USART_CLEAR_… in USART_DMARxAbortCallback()
2638 husart->State = HAL_USART_STATE_READY; in USART_DMARxAbortCallback()
2643 husart->AbortCpltCallback(husart); in USART_DMARxAbortCallback()
2646 HAL_USART_AbortCpltCallback(husart); in USART_DMARxAbortCallback()
2661 static HAL_StatusTypeDef USART_WaitOnFlagUntilTimeout(USART_HandleTypeDef *husart, uint32_t Flag, F… in USART_WaitOnFlagUntilTimeout() argument
2665 while ((__HAL_USART_GET_FLAG(husart, Flag) ? SET : RESET) == Status) in USART_WaitOnFlagUntilTimeout()
2672 husart->State = HAL_USART_STATE_READY; in USART_WaitOnFlagUntilTimeout()
2675 __HAL_UNLOCK(husart); in USART_WaitOnFlagUntilTimeout()
2689 static HAL_StatusTypeDef USART_SetConfig(USART_HandleTypeDef *husart) in USART_SetConfig() argument
2699 assert_param(IS_USART_POLARITY(husart->Init.CLKPolarity)); in USART_SetConfig()
2700 assert_param(IS_USART_PHASE(husart->Init.CLKPhase)); in USART_SetConfig()
2701 assert_param(IS_USART_LASTBIT(husart->Init.CLKLastBit)); in USART_SetConfig()
2702 assert_param(IS_USART_BAUDRATE(husart->Init.BaudRate)); in USART_SetConfig()
2703 assert_param(IS_USART_WORD_LENGTH(husart->Init.WordLength)); in USART_SetConfig()
2704 assert_param(IS_USART_STOPBITS(husart->Init.StopBits)); in USART_SetConfig()
2705 assert_param(IS_USART_PARITY(husart->Init.Parity)); in USART_SetConfig()
2706 assert_param(IS_USART_MODE(husart->Init.Mode)); in USART_SetConfig()
2715 …tmpreg = (uint32_t)husart->Init.WordLength | husart->Init.Parity | husart->Init.Mode | USART_CR1_O… in USART_SetConfig()
2716 MODIFY_REG(husart->Instance->CR1, USART_CR1_FIELDS, tmpreg); in USART_SetConfig()
2725 tmpreg |= (uint32_t)husart->Init.CLKLastBit; in USART_SetConfig()
2726 tmpreg |= ((uint32_t)husart->Init.CLKPolarity | (uint32_t)husart->Init.CLKPhase); in USART_SetConfig()
2727 tmpreg |= (uint32_t)husart->Init.StopBits; in USART_SetConfig()
2728 MODIFY_REG(husart->Instance->CR2, USART_CR2_FIELDS, tmpreg); in USART_SetConfig()
2733 USART_GETCLOCKSOURCE(husart, clocksource); in USART_SetConfig()
2739 usartdiv = (uint32_t)(USART_DIV_SAMPLING8(pclk, husart->Init.BaudRate)); in USART_SetConfig()
2743 usartdiv = (uint32_t)(USART_DIV_SAMPLING8(pclk, husart->Init.BaudRate)); in USART_SetConfig()
2746 usartdiv = (uint32_t)(USART_DIV_SAMPLING8(HSI_VALUE, husart->Init.BaudRate)); in USART_SetConfig()
2750 usartdiv = (uint32_t)(USART_DIV_SAMPLING8(pclk, husart->Init.BaudRate)); in USART_SetConfig()
2753 usartdiv = (uint32_t)(USART_DIV_SAMPLING8(LSE_VALUE, husart->Init.BaudRate)); in USART_SetConfig()
2765 husart->Instance->BRR = brrtemp; in USART_SetConfig()
2774 husart->RxISR = NULL; in USART_SetConfig()
2775 husart->TxISR = NULL; in USART_SetConfig()
2785 static HAL_StatusTypeDef USART_CheckIdleState(USART_HandleTypeDef *husart) in USART_CheckIdleState() argument
2790 husart->ErrorCode = HAL_USART_ERROR_NONE; in USART_CheckIdleState()
2796 if ((husart->Instance->CR1 & USART_CR1_TE) == USART_CR1_TE) in USART_CheckIdleState()
2799 …if (USART_WaitOnFlagUntilTimeout(husart, USART_ISR_TEACK, RESET, tickstart, USART_TEACK_REACK_TIME… in USART_CheckIdleState()
2807 if ((husart->Instance->CR1 & USART_CR1_RE) == USART_CR1_RE) in USART_CheckIdleState()
2810 …if (USART_WaitOnFlagUntilTimeout(husart, USART_ISR_REACK, RESET, tickstart, USART_TEACK_REACK_TIME… in USART_CheckIdleState()
2819 husart->State = HAL_USART_STATE_READY; in USART_CheckIdleState()
2822 __HAL_UNLOCK(husart); in USART_CheckIdleState()
2836 static void USART_TxISR_8BIT(USART_HandleTypeDef *husart) in USART_TxISR_8BIT() argument
2838 const HAL_USART_StateTypeDef state = husart->State; in USART_TxISR_8BIT()
2844 if (husart->TxXferCount == 0U) in USART_TxISR_8BIT()
2847 __HAL_USART_DISABLE_IT(husart, USART_IT_TXE); in USART_TxISR_8BIT()
2850 __HAL_USART_ENABLE_IT(husart, USART_IT_TC); in USART_TxISR_8BIT()
2854 husart->Instance->TDR = (uint8_t)(*husart->pTxBuffPtr & (uint8_t)0xFF); in USART_TxISR_8BIT()
2855 husart->pTxBuffPtr++; in USART_TxISR_8BIT()
2856 husart->TxXferCount--; in USART_TxISR_8BIT()
2870 static void USART_TxISR_16BIT(USART_HandleTypeDef *husart) in USART_TxISR_16BIT() argument
2872 const HAL_USART_StateTypeDef state = husart->State; in USART_TxISR_16BIT()
2878 if (husart->TxXferCount == 0U) in USART_TxISR_16BIT()
2881 __HAL_USART_DISABLE_IT(husart, USART_IT_TXE); in USART_TxISR_16BIT()
2884 __HAL_USART_ENABLE_IT(husart, USART_IT_TC); in USART_TxISR_16BIT()
2888 tmp = (const uint16_t *) husart->pTxBuffPtr; in USART_TxISR_16BIT()
2889 husart->Instance->TDR = (uint16_t)(*tmp & 0x01FFU); in USART_TxISR_16BIT()
2890 husart->pTxBuffPtr += 2U; in USART_TxISR_16BIT()
2891 husart->TxXferCount--; in USART_TxISR_16BIT()
2903 static void USART_EndTransmit_IT(USART_HandleTypeDef *husart) in USART_EndTransmit_IT() argument
2906 __HAL_USART_DISABLE_IT(husart, USART_IT_TC); in USART_EndTransmit_IT()
2909 __HAL_USART_DISABLE_IT(husart, USART_IT_ERR); in USART_EndTransmit_IT()
2912 husart->TxISR = NULL; in USART_EndTransmit_IT()
2914 if (husart->State == HAL_USART_STATE_BUSY_TX) in USART_EndTransmit_IT()
2917 __HAL_USART_CLEAR_OREFLAG(husart); in USART_EndTransmit_IT()
2918 __HAL_USART_SEND_REQ(husart, USART_RXDATA_FLUSH_REQUEST); in USART_EndTransmit_IT()
2921 husart->State = HAL_USART_STATE_READY; in USART_EndTransmit_IT()
2925 husart->TxCpltCallback(husart); in USART_EndTransmit_IT()
2928 HAL_USART_TxCpltCallback(husart); in USART_EndTransmit_IT()
2931 else if (husart->RxXferCount == 0U) in USART_EndTransmit_IT()
2934 husart->State = HAL_USART_STATE_READY; in USART_EndTransmit_IT()
2938 husart->TxRxCpltCallback(husart); in USART_EndTransmit_IT()
2941 HAL_USART_TxRxCpltCallback(husart); in USART_EndTransmit_IT()
2959 static void USART_RxISR_8BIT(USART_HandleTypeDef *husart) in USART_RxISR_8BIT() argument
2961 const HAL_USART_StateTypeDef state = husart->State; in USART_RxISR_8BIT()
2963 uint16_t uhMask = husart->Mask; in USART_RxISR_8BIT()
2968 *husart->pRxBuffPtr = (uint8_t)(husart->Instance->RDR & (uint8_t)uhMask); in USART_RxISR_8BIT()
2969 husart->pRxBuffPtr++; in USART_RxISR_8BIT()
2970 husart->RxXferCount--; in USART_RxISR_8BIT()
2972 if (husart->RxXferCount == 0U) in USART_RxISR_8BIT()
2975 CLEAR_BIT(husart->Instance->CR1, (USART_CR1_RXNEIE | USART_CR1_PEIE)); in USART_RxISR_8BIT()
2978 CLEAR_BIT(husart->Instance->CR3, USART_CR3_EIE); in USART_RxISR_8BIT()
2981 husart->RxISR = NULL; in USART_RxISR_8BIT()
2984 txdatacount = husart->TxXferCount; in USART_RxISR_8BIT()
2990 husart->State = HAL_USART_STATE_READY; in USART_RxISR_8BIT()
2994 husart->RxCpltCallback(husart); in USART_RxISR_8BIT()
2997 HAL_USART_RxCpltCallback(husart); in USART_RxISR_8BIT()
3000 else if ((READ_BIT(husart->Instance->CR1, USART_CR1_TCIE) != USART_CR1_TCIE) && in USART_RxISR_8BIT()
3004 husart->State = HAL_USART_STATE_READY; in USART_RxISR_8BIT()
3008 husart->TxRxCpltCallback(husart); in USART_RxISR_8BIT()
3011 HAL_USART_TxRxCpltCallback(husart); in USART_RxISR_8BIT()
3022 husart->Instance->TDR = (USART_DUMMY_DATA & (uint16_t)0x00FF); in USART_RxISR_8BIT()
3039 static void USART_RxISR_16BIT(USART_HandleTypeDef *husart) in USART_RxISR_16BIT() argument
3041 const HAL_USART_StateTypeDef state = husart->State; in USART_RxISR_16BIT()
3044 uint16_t uhMask = husart->Mask; in USART_RxISR_16BIT()
3049 tmp = (uint16_t *) husart->pRxBuffPtr; in USART_RxISR_16BIT()
3050 *tmp = (uint16_t)(husart->Instance->RDR & uhMask); in USART_RxISR_16BIT()
3051 husart->pRxBuffPtr += 2U; in USART_RxISR_16BIT()
3052 husart->RxXferCount--; in USART_RxISR_16BIT()
3054 if (husart->RxXferCount == 0U) in USART_RxISR_16BIT()
3057 CLEAR_BIT(husart->Instance->CR1, (USART_CR1_RXNEIE | USART_CR1_PEIE)); in USART_RxISR_16BIT()
3060 CLEAR_BIT(husart->Instance->CR3, USART_CR3_EIE); in USART_RxISR_16BIT()
3063 husart->RxISR = NULL; in USART_RxISR_16BIT()
3066 txdatacount = husart->TxXferCount; in USART_RxISR_16BIT()
3072 husart->State = HAL_USART_STATE_READY; in USART_RxISR_16BIT()
3076 husart->RxCpltCallback(husart); in USART_RxISR_16BIT()
3079 HAL_USART_RxCpltCallback(husart); in USART_RxISR_16BIT()
3082 else if ((READ_BIT(husart->Instance->CR1, USART_CR1_TCIE) != USART_CR1_TCIE) && in USART_RxISR_16BIT()
3086 husart->State = HAL_USART_STATE_READY; in USART_RxISR_16BIT()
3090 husart->TxRxCpltCallback(husart); in USART_RxISR_16BIT()
3093 HAL_USART_TxRxCpltCallback(husart); in USART_RxISR_16BIT()
3104 husart->Instance->TDR = (USART_DUMMY_DATA & (uint16_t)0x00FF); in USART_RxISR_16BIT()