Lines Matching refs:husart
183 void USART_InitCallbacksToDefault(USART_HandleTypeDef *husart);
185 static void USART_EndTransfer(USART_HandleTypeDef *husart);
196 static HAL_StatusTypeDef USART_WaitOnFlagUntilTimeout(USART_HandleTypeDef *husart, uint32_t Flag, F…
198 static HAL_StatusTypeDef USART_SetConfig(USART_HandleTypeDef *husart);
199 static HAL_StatusTypeDef USART_CheckIdleState(USART_HandleTypeDef *husart);
200 static void USART_TxISR_8BIT(USART_HandleTypeDef *husart);
201 static void USART_TxISR_16BIT(USART_HandleTypeDef *husart);
202 static void USART_TxISR_8BIT_FIFOEN(USART_HandleTypeDef *husart);
203 static void USART_TxISR_16BIT_FIFOEN(USART_HandleTypeDef *husart);
204 static void USART_EndTransmit_IT(USART_HandleTypeDef *husart);
205 static void USART_RxISR_8BIT(USART_HandleTypeDef *husart);
206 static void USART_RxISR_16BIT(USART_HandleTypeDef *husart);
207 static void USART_RxISR_8BIT_FIFOEN(USART_HandleTypeDef *husart);
208 static void USART_RxISR_16BIT_FIFOEN(USART_HandleTypeDef *husart);
278 HAL_StatusTypeDef HAL_USART_Init(USART_HandleTypeDef *husart) in HAL_USART_Init() argument
281 if (husart == NULL) in HAL_USART_Init()
287 assert_param(IS_USART_INSTANCE(husart->Instance)); in HAL_USART_Init()
289 if (husart->State == HAL_USART_STATE_RESET) in HAL_USART_Init()
292 husart->Lock = HAL_UNLOCKED; in HAL_USART_Init()
295 USART_InitCallbacksToDefault(husart); in HAL_USART_Init()
297 if (husart->MspInitCallback == NULL) in HAL_USART_Init()
299 husart->MspInitCallback = HAL_USART_MspInit; in HAL_USART_Init()
303 husart->MspInitCallback(husart); in HAL_USART_Init()
306 HAL_USART_MspInit(husart); in HAL_USART_Init()
310 husart->State = HAL_USART_STATE_BUSY; in HAL_USART_Init()
313 __HAL_USART_DISABLE(husart); in HAL_USART_Init()
316 if (USART_SetConfig(husart) == HAL_ERROR) in HAL_USART_Init()
325 husart->Instance->CR2 &= ~USART_CR2_LINEN; in HAL_USART_Init()
326 husart->Instance->CR3 &= ~(USART_CR3_SCEN | USART_CR3_HDSEL | USART_CR3_IREN); in HAL_USART_Init()
329 __HAL_USART_ENABLE(husart); in HAL_USART_Init()
332 return (USART_CheckIdleState(husart)); in HAL_USART_Init()
340 HAL_StatusTypeDef HAL_USART_DeInit(USART_HandleTypeDef *husart) in HAL_USART_DeInit() argument
343 if (husart == NULL) in HAL_USART_DeInit()
349 assert_param(IS_USART_INSTANCE(husart->Instance)); in HAL_USART_DeInit()
351 husart->State = HAL_USART_STATE_BUSY; in HAL_USART_DeInit()
353 husart->Instance->CR1 = 0x0U; in HAL_USART_DeInit()
354 husart->Instance->CR2 = 0x0U; in HAL_USART_DeInit()
355 husart->Instance->CR3 = 0x0U; in HAL_USART_DeInit()
358 if (husart->MspDeInitCallback == NULL) in HAL_USART_DeInit()
360 husart->MspDeInitCallback = HAL_USART_MspDeInit; in HAL_USART_DeInit()
363 husart->MspDeInitCallback(husart); in HAL_USART_DeInit()
366 HAL_USART_MspDeInit(husart); in HAL_USART_DeInit()
369 husart->ErrorCode = HAL_USART_ERROR_NONE; in HAL_USART_DeInit()
370 husart->State = HAL_USART_STATE_RESET; in HAL_USART_DeInit()
373 __HAL_UNLOCK(husart); in HAL_USART_DeInit()
383 __weak void HAL_USART_MspInit(USART_HandleTypeDef *husart) in HAL_USART_MspInit() argument
386 UNUSED(husart); in HAL_USART_MspInit()
398 __weak void HAL_USART_MspDeInit(USART_HandleTypeDef *husart) in HAL_USART_MspDeInit() argument
401 UNUSED(husart); in HAL_USART_MspDeInit()
431 HAL_StatusTypeDef HAL_USART_RegisterCallback(USART_HandleTypeDef *husart, HAL_USART_CallbackIDTypeD… in HAL_USART_RegisterCallback() argument
439 husart->ErrorCode |= HAL_USART_ERROR_INVALID_CALLBACK; in HAL_USART_RegisterCallback()
444 if (husart->State == HAL_USART_STATE_READY) in HAL_USART_RegisterCallback()
449 husart->TxHalfCpltCallback = pCallback; in HAL_USART_RegisterCallback()
453 husart->TxCpltCallback = pCallback; in HAL_USART_RegisterCallback()
457 husart->RxHalfCpltCallback = pCallback; in HAL_USART_RegisterCallback()
461 husart->RxCpltCallback = pCallback; in HAL_USART_RegisterCallback()
465 husart->TxRxCpltCallback = pCallback; in HAL_USART_RegisterCallback()
469 husart->ErrorCallback = pCallback; in HAL_USART_RegisterCallback()
473 husart->AbortCpltCallback = pCallback; in HAL_USART_RegisterCallback()
477 husart->RxFifoFullCallback = pCallback; in HAL_USART_RegisterCallback()
481 husart->TxFifoEmptyCallback = pCallback; in HAL_USART_RegisterCallback()
485 husart->MspInitCallback = pCallback; in HAL_USART_RegisterCallback()
489 husart->MspDeInitCallback = pCallback; in HAL_USART_RegisterCallback()
494 husart->ErrorCode |= HAL_USART_ERROR_INVALID_CALLBACK; in HAL_USART_RegisterCallback()
501 else if (husart->State == HAL_USART_STATE_RESET) in HAL_USART_RegisterCallback()
506 husart->MspInitCallback = pCallback; in HAL_USART_RegisterCallback()
510 husart->MspDeInitCallback = pCallback; in HAL_USART_RegisterCallback()
515 husart->ErrorCode |= HAL_USART_ERROR_INVALID_CALLBACK; in HAL_USART_RegisterCallback()
525 husart->ErrorCode |= HAL_USART_ERROR_INVALID_CALLBACK; in HAL_USART_RegisterCallback()
555 HAL_StatusTypeDef HAL_USART_UnRegisterCallback(USART_HandleTypeDef *husart, HAL_USART_CallbackIDTyp… in HAL_USART_UnRegisterCallback() argument
559 if (HAL_USART_STATE_READY == husart->State) in HAL_USART_UnRegisterCallback()
564 …husart->TxHalfCpltCallback = HAL_USART_TxHalfCpltCallback; /* Legacy weak TxHalfCpl… in HAL_USART_UnRegisterCallback()
568 …husart->TxCpltCallback = HAL_USART_TxCpltCallback; /* Legacy weak TxCpltCall… in HAL_USART_UnRegisterCallback()
572 …husart->RxHalfCpltCallback = HAL_USART_RxHalfCpltCallback; /* Legacy weak RxHalfCplt… in HAL_USART_UnRegisterCallback()
576 …husart->RxCpltCallback = HAL_USART_RxCpltCallback; /* Legacy weak RxCpltCall… in HAL_USART_UnRegisterCallback()
580 …husart->TxRxCpltCallback = HAL_USART_TxRxCpltCallback; /* Legacy weak TxRxCpltCa… in HAL_USART_UnRegisterCallback()
584 …husart->ErrorCallback = HAL_USART_ErrorCallback; /* Legacy weak ErrorCallb… in HAL_USART_UnRegisterCallback()
588 …husart->AbortCpltCallback = HAL_USART_AbortCpltCallback; /* Legacy weak AbortCpltC… in HAL_USART_UnRegisterCallback()
592 …husart->RxFifoFullCallback = HAL_USARTEx_RxFifoFullCallback; /* Legacy weak RxFifoFull… in HAL_USART_UnRegisterCallback()
596 …husart->TxFifoEmptyCallback = HAL_USARTEx_TxFifoEmptyCallback; /* Legacy weak TxFifoEmpt… in HAL_USART_UnRegisterCallback()
600 …husart->MspInitCallback = HAL_USART_MspInit; /* Legacy weak MspInitCal… in HAL_USART_UnRegisterCallback()
604 …husart->MspDeInitCallback = HAL_USART_MspDeInit; /* Legacy weak MspDeInitC… in HAL_USART_UnRegisterCallback()
609 husart->ErrorCode |= HAL_USART_ERROR_INVALID_CALLBACK; in HAL_USART_UnRegisterCallback()
616 else if (HAL_USART_STATE_RESET == husart->State) in HAL_USART_UnRegisterCallback()
621 husart->MspInitCallback = HAL_USART_MspInit; in HAL_USART_UnRegisterCallback()
625 husart->MspDeInitCallback = HAL_USART_MspDeInit; in HAL_USART_UnRegisterCallback()
630 husart->ErrorCode |= HAL_USART_ERROR_INVALID_CALLBACK; in HAL_USART_UnRegisterCallback()
640 husart->ErrorCode |= HAL_USART_ERROR_INVALID_CALLBACK; in HAL_USART_UnRegisterCallback()
745 HAL_StatusTypeDef HAL_USART_Transmit(USART_HandleTypeDef *husart, const uint8_t *pTxData, uint16_t … in HAL_USART_Transmit() argument
752 if (husart->State == HAL_USART_STATE_READY) in HAL_USART_Transmit()
760 __HAL_LOCK(husart); in HAL_USART_Transmit()
762 husart->ErrorCode = HAL_USART_ERROR_NONE; in HAL_USART_Transmit()
763 husart->State = HAL_USART_STATE_BUSY_TX; in HAL_USART_Transmit()
768 husart->TxXferSize = Size; in HAL_USART_Transmit()
769 husart->TxXferCount = Size; in HAL_USART_Transmit()
772 …if ((husart->Init.WordLength == USART_WORDLENGTH_9B) && (husart->Init.Parity == USART_PARITY_NONE)) in HAL_USART_Transmit()
784 while (husart->TxXferCount > 0U) in HAL_USART_Transmit()
786 if (USART_WaitOnFlagUntilTimeout(husart, USART_FLAG_TXE, RESET, tickstart, Timeout) != HAL_OK) in HAL_USART_Transmit()
792 husart->Instance->TDR = (uint16_t)(*ptxdata16bits & 0x01FFU); in HAL_USART_Transmit()
797 husart->Instance->TDR = (uint8_t)(*ptxdata8bits & 0xFFU); in HAL_USART_Transmit()
801 husart->TxXferCount--; in HAL_USART_Transmit()
804 if (USART_WaitOnFlagUntilTimeout(husart, USART_FLAG_TC, RESET, tickstart, Timeout) != HAL_OK) in HAL_USART_Transmit()
810 __HAL_USART_CLEAR_FLAG(husart, USART_CLEAR_TCF); in HAL_USART_Transmit()
813 __HAL_USART_CLEAR_OREFLAG(husart); in HAL_USART_Transmit()
814 __HAL_USART_SEND_REQ(husart, USART_RXDATA_FLUSH_REQUEST); in HAL_USART_Transmit()
815 __HAL_USART_SEND_REQ(husart, USART_TXDATA_FLUSH_REQUEST); in HAL_USART_Transmit()
818 husart->State = HAL_USART_STATE_READY; in HAL_USART_Transmit()
821 __HAL_UNLOCK(husart); in HAL_USART_Transmit()
843 HAL_StatusTypeDef HAL_USART_Receive(USART_HandleTypeDef *husart, uint8_t *pRxData, uint16_t Size, u… in HAL_USART_Receive() argument
850 if (husart->State == HAL_USART_STATE_READY) in HAL_USART_Receive()
858 __HAL_LOCK(husart); in HAL_USART_Receive()
860 husart->ErrorCode = HAL_USART_ERROR_NONE; in HAL_USART_Receive()
861 husart->State = HAL_USART_STATE_BUSY_RX; in HAL_USART_Receive()
866 husart->RxXferSize = Size; in HAL_USART_Receive()
867 husart->RxXferCount = Size; in HAL_USART_Receive()
870 USART_MASK_COMPUTATION(husart); in HAL_USART_Receive()
871 uhMask = husart->Mask; in HAL_USART_Receive()
874 …if ((husart->Init.WordLength == USART_WORDLENGTH_9B) && (husart->Init.Parity == USART_PARITY_NONE)) in HAL_USART_Receive()
886 while (husart->RxXferCount > 0U) in HAL_USART_Receive()
888 if (husart->SlaveMode == USART_SLAVEMODE_DISABLE) in HAL_USART_Receive()
894 … if (USART_WaitOnFlagUntilTimeout(husart, USART_FLAG_TXE, RESET, tickstart, Timeout) != HAL_OK) in HAL_USART_Receive()
898 husart->Instance->TDR = (USART_DUMMY_DATA & (uint16_t)0x0FF); in HAL_USART_Receive()
902 … if (USART_WaitOnFlagUntilTimeout(husart, USART_FLAG_RXNE, RESET, tickstart, Timeout) != HAL_OK) in HAL_USART_Receive()
909 *prxdata16bits = (uint16_t)(husart->Instance->RDR & uhMask); in HAL_USART_Receive()
914 *prxdata8bits = (uint8_t)(husart->Instance->RDR & (uint8_t)(uhMask & 0xFFU)); in HAL_USART_Receive()
918 husart->RxXferCount--; in HAL_USART_Receive()
923 if (husart->SlaveMode == USART_SLAVEMODE_ENABLE) in HAL_USART_Receive()
925 __HAL_USART_CLEAR_UDRFLAG(husart); in HAL_USART_Receive()
926 __HAL_USART_SEND_REQ(husart, USART_TXDATA_FLUSH_REQUEST); in HAL_USART_Receive()
930 husart->State = HAL_USART_STATE_READY; in HAL_USART_Receive()
933 __HAL_UNLOCK(husart); in HAL_USART_Receive()
955 HAL_StatusTypeDef HAL_USART_TransmitReceive(USART_HandleTypeDef *husart, const uint8_t *pTxData, ui… in HAL_USART_TransmitReceive() argument
966 if (husart->State == HAL_USART_STATE_READY) in HAL_USART_TransmitReceive()
974 __HAL_LOCK(husart); in HAL_USART_TransmitReceive()
976 husart->ErrorCode = HAL_USART_ERROR_NONE; in HAL_USART_TransmitReceive()
977 husart->State = HAL_USART_STATE_BUSY_RX; in HAL_USART_TransmitReceive()
982 husart->RxXferSize = Size; in HAL_USART_TransmitReceive()
983 husart->TxXferSize = Size; in HAL_USART_TransmitReceive()
984 husart->TxXferCount = Size; in HAL_USART_TransmitReceive()
985 husart->RxXferCount = Size; in HAL_USART_TransmitReceive()
988 USART_MASK_COMPUTATION(husart); in HAL_USART_TransmitReceive()
989 uhMask = husart->Mask; in HAL_USART_TransmitReceive()
992 …if ((husart->Init.WordLength == USART_WORDLENGTH_9B) && (husart->Init.Parity == USART_PARITY_NONE)) in HAL_USART_TransmitReceive()
1007 if ((husart->TxXferCount == 0x01U) || (husart->SlaveMode == USART_SLAVEMODE_ENABLE)) in HAL_USART_TransmitReceive()
1010 if (USART_WaitOnFlagUntilTimeout(husart, USART_FLAG_TXE, RESET, tickstart, Timeout) != HAL_OK) in HAL_USART_TransmitReceive()
1016 husart->Instance->TDR = (uint16_t)(*ptxdata16bits & uhMask); in HAL_USART_TransmitReceive()
1021 husart->Instance->TDR = (uint8_t)(*ptxdata8bits & (uint8_t)(uhMask & 0xFFU)); in HAL_USART_TransmitReceive()
1025 husart->TxXferCount--; in HAL_USART_TransmitReceive()
1030 rxdatacount = husart->RxXferCount; in HAL_USART_TransmitReceive()
1031 while ((husart->TxXferCount > 0U) || (rxdatacount > 0U)) in HAL_USART_TransmitReceive()
1033 if (husart->TxXferCount > 0U) in HAL_USART_TransmitReceive()
1036 … if (USART_WaitOnFlagUntilTimeout(husart, USART_FLAG_TXE, RESET, tickstart, Timeout) != HAL_OK) in HAL_USART_TransmitReceive()
1042 husart->Instance->TDR = (uint16_t)(*ptxdata16bits & uhMask); in HAL_USART_TransmitReceive()
1047 husart->Instance->TDR = (uint8_t)(*ptxdata8bits & (uint8_t)(uhMask & 0xFFU)); in HAL_USART_TransmitReceive()
1051 husart->TxXferCount--; in HAL_USART_TransmitReceive()
1054 if (husart->RxXferCount > 0U) in HAL_USART_TransmitReceive()
1057 … if (USART_WaitOnFlagUntilTimeout(husart, USART_FLAG_RXNE, RESET, tickstart, Timeout) != HAL_OK) in HAL_USART_TransmitReceive()
1064 *prxdata16bits = (uint16_t)(husart->Instance->RDR & uhMask); in HAL_USART_TransmitReceive()
1069 *prxdata8bits = (uint8_t)(husart->Instance->RDR & (uint8_t)(uhMask & 0xFFU)); in HAL_USART_TransmitReceive()
1073 husart->RxXferCount--; in HAL_USART_TransmitReceive()
1075 rxdatacount = husart->RxXferCount; in HAL_USART_TransmitReceive()
1079 husart->State = HAL_USART_STATE_READY; in HAL_USART_TransmitReceive()
1082 __HAL_UNLOCK(husart); in HAL_USART_TransmitReceive()
1102 HAL_StatusTypeDef HAL_USART_Transmit_IT(USART_HandleTypeDef *husart, const uint8_t *pTxData, uint16… in HAL_USART_Transmit_IT() argument
1104 if (husart->State == HAL_USART_STATE_READY) in HAL_USART_Transmit_IT()
1112 __HAL_LOCK(husart); in HAL_USART_Transmit_IT()
1114 husart->pTxBuffPtr = pTxData; in HAL_USART_Transmit_IT()
1115 husart->TxXferSize = Size; in HAL_USART_Transmit_IT()
1116 husart->TxXferCount = Size; in HAL_USART_Transmit_IT()
1117 husart->TxISR = NULL; in HAL_USART_Transmit_IT()
1119 husart->ErrorCode = HAL_USART_ERROR_NONE; in HAL_USART_Transmit_IT()
1120 husart->State = HAL_USART_STATE_BUSY_TX; in HAL_USART_Transmit_IT()
1129 if (husart->FifoMode == USART_FIFOMODE_ENABLE) in HAL_USART_Transmit_IT()
1132 …if ((husart->Init.WordLength == USART_WORDLENGTH_9B) && (husart->Init.Parity == USART_PARITY_NONE)) in HAL_USART_Transmit_IT()
1134 husart->TxISR = USART_TxISR_16BIT_FIFOEN; in HAL_USART_Transmit_IT()
1138 husart->TxISR = USART_TxISR_8BIT_FIFOEN; in HAL_USART_Transmit_IT()
1142 __HAL_UNLOCK(husart); in HAL_USART_Transmit_IT()
1145 __HAL_USART_ENABLE_IT(husart, USART_IT_TXFT); in HAL_USART_Transmit_IT()
1150 …if ((husart->Init.WordLength == USART_WORDLENGTH_9B) && (husart->Init.Parity == USART_PARITY_NONE)) in HAL_USART_Transmit_IT()
1152 husart->TxISR = USART_TxISR_16BIT; in HAL_USART_Transmit_IT()
1156 husart->TxISR = USART_TxISR_8BIT; in HAL_USART_Transmit_IT()
1160 __HAL_UNLOCK(husart); in HAL_USART_Transmit_IT()
1163 __HAL_USART_ENABLE_IT(husart, USART_IT_TXE); in HAL_USART_Transmit_IT()
1185 HAL_StatusTypeDef HAL_USART_Receive_IT(USART_HandleTypeDef *husart, uint8_t *pRxData, uint16_t Size) in HAL_USART_Receive_IT() argument
1189 if (husart->State == HAL_USART_STATE_READY) in HAL_USART_Receive_IT()
1197 __HAL_LOCK(husart); in HAL_USART_Receive_IT()
1199 husart->pRxBuffPtr = pRxData; in HAL_USART_Receive_IT()
1200 husart->RxXferSize = Size; in HAL_USART_Receive_IT()
1201 husart->RxXferCount = Size; in HAL_USART_Receive_IT()
1202 husart->RxISR = NULL; in HAL_USART_Receive_IT()
1204 USART_MASK_COMPUTATION(husart); in HAL_USART_Receive_IT()
1206 husart->ErrorCode = HAL_USART_ERROR_NONE; in HAL_USART_Receive_IT()
1207 husart->State = HAL_USART_STATE_BUSY_RX; in HAL_USART_Receive_IT()
1210 SET_BIT(husart->Instance->CR3, USART_CR3_EIE); in HAL_USART_Receive_IT()
1213 if ((husart->FifoMode == USART_FIFOMODE_ENABLE) && (Size >= husart->NbRxDataToProcess)) in HAL_USART_Receive_IT()
1216 …if ((husart->Init.WordLength == USART_WORDLENGTH_9B) && (husart->Init.Parity == USART_PARITY_NONE)) in HAL_USART_Receive_IT()
1218 husart->RxISR = USART_RxISR_16BIT_FIFOEN; in HAL_USART_Receive_IT()
1222 husart->RxISR = USART_RxISR_8BIT_FIFOEN; in HAL_USART_Receive_IT()
1226 __HAL_UNLOCK(husart); in HAL_USART_Receive_IT()
1229 if (husart->Init.Parity != USART_PARITY_NONE) in HAL_USART_Receive_IT()
1231 SET_BIT(husart->Instance->CR1, USART_CR1_PEIE); in HAL_USART_Receive_IT()
1233 SET_BIT(husart->Instance->CR3, USART_CR3_RXFTIE); in HAL_USART_Receive_IT()
1238 …if ((husart->Init.WordLength == USART_WORDLENGTH_9B) && (husart->Init.Parity == USART_PARITY_NONE)) in HAL_USART_Receive_IT()
1240 husart->RxISR = USART_RxISR_16BIT; in HAL_USART_Receive_IT()
1244 husart->RxISR = USART_RxISR_8BIT; in HAL_USART_Receive_IT()
1248 __HAL_UNLOCK(husart); in HAL_USART_Receive_IT()
1251 if (husart->Init.Parity != USART_PARITY_NONE) in HAL_USART_Receive_IT()
1253 SET_BIT(husart->Instance->CR1, USART_CR1_PEIE | USART_CR1_RXNEIE_RXFNEIE); in HAL_USART_Receive_IT()
1257 SET_BIT(husart->Instance->CR1, USART_CR1_RXNEIE_RXFNEIE); in HAL_USART_Receive_IT()
1261 if (husart->SlaveMode == USART_SLAVEMODE_DISABLE) in HAL_USART_Receive_IT()
1267 if ((husart->FifoMode == USART_FIFOMODE_ENABLE) && (Size >= husart->NbRxDataToProcess)) in HAL_USART_Receive_IT()
1269 for (nb_dummy_data = husart->NbRxDataToProcess ; nb_dummy_data > 0U ; nb_dummy_data--) in HAL_USART_Receive_IT()
1271 husart->Instance->TDR = (USART_DUMMY_DATA & (uint16_t)0x00FF); in HAL_USART_Receive_IT()
1276 husart->Instance->TDR = (USART_DUMMY_DATA & (uint16_t)0x00FF); in HAL_USART_Receive_IT()
1299 HAL_StatusTypeDef HAL_USART_TransmitReceive_IT(USART_HandleTypeDef *husart, const uint8_t *pTxData,… in HAL_USART_TransmitReceive_IT() argument
1303 if (husart->State == HAL_USART_STATE_READY) in HAL_USART_TransmitReceive_IT()
1311 __HAL_LOCK(husart); in HAL_USART_TransmitReceive_IT()
1313 husart->pRxBuffPtr = pRxData; in HAL_USART_TransmitReceive_IT()
1314 husart->RxXferSize = Size; in HAL_USART_TransmitReceive_IT()
1315 husart->RxXferCount = Size; in HAL_USART_TransmitReceive_IT()
1316 husart->pTxBuffPtr = pTxData; in HAL_USART_TransmitReceive_IT()
1317 husart->TxXferSize = Size; in HAL_USART_TransmitReceive_IT()
1318 husart->TxXferCount = Size; in HAL_USART_TransmitReceive_IT()
1321 USART_MASK_COMPUTATION(husart); in HAL_USART_TransmitReceive_IT()
1323 husart->ErrorCode = HAL_USART_ERROR_NONE; in HAL_USART_TransmitReceive_IT()
1324 husart->State = HAL_USART_STATE_BUSY_TX_RX; in HAL_USART_TransmitReceive_IT()
1327 if ((husart->FifoMode == USART_FIFOMODE_ENABLE) && (Size >= husart->NbRxDataToProcess)) in HAL_USART_TransmitReceive_IT()
1330 …if ((husart->Init.WordLength == USART_WORDLENGTH_9B) && (husart->Init.Parity == USART_PARITY_NONE)) in HAL_USART_TransmitReceive_IT()
1332 husart->TxISR = USART_TxISR_16BIT_FIFOEN; in HAL_USART_TransmitReceive_IT()
1333 husart->RxISR = USART_RxISR_16BIT_FIFOEN; in HAL_USART_TransmitReceive_IT()
1337 husart->TxISR = USART_TxISR_8BIT_FIFOEN; in HAL_USART_TransmitReceive_IT()
1338 husart->RxISR = USART_RxISR_8BIT_FIFOEN; in HAL_USART_TransmitReceive_IT()
1342 __HAL_UNLOCK(husart); in HAL_USART_TransmitReceive_IT()
1345 SET_BIT(husart->Instance->CR3, USART_CR3_EIE); in HAL_USART_TransmitReceive_IT()
1347 if (husart->Init.Parity != USART_PARITY_NONE) in HAL_USART_TransmitReceive_IT()
1350 SET_BIT(husart->Instance->CR1, USART_CR1_PEIE); in HAL_USART_TransmitReceive_IT()
1354 SET_BIT(husart->Instance->CR3, (USART_CR3_TXFTIE | USART_CR3_RXFTIE)); in HAL_USART_TransmitReceive_IT()
1358 …if ((husart->Init.WordLength == USART_WORDLENGTH_9B) && (husart->Init.Parity == USART_PARITY_NONE)) in HAL_USART_TransmitReceive_IT()
1360 husart->TxISR = USART_TxISR_16BIT; in HAL_USART_TransmitReceive_IT()
1361 husart->RxISR = USART_RxISR_16BIT; in HAL_USART_TransmitReceive_IT()
1365 husart->TxISR = USART_TxISR_8BIT; in HAL_USART_TransmitReceive_IT()
1366 husart->RxISR = USART_RxISR_8BIT; in HAL_USART_TransmitReceive_IT()
1370 __HAL_UNLOCK(husart); in HAL_USART_TransmitReceive_IT()
1373 SET_BIT(husart->Instance->CR3, USART_CR3_EIE); in HAL_USART_TransmitReceive_IT()
1376 if (husart->Init.Parity != USART_PARITY_NONE) in HAL_USART_TransmitReceive_IT()
1378 SET_BIT(husart->Instance->CR1, USART_CR1_PEIE | USART_CR1_RXNEIE_RXFNEIE); in HAL_USART_TransmitReceive_IT()
1382 SET_BIT(husart->Instance->CR1, USART_CR1_RXNEIE_RXFNEIE); in HAL_USART_TransmitReceive_IT()
1386 SET_BIT(husart->Instance->CR1, USART_CR1_TXEIE_TXFNFIE); in HAL_USART_TransmitReceive_IT()
1408 HAL_StatusTypeDef HAL_USART_Transmit_DMA(USART_HandleTypeDef *husart, const uint8_t *pTxData, uint1… in HAL_USART_Transmit_DMA() argument
1414 if (husart->State == HAL_USART_STATE_READY) in HAL_USART_Transmit_DMA()
1422 __HAL_LOCK(husart); in HAL_USART_Transmit_DMA()
1424 husart->pTxBuffPtr = pTxData; in HAL_USART_Transmit_DMA()
1425 husart->TxXferSize = Size; in HAL_USART_Transmit_DMA()
1426 husart->TxXferCount = Size; in HAL_USART_Transmit_DMA()
1428 husart->ErrorCode = HAL_USART_ERROR_NONE; in HAL_USART_Transmit_DMA()
1429 husart->State = HAL_USART_STATE_BUSY_TX; in HAL_USART_Transmit_DMA()
1431 if (husart->hdmatx != NULL) in HAL_USART_Transmit_DMA()
1434 husart->hdmatx->XferCpltCallback = USART_DMATransmitCplt; in HAL_USART_Transmit_DMA()
1437 husart->hdmatx->XferHalfCpltCallback = USART_DMATxHalfCplt; in HAL_USART_Transmit_DMA()
1440 husart->hdmatx->XferErrorCallback = USART_DMAError; in HAL_USART_Transmit_DMA()
1444 …if ((husart->Init.WordLength == USART_WORDLENGTH_9B) && (husart->Init.Parity == USART_PARITY_NONE)) in HAL_USART_Transmit_DMA()
1452 if ((husart->hdmatx->Mode & DMA_LINKEDLIST) == DMA_LINKEDLIST) in HAL_USART_Transmit_DMA()
1454 … if ((husart->hdmatx->LinkedListQueue != NULL) && (husart->hdmatx->LinkedListQueue->Head != NULL)) in HAL_USART_Transmit_DMA()
1457 husart->hdmatx->LinkedListQueue->Head->LinkRegisters[NODE_CBR1_DEFAULT_OFFSET] = nbByte; in HAL_USART_Transmit_DMA()
1460 …husart->hdmatx->LinkedListQueue->Head->LinkRegisters[NODE_CSAR_DEFAULT_OFFSET] = *(const uint32_t … in HAL_USART_Transmit_DMA()
1463 husart->hdmatx->LinkedListQueue->Head->LinkRegisters[NODE_CDAR_DEFAULT_OFFSET] = in HAL_USART_Transmit_DMA()
1464 (uint32_t)&husart->Instance->TDR; in HAL_USART_Transmit_DMA()
1467 status = HAL_DMAEx_List_Start_IT(husart->hdmatx); in HAL_USART_Transmit_DMA()
1478 …status = HAL_DMA_Start_IT(husart->hdmatx, *(const uint32_t *)tmp, (uint32_t)&husart->Instance->TDR… in HAL_USART_Transmit_DMA()
1485 __HAL_USART_CLEAR_FLAG(husart, USART_CLEAR_TCF); in HAL_USART_Transmit_DMA()
1488 __HAL_UNLOCK(husart); in HAL_USART_Transmit_DMA()
1492 SET_BIT(husart->Instance->CR3, USART_CR3_DMAT); in HAL_USART_Transmit_DMA()
1499 husart->ErrorCode = HAL_USART_ERROR_DMA; in HAL_USART_Transmit_DMA()
1502 __HAL_UNLOCK(husart); in HAL_USART_Transmit_DMA()
1505 husart->State = HAL_USART_STATE_READY; in HAL_USART_Transmit_DMA()
1529 HAL_StatusTypeDef HAL_USART_Receive_DMA(USART_HandleTypeDef *husart, uint8_t *pRxData, uint16_t Siz… in HAL_USART_Receive_DMA() argument
1536 if (husart->State == HAL_USART_STATE_READY) in HAL_USART_Receive_DMA()
1544 __HAL_LOCK(husart); in HAL_USART_Receive_DMA()
1546 husart->pRxBuffPtr = pRxData; in HAL_USART_Receive_DMA()
1547 husart->RxXferSize = Size; in HAL_USART_Receive_DMA()
1548 husart->pTxBuffPtr = pRxData; in HAL_USART_Receive_DMA()
1549 husart->TxXferSize = Size; in HAL_USART_Receive_DMA()
1551 husart->ErrorCode = HAL_USART_ERROR_NONE; in HAL_USART_Receive_DMA()
1552 husart->State = HAL_USART_STATE_BUSY_RX; in HAL_USART_Receive_DMA()
1554 if (husart->hdmarx != NULL) in HAL_USART_Receive_DMA()
1557 husart->hdmarx->XferCpltCallback = USART_DMAReceiveCplt; in HAL_USART_Receive_DMA()
1560 husart->hdmarx->XferHalfCpltCallback = USART_DMARxHalfCplt; in HAL_USART_Receive_DMA()
1563 husart->hdmarx->XferErrorCallback = USART_DMAError; in HAL_USART_Receive_DMA()
1567 …if ((husart->Init.WordLength == USART_WORDLENGTH_9B) && (husart->Init.Parity == USART_PARITY_NONE)) in HAL_USART_Receive_DMA()
1573 if ((husart->hdmarx->Mode & DMA_LINKEDLIST) == DMA_LINKEDLIST) in HAL_USART_Receive_DMA()
1575 … if ((husart->hdmarx->LinkedListQueue != NULL) && (husart->hdmarx->LinkedListQueue->Head != NULL)) in HAL_USART_Receive_DMA()
1578 husart->hdmarx->LinkedListQueue->Head->LinkRegisters[NODE_CBR1_DEFAULT_OFFSET] = nbByte; in HAL_USART_Receive_DMA()
1581 husart->hdmarx->LinkedListQueue->Head->LinkRegisters[NODE_CSAR_DEFAULT_OFFSET] = in HAL_USART_Receive_DMA()
1582 (uint32_t)&husart->Instance->RDR; in HAL_USART_Receive_DMA()
1585 … husart->hdmarx->LinkedListQueue->Head->LinkRegisters[NODE_CDAR_DEFAULT_OFFSET] = *(uint32_t *)tmp; in HAL_USART_Receive_DMA()
1588 status = HAL_DMAEx_List_Start_IT(husart->hdmarx); in HAL_USART_Receive_DMA()
1599 …status = HAL_DMA_Start_IT(husart->hdmarx, (uint32_t)&husart->Instance->RDR, *(uint32_t *)tmp, nbBy… in HAL_USART_Receive_DMA()
1604 (husart->SlaveMode == USART_SLAVEMODE_DISABLE)) in HAL_USART_Receive_DMA()
1611 if (husart->hdmatx != NULL) in HAL_USART_Receive_DMA()
1613 husart->hdmatx->XferErrorCallback = NULL; in HAL_USART_Receive_DMA()
1614 husart->hdmatx->XferHalfCpltCallback = NULL; in HAL_USART_Receive_DMA()
1615 husart->hdmatx->XferCpltCallback = NULL; in HAL_USART_Receive_DMA()
1618 if ((husart->hdmatx->Mode & DMA_LINKEDLIST) == DMA_LINKEDLIST) in HAL_USART_Receive_DMA()
1620 … if ((husart->hdmatx->LinkedListQueue != NULL) && (husart->hdmatx->LinkedListQueue->Head != NULL)) in HAL_USART_Receive_DMA()
1623 husart->hdmatx->LinkedListQueue->Head->LinkRegisters[NODE_CBR1_DEFAULT_OFFSET] = nbByte; in HAL_USART_Receive_DMA()
1626 … husart->hdmatx->LinkedListQueue->Head->LinkRegisters[NODE_CSAR_DEFAULT_OFFSET] = *(uint32_t *)tmp; in HAL_USART_Receive_DMA()
1629 husart->hdmatx->LinkedListQueue->Head->LinkRegisters[NODE_CDAR_DEFAULT_OFFSET] = in HAL_USART_Receive_DMA()
1630 (uint32_t)&husart->Instance->TDR; in HAL_USART_Receive_DMA()
1633 status = HAL_DMAEx_List_Start_IT(husart->hdmatx); in HAL_USART_Receive_DMA()
1643 …status = HAL_DMA_Start_IT(husart->hdmatx, *(uint32_t *)tmp, (uint32_t)&husart->Instance->TDR, nbBy… in HAL_USART_Receive_DMA()
1651 __HAL_UNLOCK(husart); in HAL_USART_Receive_DMA()
1653 if (husart->Init.Parity != USART_PARITY_NONE) in HAL_USART_Receive_DMA()
1656 SET_BIT(husart->Instance->CR1, USART_CR1_PEIE); in HAL_USART_Receive_DMA()
1660 SET_BIT(husart->Instance->CR3, USART_CR3_EIE); in HAL_USART_Receive_DMA()
1664 SET_BIT(husart->Instance->CR3, USART_CR3_DMAR); in HAL_USART_Receive_DMA()
1668 SET_BIT(husart->Instance->CR3, USART_CR3_DMAT); in HAL_USART_Receive_DMA()
1674 if ((husart->hdmarx != NULL) && ((husart->hdmarx->Mode & DMA_LINKEDLIST) != DMA_LINKEDLIST)) in HAL_USART_Receive_DMA()
1676 status = HAL_DMA_Abort(husart->hdmarx); in HAL_USART_Receive_DMA()
1683 husart->ErrorCode = HAL_USART_ERROR_DMA; in HAL_USART_Receive_DMA()
1686 __HAL_UNLOCK(husart); in HAL_USART_Receive_DMA()
1689 husart->State = HAL_USART_STATE_READY; in HAL_USART_Receive_DMA()
1712 HAL_StatusTypeDef HAL_USART_TransmitReceive_DMA(USART_HandleTypeDef *husart, const uint8_t *pTxData… in HAL_USART_TransmitReceive_DMA() argument
1719 if (husart->State == HAL_USART_STATE_READY) in HAL_USART_TransmitReceive_DMA()
1727 __HAL_LOCK(husart); in HAL_USART_TransmitReceive_DMA()
1729 husart->pRxBuffPtr = pRxData; in HAL_USART_TransmitReceive_DMA()
1730 husart->RxXferSize = Size; in HAL_USART_TransmitReceive_DMA()
1731 husart->pTxBuffPtr = pTxData; in HAL_USART_TransmitReceive_DMA()
1732 husart->TxXferSize = Size; in HAL_USART_TransmitReceive_DMA()
1734 husart->ErrorCode = HAL_USART_ERROR_NONE; in HAL_USART_TransmitReceive_DMA()
1735 husart->State = HAL_USART_STATE_BUSY_TX_RX; in HAL_USART_TransmitReceive_DMA()
1737 if ((husart->hdmarx != NULL) && (husart->hdmatx != NULL)) in HAL_USART_TransmitReceive_DMA()
1740 husart->hdmarx->XferCpltCallback = USART_DMAReceiveCplt; in HAL_USART_TransmitReceive_DMA()
1743 husart->hdmarx->XferHalfCpltCallback = USART_DMARxHalfCplt; in HAL_USART_TransmitReceive_DMA()
1746 husart->hdmatx->XferCpltCallback = USART_DMATransmitCplt; in HAL_USART_TransmitReceive_DMA()
1749 husart->hdmatx->XferHalfCpltCallback = USART_DMATxHalfCplt; in HAL_USART_TransmitReceive_DMA()
1752 husart->hdmatx->XferErrorCallback = USART_DMAError; in HAL_USART_TransmitReceive_DMA()
1755 husart->hdmarx->XferErrorCallback = USART_DMAError; in HAL_USART_TransmitReceive_DMA()
1759 …if ((husart->Init.WordLength == USART_WORDLENGTH_9B) && (husart->Init.Parity == USART_PARITY_NONE)) in HAL_USART_TransmitReceive_DMA()
1766 if ((husart->hdmarx->Mode & DMA_LINKEDLIST) == DMA_LINKEDLIST) in HAL_USART_TransmitReceive_DMA()
1768 … if ((husart->hdmarx->LinkedListQueue != NULL) && (husart->hdmarx->LinkedListQueue->Head != NULL)) in HAL_USART_TransmitReceive_DMA()
1771 husart->hdmarx->LinkedListQueue->Head->LinkRegisters[NODE_CBR1_DEFAULT_OFFSET] = nbByte; in HAL_USART_TransmitReceive_DMA()
1774 husart->hdmarx->LinkedListQueue->Head->LinkRegisters[NODE_CSAR_DEFAULT_OFFSET] = in HAL_USART_TransmitReceive_DMA()
1775 (uint32_t)&husart->Instance->RDR; in HAL_USART_TransmitReceive_DMA()
1778 …husart->hdmarx->LinkedListQueue->Head->LinkRegisters[NODE_CDAR_DEFAULT_OFFSET] = *(const uint32_t … in HAL_USART_TransmitReceive_DMA()
1781 status = HAL_DMAEx_List_Start_IT(husart->hdmarx); in HAL_USART_TransmitReceive_DMA()
1792 …status = HAL_DMA_Start_IT(husart->hdmarx, (uint32_t)&husart->Instance->RDR, *(const uint32_t *)tmp… in HAL_USART_TransmitReceive_DMA()
1801 if ((husart->hdmatx->Mode & DMA_LINKEDLIST) == DMA_LINKEDLIST) in HAL_USART_TransmitReceive_DMA()
1803 … if ((husart->hdmatx->LinkedListQueue != NULL) && (husart->hdmatx->LinkedListQueue->Head != NULL)) in HAL_USART_TransmitReceive_DMA()
1806 husart->hdmatx->LinkedListQueue->Head->LinkRegisters[NODE_CBR1_DEFAULT_OFFSET] = nbByte; in HAL_USART_TransmitReceive_DMA()
1809 …husart->hdmatx->LinkedListQueue->Head->LinkRegisters[NODE_CSAR_DEFAULT_OFFSET] = *(const uint32_t … in HAL_USART_TransmitReceive_DMA()
1812 husart->hdmatx->LinkedListQueue->Head->LinkRegisters[NODE_CDAR_DEFAULT_OFFSET] = in HAL_USART_TransmitReceive_DMA()
1813 (uint32_t)&husart->Instance->TDR; in HAL_USART_TransmitReceive_DMA()
1816 status = HAL_DMAEx_List_Start_IT(husart->hdmatx); in HAL_USART_TransmitReceive_DMA()
1826 …status = HAL_DMA_Start_IT(husart->hdmatx, *(const uint32_t *)tmp, (uint32_t)&husart->Instance->TDR… in HAL_USART_TransmitReceive_DMA()
1838 __HAL_UNLOCK(husart); in HAL_USART_TransmitReceive_DMA()
1840 if (husart->Init.Parity != USART_PARITY_NONE) in HAL_USART_TransmitReceive_DMA()
1843 SET_BIT(husart->Instance->CR1, USART_CR1_PEIE); in HAL_USART_TransmitReceive_DMA()
1847 SET_BIT(husart->Instance->CR3, USART_CR3_EIE); in HAL_USART_TransmitReceive_DMA()
1850 __HAL_USART_CLEAR_FLAG(husart, USART_CLEAR_TCF); in HAL_USART_TransmitReceive_DMA()
1854 SET_BIT(husart->Instance->CR3, USART_CR3_DMAR); in HAL_USART_TransmitReceive_DMA()
1858 SET_BIT(husart->Instance->CR3, USART_CR3_DMAT); in HAL_USART_TransmitReceive_DMA()
1864 if ((husart->hdmarx != NULL) && ((husart->hdmarx->Mode & DMA_LINKEDLIST) != DMA_LINKEDLIST)) in HAL_USART_TransmitReceive_DMA()
1866 status = HAL_DMA_Abort(husart->hdmarx); in HAL_USART_TransmitReceive_DMA()
1873 husart->ErrorCode = HAL_USART_ERROR_DMA; in HAL_USART_TransmitReceive_DMA()
1876 __HAL_UNLOCK(husart); in HAL_USART_TransmitReceive_DMA()
1879 husart->State = HAL_USART_STATE_READY; in HAL_USART_TransmitReceive_DMA()
1895 HAL_StatusTypeDef HAL_USART_DMAPause(USART_HandleTypeDef *husart) in HAL_USART_DMAPause() argument
1897 const HAL_USART_StateTypeDef state = husart->State; in HAL_USART_DMAPause()
1900 __HAL_LOCK(husart); in HAL_USART_DMAPause()
1902 if ((HAL_IS_BIT_SET(husart->Instance->CR3, USART_CR3_DMAT)) && in HAL_USART_DMAPause()
1906 if (husart->hdmatx != NULL) in HAL_USART_DMAPause()
1910 husart->hdmatx->XferSuspendCallback = NULL; in HAL_USART_DMAPause()
1912 if (HAL_DMAEx_Suspend(husart->hdmatx) != HAL_OK) in HAL_USART_DMAPause()
1914 if (HAL_DMA_GetError(husart->hdmatx) == HAL_DMA_ERROR_TIMEOUT) in HAL_USART_DMAPause()
1917 husart->ErrorCode = HAL_USART_ERROR_DMA; in HAL_USART_DMAPause()
1928 CLEAR_BIT(husart->Instance->CR1, USART_CR1_PEIE); in HAL_USART_DMAPause()
1929 CLEAR_BIT(husart->Instance->CR3, USART_CR3_EIE); in HAL_USART_DMAPause()
1933 husart->hdmarx->XferSuspendCallback = NULL; in HAL_USART_DMAPause()
1935 if (HAL_DMAEx_Suspend(husart->hdmarx) != HAL_OK) in HAL_USART_DMAPause()
1937 if (HAL_DMA_GetError(husart->hdmarx) == HAL_DMA_ERROR_TIMEOUT) in HAL_USART_DMAPause()
1940 husart->ErrorCode = HAL_USART_ERROR_DMA; in HAL_USART_DMAPause()
1950 husart->hdmatx->XferSuspendCallback = NULL; in HAL_USART_DMAPause()
1952 if (HAL_DMAEx_Suspend(husart->hdmatx) != HAL_OK) in HAL_USART_DMAPause()
1954 if (HAL_DMA_GetError(husart->hdmatx) == HAL_DMA_ERROR_TIMEOUT) in HAL_USART_DMAPause()
1957 husart->ErrorCode = HAL_USART_ERROR_DMA; in HAL_USART_DMAPause()
1970 __HAL_UNLOCK(husart); in HAL_USART_DMAPause()
1980 HAL_StatusTypeDef HAL_USART_DMAResume(USART_HandleTypeDef *husart) in HAL_USART_DMAResume() argument
1982 const HAL_USART_StateTypeDef state = husart->State; in HAL_USART_DMAResume()
1985 __HAL_LOCK(husart); in HAL_USART_DMAResume()
1990 if (husart->hdmatx != NULL) in HAL_USART_DMAResume()
1992 if (HAL_DMAEx_Resume(husart->hdmatx) != HAL_OK) in HAL_USART_DMAResume()
1995 husart->ErrorCode = HAL_USART_ERROR_DMA; in HAL_USART_DMAResume()
2005 __HAL_USART_CLEAR_FLAG(husart, USART_CLEAR_OREF); in HAL_USART_DMAResume()
2008 if (husart->Init.Parity != USART_PARITY_NONE) in HAL_USART_DMAResume()
2010 SET_BIT(husart->Instance->CR1, USART_CR1_PEIE); in HAL_USART_DMAResume()
2012 SET_BIT(husart->Instance->CR3, USART_CR3_EIE); in HAL_USART_DMAResume()
2015 if (husart->hdmarx != NULL) in HAL_USART_DMAResume()
2017 if (HAL_DMAEx_Resume(husart->hdmarx) != HAL_OK) in HAL_USART_DMAResume()
2020 husart->ErrorCode = HAL_USART_ERROR_DMA; in HAL_USART_DMAResume()
2029 if (husart->hdmatx != NULL) in HAL_USART_DMAResume()
2031 if (HAL_DMAEx_Resume(husart->hdmatx) != HAL_OK) in HAL_USART_DMAResume()
2034 husart->ErrorCode = HAL_USART_ERROR_DMA; in HAL_USART_DMAResume()
2047 __HAL_UNLOCK(husart); in HAL_USART_DMAResume()
2057 HAL_StatusTypeDef HAL_USART_DMAStop(USART_HandleTypeDef *husart) in HAL_USART_DMAStop() argument
2067 CLEAR_BIT(husart->Instance->CR3, USART_CR3_DMAT); in HAL_USART_DMAStop()
2068 CLEAR_BIT(husart->Instance->CR3, USART_CR3_DMAR); in HAL_USART_DMAStop()
2071 if (husart->hdmatx != NULL) in HAL_USART_DMAStop()
2073 if (HAL_DMA_Abort(husart->hdmatx) != HAL_OK) in HAL_USART_DMAStop()
2075 if (HAL_DMA_GetError(husart->hdmatx) == HAL_DMA_ERROR_TIMEOUT) in HAL_USART_DMAStop()
2078 husart->ErrorCode = HAL_USART_ERROR_DMA; in HAL_USART_DMAStop()
2085 if (husart->hdmarx != NULL) in HAL_USART_DMAStop()
2087 if (HAL_DMA_Abort(husart->hdmarx) != HAL_OK) in HAL_USART_DMAStop()
2089 if (HAL_DMA_GetError(husart->hdmarx) == HAL_DMA_ERROR_TIMEOUT) in HAL_USART_DMAStop()
2092 husart->ErrorCode = HAL_USART_ERROR_DMA; in HAL_USART_DMAStop()
2099 USART_EndTransfer(husart); in HAL_USART_DMAStop()
2100 husart->State = HAL_USART_STATE_READY; in HAL_USART_DMAStop()
2118 HAL_StatusTypeDef HAL_USART_Abort(USART_HandleTypeDef *husart) in HAL_USART_Abort() argument
2121 …CLEAR_BIT(husart->Instance->CR1, (USART_CR1_RXNEIE_RXFNEIE | USART_CR1_PEIE | USART_CR1_TXEIE_TXFN… in HAL_USART_Abort()
2123 CLEAR_BIT(husart->Instance->CR3, (USART_CR3_EIE | USART_CR3_RXFTIE | USART_CR3_TXFTIE)); in HAL_USART_Abort()
2127 if (HAL_IS_BIT_SET(husart->Instance->CR3, USART_CR3_DMAT)) in HAL_USART_Abort()
2130 CLEAR_BIT(husart->Instance->CR3, USART_CR3_DMAT); in HAL_USART_Abort()
2133 if (husart->hdmatx != NULL) in HAL_USART_Abort()
2137 husart->hdmatx->XferAbortCallback = NULL; in HAL_USART_Abort()
2139 if (HAL_DMA_Abort(husart->hdmatx) != HAL_OK) in HAL_USART_Abort()
2141 if (HAL_DMA_GetError(husart->hdmatx) == HAL_DMA_ERROR_TIMEOUT) in HAL_USART_Abort()
2144 husart->ErrorCode = HAL_USART_ERROR_DMA; in HAL_USART_Abort()
2153 if (HAL_IS_BIT_SET(husart->Instance->CR3, USART_CR3_DMAR)) in HAL_USART_Abort()
2156 CLEAR_BIT(husart->Instance->CR3, USART_CR3_DMAR); in HAL_USART_Abort()
2159 if (husart->hdmarx != NULL) in HAL_USART_Abort()
2163 husart->hdmarx->XferAbortCallback = NULL; in HAL_USART_Abort()
2165 if (HAL_DMA_Abort(husart->hdmarx) != HAL_OK) in HAL_USART_Abort()
2167 if (HAL_DMA_GetError(husart->hdmarx) == HAL_DMA_ERROR_TIMEOUT) in HAL_USART_Abort()
2170 husart->ErrorCode = HAL_USART_ERROR_DMA; in HAL_USART_Abort()
2180 husart->TxXferCount = 0U; in HAL_USART_Abort()
2181 husart->RxXferCount = 0U; in HAL_USART_Abort()
2184 …__HAL_USART_CLEAR_FLAG(husart, USART_CLEAR_OREF | USART_CLEAR_NEF | USART_CLEAR_PEF | USART_CLEAR_… in HAL_USART_Abort()
2187 if (husart->FifoMode == USART_FIFOMODE_ENABLE) in HAL_USART_Abort()
2189 __HAL_USART_SEND_REQ(husart, USART_TXDATA_FLUSH_REQUEST); in HAL_USART_Abort()
2193 __HAL_USART_SEND_REQ(husart, USART_RXDATA_FLUSH_REQUEST); in HAL_USART_Abort()
2196 husart->State = HAL_USART_STATE_READY; in HAL_USART_Abort()
2199 husart->ErrorCode = HAL_USART_ERROR_NONE; in HAL_USART_Abort()
2218 HAL_StatusTypeDef HAL_USART_Abort_IT(USART_HandleTypeDef *husart) in HAL_USART_Abort_IT() argument
2223 …CLEAR_BIT(husart->Instance->CR1, (USART_CR1_RXNEIE_RXFNEIE | USART_CR1_PEIE | USART_CR1_TXEIE_TXFN… in HAL_USART_Abort_IT()
2225 CLEAR_BIT(husart->Instance->CR3, (USART_CR3_EIE | USART_CR3_RXFTIE | USART_CR3_TXFTIE)); in HAL_USART_Abort_IT()
2231 if (husart->hdmatx != NULL) in HAL_USART_Abort_IT()
2235 if (HAL_IS_BIT_SET(husart->Instance->CR3, USART_CR3_DMAT)) in HAL_USART_Abort_IT()
2237 husart->hdmatx->XferAbortCallback = USART_DMATxAbortCallback; in HAL_USART_Abort_IT()
2241 husart->hdmatx->XferAbortCallback = NULL; in HAL_USART_Abort_IT()
2245 if (husart->hdmarx != NULL) in HAL_USART_Abort_IT()
2249 if (HAL_IS_BIT_SET(husart->Instance->CR3, USART_CR3_DMAR)) in HAL_USART_Abort_IT()
2251 husart->hdmarx->XferAbortCallback = USART_DMARxAbortCallback; in HAL_USART_Abort_IT()
2255 husart->hdmarx->XferAbortCallback = NULL; in HAL_USART_Abort_IT()
2260 if (HAL_IS_BIT_SET(husart->Instance->CR3, USART_CR3_DMAT)) in HAL_USART_Abort_IT()
2263 CLEAR_BIT(husart->Instance->CR3, USART_CR3_DMAT); in HAL_USART_Abort_IT()
2266 if (husart->hdmatx != NULL) in HAL_USART_Abort_IT()
2272 if (HAL_DMA_Abort_IT(husart->hdmatx) != HAL_OK) in HAL_USART_Abort_IT()
2274 husart->hdmatx->XferAbortCallback = NULL; in HAL_USART_Abort_IT()
2284 if (HAL_IS_BIT_SET(husart->Instance->CR3, USART_CR3_DMAR)) in HAL_USART_Abort_IT()
2287 CLEAR_BIT(husart->Instance->CR3, USART_CR3_DMAR); in HAL_USART_Abort_IT()
2290 if (husart->hdmarx != NULL) in HAL_USART_Abort_IT()
2296 if (HAL_DMA_Abort_IT(husart->hdmarx) != HAL_OK) in HAL_USART_Abort_IT()
2298 husart->hdmarx->XferAbortCallback = NULL; in HAL_USART_Abort_IT()
2313 husart->TxXferCount = 0U; in HAL_USART_Abort_IT()
2314 husart->RxXferCount = 0U; in HAL_USART_Abort_IT()
2317 husart->ErrorCode = HAL_USART_ERROR_NONE; in HAL_USART_Abort_IT()
2320 …__HAL_USART_CLEAR_FLAG(husart, USART_CLEAR_OREF | USART_CLEAR_NEF | USART_CLEAR_PEF | USART_CLEAR_… in HAL_USART_Abort_IT()
2323 if (husart->FifoMode == USART_FIFOMODE_ENABLE) in HAL_USART_Abort_IT()
2325 __HAL_USART_SEND_REQ(husart, USART_TXDATA_FLUSH_REQUEST); in HAL_USART_Abort_IT()
2329 __HAL_USART_SEND_REQ(husart, USART_RXDATA_FLUSH_REQUEST); in HAL_USART_Abort_IT()
2332 husart->State = HAL_USART_STATE_READY; in HAL_USART_Abort_IT()
2337 husart->AbortCpltCallback(husart); in HAL_USART_Abort_IT()
2340 HAL_USART_AbortCpltCallback(husart); in HAL_USART_Abort_IT()
2352 void HAL_USART_IRQHandler(USART_HandleTypeDef *husart) in HAL_USART_IRQHandler() argument
2354 uint32_t isrflags = READ_REG(husart->Instance->ISR); in HAL_USART_IRQHandler()
2355 uint32_t cr1its = READ_REG(husart->Instance->CR1); in HAL_USART_IRQHandler()
2356 uint32_t cr3its = READ_REG(husart->Instance->CR3); in HAL_USART_IRQHandler()
2371 if (husart->RxISR != NULL) in HAL_USART_IRQHandler()
2373 husart->RxISR(husart); in HAL_USART_IRQHandler()
2387 __HAL_USART_CLEAR_IT(husart, USART_CLEAR_PEF); in HAL_USART_IRQHandler()
2389 husart->ErrorCode |= HAL_USART_ERROR_PE; in HAL_USART_IRQHandler()
2395 __HAL_USART_CLEAR_IT(husart, USART_CLEAR_FEF); in HAL_USART_IRQHandler()
2397 husart->ErrorCode |= HAL_USART_ERROR_FE; in HAL_USART_IRQHandler()
2403 __HAL_USART_CLEAR_IT(husart, USART_CLEAR_NEF); in HAL_USART_IRQHandler()
2405 husart->ErrorCode |= HAL_USART_ERROR_NE; in HAL_USART_IRQHandler()
2413 __HAL_USART_CLEAR_IT(husart, USART_CLEAR_OREF); in HAL_USART_IRQHandler()
2415 husart->ErrorCode |= HAL_USART_ERROR_ORE; in HAL_USART_IRQHandler()
2421 __HAL_USART_CLEAR_IT(husart, USART_CLEAR_RTOF); in HAL_USART_IRQHandler()
2423 husart->ErrorCode |= HAL_USART_ERROR_RTO; in HAL_USART_IRQHandler()
2430 if (husart->State == HAL_USART_STATE_BUSY_RX) in HAL_USART_IRQHandler()
2432 __HAL_USART_CLEAR_UDRFLAG(husart); in HAL_USART_IRQHandler()
2437 __HAL_USART_CLEAR_UDRFLAG(husart); in HAL_USART_IRQHandler()
2438 husart->ErrorCode |= HAL_USART_ERROR_UDR; in HAL_USART_IRQHandler()
2443 if (husart->ErrorCode != HAL_USART_ERROR_NONE) in HAL_USART_IRQHandler()
2450 if (husart->RxISR != NULL) in HAL_USART_IRQHandler()
2452 husart->RxISR(husart); in HAL_USART_IRQHandler()
2458 errorcode = husart->ErrorCode & HAL_USART_ERROR_ORE; in HAL_USART_IRQHandler()
2459 if ((HAL_IS_BIT_SET(husart->Instance->CR3, USART_CR3_DMAR)) || in HAL_USART_IRQHandler()
2465 USART_EndTransfer(husart); in HAL_USART_IRQHandler()
2469 if (HAL_IS_BIT_SET(husart->Instance->CR3, USART_CR3_DMAR)) in HAL_USART_IRQHandler()
2472 CLEAR_BIT(husart->Instance->CR3, USART_CR3_DMAR | USART_CR3_DMAR); in HAL_USART_IRQHandler()
2475 if (husart->hdmatx != NULL) in HAL_USART_IRQHandler()
2479 husart->hdmatx->XferAbortCallback = NULL; in HAL_USART_IRQHandler()
2482 (void)HAL_DMA_Abort_IT(husart->hdmatx); in HAL_USART_IRQHandler()
2486 if (husart->hdmarx != NULL) in HAL_USART_IRQHandler()
2490 husart->hdmarx->XferAbortCallback = USART_DMAAbortOnError; in HAL_USART_IRQHandler()
2493 if (HAL_DMA_Abort_IT(husart->hdmarx) != HAL_OK) in HAL_USART_IRQHandler()
2496 husart->hdmarx->XferAbortCallback(husart->hdmarx); in HAL_USART_IRQHandler()
2504 husart->ErrorCallback(husart); in HAL_USART_IRQHandler()
2507 HAL_USART_ErrorCallback(husart); in HAL_USART_IRQHandler()
2517 husart->ErrorCallback(husart); in HAL_USART_IRQHandler()
2520 HAL_USART_ErrorCallback(husart); in HAL_USART_IRQHandler()
2530 husart->ErrorCallback(husart); in HAL_USART_IRQHandler()
2533 HAL_USART_ErrorCallback(husart); in HAL_USART_IRQHandler()
2535 husart->ErrorCode = HAL_USART_ERROR_NONE; in HAL_USART_IRQHandler()
2548 if (husart->TxISR != NULL) in HAL_USART_IRQHandler()
2550 husart->TxISR(husart); in HAL_USART_IRQHandler()
2558 USART_EndTransmit_IT(husart); in HAL_USART_IRQHandler()
2567 husart->TxFifoEmptyCallback(husart); in HAL_USART_IRQHandler()
2570 HAL_USARTEx_TxFifoEmptyCallback(husart); in HAL_USART_IRQHandler()
2580 husart->RxFifoFullCallback(husart); in HAL_USART_IRQHandler()
2583 HAL_USARTEx_RxFifoFullCallback(husart); in HAL_USART_IRQHandler()
2594 __weak void HAL_USART_TxCpltCallback(USART_HandleTypeDef *husart) in HAL_USART_TxCpltCallback() argument
2597 UNUSED(husart); in HAL_USART_TxCpltCallback()
2609 __weak void HAL_USART_TxHalfCpltCallback(USART_HandleTypeDef *husart) in HAL_USART_TxHalfCpltCallback() argument
2612 UNUSED(husart); in HAL_USART_TxHalfCpltCallback()
2624 __weak void HAL_USART_RxCpltCallback(USART_HandleTypeDef *husart) in HAL_USART_RxCpltCallback() argument
2627 UNUSED(husart); in HAL_USART_RxCpltCallback()
2639 __weak void HAL_USART_RxHalfCpltCallback(USART_HandleTypeDef *husart) in HAL_USART_RxHalfCpltCallback() argument
2642 UNUSED(husart); in HAL_USART_RxHalfCpltCallback()
2654 __weak void HAL_USART_TxRxCpltCallback(USART_HandleTypeDef *husart) in HAL_USART_TxRxCpltCallback() argument
2657 UNUSED(husart); in HAL_USART_TxRxCpltCallback()
2669 __weak void HAL_USART_ErrorCallback(USART_HandleTypeDef *husart) in HAL_USART_ErrorCallback() argument
2672 UNUSED(husart); in HAL_USART_ErrorCallback()
2684 __weak void HAL_USART_AbortCpltCallback(USART_HandleTypeDef *husart) in HAL_USART_AbortCpltCallback() argument
2687 UNUSED(husart); in HAL_USART_AbortCpltCallback()
2721 HAL_USART_StateTypeDef HAL_USART_GetState(const USART_HandleTypeDef *husart) in HAL_USART_GetState() argument
2723 return husart->State; in HAL_USART_GetState()
2732 uint32_t HAL_USART_GetError(const USART_HandleTypeDef *husart) in HAL_USART_GetError() argument
2734 return husart->ErrorCode; in HAL_USART_GetError()
2755 void USART_InitCallbacksToDefault(USART_HandleTypeDef *husart) in USART_InitCallbacksToDefault() argument
2758 …husart->TxHalfCpltCallback = HAL_USART_TxHalfCpltCallback; /* Legacy weak TxHalfCplt… in USART_InitCallbacksToDefault()
2759 …husart->TxCpltCallback = HAL_USART_TxCpltCallback; /* Legacy weak TxCpltCall… in USART_InitCallbacksToDefault()
2760 …husart->RxHalfCpltCallback = HAL_USART_RxHalfCpltCallback; /* Legacy weak RxHalfCplt… in USART_InitCallbacksToDefault()
2761 …husart->RxCpltCallback = HAL_USART_RxCpltCallback; /* Legacy weak RxCpltCall… in USART_InitCallbacksToDefault()
2762 …husart->TxRxCpltCallback = HAL_USART_TxRxCpltCallback; /* Legacy weak TxRxCpltCa… in USART_InitCallbacksToDefault()
2763 …husart->ErrorCallback = HAL_USART_ErrorCallback; /* Legacy weak ErrorCallb… in USART_InitCallbacksToDefault()
2764 …husart->AbortCpltCallback = HAL_USART_AbortCpltCallback; /* Legacy weak AbortCpltC… in USART_InitCallbacksToDefault()
2765 …husart->RxFifoFullCallback = HAL_USARTEx_RxFifoFullCallback; /* Legacy weak RxFifoFull… in USART_InitCallbacksToDefault()
2766 …husart->TxFifoEmptyCallback = HAL_USARTEx_TxFifoEmptyCallback; /* Legacy weak TxFifoEmpt… in USART_InitCallbacksToDefault()
2775 static void USART_EndTransfer(USART_HandleTypeDef *husart) in USART_EndTransfer() argument
2778 …CLEAR_BIT(husart->Instance->CR1, (USART_CR1_RXNEIE_RXFNEIE | USART_CR1_PEIE | USART_CR1_TXEIE_TXFN… in USART_EndTransfer()
2780 CLEAR_BIT(husart->Instance->CR3, (USART_CR3_EIE | USART_CR3_RXFTIE | USART_CR3_TXFTIE)); in USART_EndTransfer()
2783 husart->State = HAL_USART_STATE_READY; in USART_EndTransfer()
2794 USART_HandleTypeDef *husart = (USART_HandleTypeDef *)(hdma->Parent); in USART_DMATransmitCplt() local
2799 husart->TxXferCount = 0U; in USART_DMATransmitCplt()
2801 if (husart->State == HAL_USART_STATE_BUSY_TX) in USART_DMATransmitCplt()
2805 CLEAR_BIT(husart->Instance->CR3, USART_CR3_DMAT); in USART_DMATransmitCplt()
2808 __HAL_USART_ENABLE_IT(husart, USART_IT_TC); in USART_DMATransmitCplt()
2814 if (husart->State == HAL_USART_STATE_BUSY_TX) in USART_DMATransmitCplt()
2818 husart->TxCpltCallback(husart); in USART_DMATransmitCplt()
2821 HAL_USART_TxCpltCallback(husart); in USART_DMATransmitCplt()
2834 USART_HandleTypeDef *husart = (USART_HandleTypeDef *)(hdma->Parent); in USART_DMATxHalfCplt() local
2838 husart->TxHalfCpltCallback(husart); in USART_DMATxHalfCplt()
2841 HAL_USART_TxHalfCpltCallback(husart); in USART_DMATxHalfCplt()
2852 USART_HandleTypeDef *husart = (USART_HandleTypeDef *)(hdma->Parent); in USART_DMAReceiveCplt() local
2857 husart->RxXferCount = 0U; in USART_DMAReceiveCplt()
2860 CLEAR_BIT(husart->Instance->CR1, USART_CR1_PEIE); in USART_DMAReceiveCplt()
2861 CLEAR_BIT(husart->Instance->CR3, USART_CR3_EIE); in USART_DMAReceiveCplt()
2865 CLEAR_BIT(husart->Instance->CR3, USART_CR3_DMAR); in USART_DMAReceiveCplt()
2868 CLEAR_BIT(husart->Instance->CR3, USART_CR3_DMAT); in USART_DMAReceiveCplt()
2870 if (husart->State == HAL_USART_STATE_BUSY_RX) in USART_DMAReceiveCplt()
2874 husart->RxCpltCallback(husart); in USART_DMAReceiveCplt()
2877 HAL_USART_RxCpltCallback(husart); in USART_DMAReceiveCplt()
2885 husart->TxRxCpltCallback(husart); in USART_DMAReceiveCplt()
2888 HAL_USART_TxRxCpltCallback(husart); in USART_DMAReceiveCplt()
2891 husart->State = HAL_USART_STATE_READY; in USART_DMAReceiveCplt()
2896 if (husart->State == HAL_USART_STATE_BUSY_RX) in USART_DMAReceiveCplt()
2900 husart->RxCpltCallback(husart); in USART_DMAReceiveCplt()
2903 HAL_USART_RxCpltCallback(husart); in USART_DMAReceiveCplt()
2911 husart->TxRxCpltCallback(husart); in USART_DMAReceiveCplt()
2914 HAL_USART_TxRxCpltCallback(husart); in USART_DMAReceiveCplt()
2927 USART_HandleTypeDef *husart = (USART_HandleTypeDef *)(hdma->Parent); in USART_DMARxHalfCplt() local
2931 husart->RxHalfCpltCallback(husart); in USART_DMARxHalfCplt()
2934 HAL_USART_RxHalfCpltCallback(husart); in USART_DMARxHalfCplt()
2945 USART_HandleTypeDef *husart = (USART_HandleTypeDef *)(hdma->Parent); in USART_DMAError() local
2947 husart->RxXferCount = 0U; in USART_DMAError()
2948 husart->TxXferCount = 0U; in USART_DMAError()
2949 USART_EndTransfer(husart); in USART_DMAError()
2951 husart->ErrorCode |= HAL_USART_ERROR_DMA; in USART_DMAError()
2952 husart->State = HAL_USART_STATE_READY; in USART_DMAError()
2956 husart->ErrorCallback(husart); in USART_DMAError()
2959 HAL_USART_ErrorCallback(husart); in USART_DMAError()
2971 USART_HandleTypeDef *husart = (USART_HandleTypeDef *)(hdma->Parent); in USART_DMAAbortOnError() local
2972 husart->RxXferCount = 0U; in USART_DMAAbortOnError()
2973 husart->TxXferCount = 0U; in USART_DMAAbortOnError()
2977 husart->ErrorCallback(husart); in USART_DMAAbortOnError()
2980 HAL_USART_ErrorCallback(husart); in USART_DMAAbortOnError()
2994 USART_HandleTypeDef *husart = (USART_HandleTypeDef *)(hdma->Parent); in USART_DMATxAbortCallback() local
2996 husart->hdmatx->XferAbortCallback = NULL; in USART_DMATxAbortCallback()
2999 if (husart->hdmarx != NULL) in USART_DMATxAbortCallback()
3001 if (husart->hdmarx->XferAbortCallback != NULL) in USART_DMATxAbortCallback()
3008 husart->TxXferCount = 0U; in USART_DMATxAbortCallback()
3009 husart->RxXferCount = 0U; in USART_DMATxAbortCallback()
3012 husart->ErrorCode = HAL_USART_ERROR_NONE; in USART_DMATxAbortCallback()
3015 …__HAL_USART_CLEAR_FLAG(husart, USART_CLEAR_OREF | USART_CLEAR_NEF | USART_CLEAR_PEF | USART_CLEAR_… in USART_DMATxAbortCallback()
3018 husart->State = HAL_USART_STATE_READY; in USART_DMATxAbortCallback()
3023 husart->AbortCpltCallback(husart); in USART_DMATxAbortCallback()
3026 HAL_USART_AbortCpltCallback(husart); in USART_DMATxAbortCallback()
3042 USART_HandleTypeDef *husart = (USART_HandleTypeDef *)(hdma->Parent); in USART_DMARxAbortCallback() local
3044 husart->hdmarx->XferAbortCallback = NULL; in USART_DMARxAbortCallback()
3047 if (husart->hdmatx != NULL) in USART_DMARxAbortCallback()
3049 if (husart->hdmatx->XferAbortCallback != NULL) in USART_DMARxAbortCallback()
3056 husart->TxXferCount = 0U; in USART_DMARxAbortCallback()
3057 husart->RxXferCount = 0U; in USART_DMARxAbortCallback()
3060 husart->ErrorCode = HAL_USART_ERROR_NONE; in USART_DMARxAbortCallback()
3063 …__HAL_USART_CLEAR_FLAG(husart, USART_CLEAR_OREF | USART_CLEAR_NEF | USART_CLEAR_PEF | USART_CLEAR_… in USART_DMARxAbortCallback()
3066 husart->State = HAL_USART_STATE_READY; in USART_DMARxAbortCallback()
3071 husart->AbortCpltCallback(husart); in USART_DMARxAbortCallback()
3074 HAL_USART_AbortCpltCallback(husart); in USART_DMARxAbortCallback()
3090 static HAL_StatusTypeDef USART_WaitOnFlagUntilTimeout(USART_HandleTypeDef *husart, uint32_t Flag, F… in USART_WaitOnFlagUntilTimeout() argument
3094 while ((__HAL_USART_GET_FLAG(husart, Flag) ? SET : RESET) == Status) in USART_WaitOnFlagUntilTimeout()
3101 husart->State = HAL_USART_STATE_READY; in USART_WaitOnFlagUntilTimeout()
3104 __HAL_UNLOCK(husart); in USART_WaitOnFlagUntilTimeout()
3118 static HAL_StatusTypeDef USART_SetConfig(USART_HandleTypeDef *husart) in USART_SetConfig() argument
3128 assert_param(IS_USART_POLARITY(husart->Init.CLKPolarity)); in USART_SetConfig()
3129 assert_param(IS_USART_PHASE(husart->Init.CLKPhase)); in USART_SetConfig()
3130 assert_param(IS_USART_LASTBIT(husart->Init.CLKLastBit)); in USART_SetConfig()
3131 assert_param(IS_USART_BAUDRATE(husart->Init.BaudRate)); in USART_SetConfig()
3132 assert_param(IS_USART_WORD_LENGTH(husart->Init.WordLength)); in USART_SetConfig()
3133 assert_param(IS_USART_STOPBITS(husart->Init.StopBits)); in USART_SetConfig()
3134 assert_param(IS_USART_PARITY(husart->Init.Parity)); in USART_SetConfig()
3135 assert_param(IS_USART_MODE(husart->Init.Mode)); in USART_SetConfig()
3136 assert_param(IS_USART_PRESCALER(husart->Init.ClockPrescaler)); in USART_SetConfig()
3145 …tmpreg = (uint32_t)husart->Init.WordLength | husart->Init.Parity | husart->Init.Mode | USART_CR1_O… in USART_SetConfig()
3146 MODIFY_REG(husart->Instance->CR1, USART_CR1_FIELDS, tmpreg); in USART_SetConfig()
3155 tmpreg |= (uint32_t)husart->Init.CLKLastBit; in USART_SetConfig()
3156 tmpreg |= ((uint32_t)husart->Init.CLKPolarity | (uint32_t)husart->Init.CLKPhase); in USART_SetConfig()
3157 tmpreg |= (uint32_t)husart->Init.StopBits; in USART_SetConfig()
3158 MODIFY_REG(husart->Instance->CR2, USART_CR2_FIELDS, tmpreg); in USART_SetConfig()
3163 MODIFY_REG(husart->Instance->PRESC, USART_PRESC_PRESCALER, husart->Init.ClockPrescaler); in USART_SetConfig()
3167 USART_GETCLOCKSOURCE(husart, clocksource); in USART_SetConfig()
3173 …usartdiv = (uint32_t)(USART_DIV_SAMPLING8(pclk, husart->Init.BaudRate, husart->Init.ClockPrescaler… in USART_SetConfig()
3177 …usartdiv = (uint32_t)(USART_DIV_SAMPLING8(pclk, husart->Init.BaudRate, husart->Init.ClockPrescaler… in USART_SetConfig()
3181 …usartdiv = (uint32_t)(USART_DIV_SAMPLING8(pclk, husart->Init.BaudRate, husart->Init.ClockPrescaler… in USART_SetConfig()
3185 …usartdiv = (uint32_t)(USART_DIV_SAMPLING8(pclk, husart->Init.BaudRate, husart->Init.ClockPrescaler… in USART_SetConfig()
3191 … husart->Init.BaudRate, husart->Init.ClockPrescaler)); in USART_SetConfig()
3195 …usartdiv = (uint32_t)(USART_DIV_SAMPLING8(HSI_VALUE, husart->Init.BaudRate, husart->Init.ClockPres… in USART_SetConfig()
3199 …usartdiv = (uint32_t)(USART_DIV_SAMPLING8(CSI_VALUE, husart->Init.BaudRate, husart->Init.ClockPres… in USART_SetConfig()
3202 …usartdiv = (uint32_t)(USART_DIV_SAMPLING8(LSE_VALUE, husart->Init.BaudRate, husart->Init.ClockPres… in USART_SetConfig()
3214 husart->Instance->BRR = brrtemp; in USART_SetConfig()
3222 husart->NbTxDataToProcess = 1U; in USART_SetConfig()
3223 husart->NbRxDataToProcess = 1U; in USART_SetConfig()
3226 husart->RxISR = NULL; in USART_SetConfig()
3227 husart->TxISR = NULL; in USART_SetConfig()
3237 static HAL_StatusTypeDef USART_CheckIdleState(USART_HandleTypeDef *husart) in USART_CheckIdleState() argument
3242 husart->ErrorCode = HAL_USART_ERROR_NONE; in USART_CheckIdleState()
3248 if ((husart->Instance->CR1 & USART_CR1_TE) == USART_CR1_TE) in USART_CheckIdleState()
3251 …if (USART_WaitOnFlagUntilTimeout(husart, USART_ISR_TEACK, RESET, tickstart, USART_TEACK_REACK_TIME… in USART_CheckIdleState()
3258 if ((husart->Instance->CR1 & USART_CR1_RE) == USART_CR1_RE) in USART_CheckIdleState()
3261 …if (USART_WaitOnFlagUntilTimeout(husart, USART_ISR_REACK, RESET, tickstart, USART_TEACK_REACK_TIME… in USART_CheckIdleState()
3269 husart->State = HAL_USART_STATE_READY; in USART_CheckIdleState()
3272 __HAL_UNLOCK(husart); in USART_CheckIdleState()
3287 static void USART_TxISR_8BIT(USART_HandleTypeDef *husart) in USART_TxISR_8BIT() argument
3289 const HAL_USART_StateTypeDef state = husart->State; in USART_TxISR_8BIT()
3295 if (husart->TxXferCount == 0U) in USART_TxISR_8BIT()
3298 __HAL_USART_DISABLE_IT(husart, USART_IT_TXE); in USART_TxISR_8BIT()
3301 __HAL_USART_ENABLE_IT(husart, USART_IT_TC); in USART_TxISR_8BIT()
3305 husart->Instance->TDR = (uint8_t)(*husart->pTxBuffPtr & (uint8_t)0xFF); in USART_TxISR_8BIT()
3306 husart->pTxBuffPtr++; in USART_TxISR_8BIT()
3307 husart->TxXferCount--; in USART_TxISR_8BIT()
3322 static void USART_TxISR_16BIT(USART_HandleTypeDef *husart) in USART_TxISR_16BIT() argument
3324 const HAL_USART_StateTypeDef state = husart->State; in USART_TxISR_16BIT()
3330 if (husart->TxXferCount == 0U) in USART_TxISR_16BIT()
3333 __HAL_USART_DISABLE_IT(husart, USART_IT_TXE); in USART_TxISR_16BIT()
3336 __HAL_USART_ENABLE_IT(husart, USART_IT_TC); in USART_TxISR_16BIT()
3340 tmp = (const uint16_t *) husart->pTxBuffPtr; in USART_TxISR_16BIT()
3341 husart->Instance->TDR = (uint16_t)(*tmp & 0x01FFU); in USART_TxISR_16BIT()
3342 husart->pTxBuffPtr += 2U; in USART_TxISR_16BIT()
3343 husart->TxXferCount--; in USART_TxISR_16BIT()
3358 static void USART_TxISR_8BIT_FIFOEN(USART_HandleTypeDef *husart) in USART_TxISR_8BIT_FIFOEN() argument
3360 const HAL_USART_StateTypeDef state = husart->State; in USART_TxISR_8BIT_FIFOEN()
3367 for (nb_tx_data = husart->NbTxDataToProcess ; nb_tx_data > 0U ; nb_tx_data--) in USART_TxISR_8BIT_FIFOEN()
3369 if (husart->TxXferCount == 0U) in USART_TxISR_8BIT_FIFOEN()
3372 __HAL_USART_DISABLE_IT(husart, USART_IT_TXFT); in USART_TxISR_8BIT_FIFOEN()
3375 __HAL_USART_ENABLE_IT(husart, USART_IT_TC); in USART_TxISR_8BIT_FIFOEN()
3379 else if (__HAL_USART_GET_FLAG(husart, USART_FLAG_TXFNF) == SET) in USART_TxISR_8BIT_FIFOEN()
3381 husart->Instance->TDR = (uint8_t)(*husart->pTxBuffPtr & (uint8_t)0xFF); in USART_TxISR_8BIT_FIFOEN()
3382 husart->pTxBuffPtr++; in USART_TxISR_8BIT_FIFOEN()
3383 husart->TxXferCount--; in USART_TxISR_8BIT_FIFOEN()
3403 static void USART_TxISR_16BIT_FIFOEN(USART_HandleTypeDef *husart) in USART_TxISR_16BIT_FIFOEN() argument
3405 const HAL_USART_StateTypeDef state = husart->State; in USART_TxISR_16BIT_FIFOEN()
3413 for (nb_tx_data = husart->NbTxDataToProcess ; nb_tx_data > 0U ; nb_tx_data--) in USART_TxISR_16BIT_FIFOEN()
3415 if (husart->TxXferCount == 0U) in USART_TxISR_16BIT_FIFOEN()
3418 __HAL_USART_DISABLE_IT(husart, USART_IT_TXFT); in USART_TxISR_16BIT_FIFOEN()
3421 __HAL_USART_ENABLE_IT(husart, USART_IT_TC); in USART_TxISR_16BIT_FIFOEN()
3425 else if (__HAL_USART_GET_FLAG(husart, USART_FLAG_TXFNF) == SET) in USART_TxISR_16BIT_FIFOEN()
3427 tmp = (const uint16_t *) husart->pTxBuffPtr; in USART_TxISR_16BIT_FIFOEN()
3428 husart->Instance->TDR = (uint16_t)(*tmp & 0x01FFU); in USART_TxISR_16BIT_FIFOEN()
3429 husart->pTxBuffPtr += 2U; in USART_TxISR_16BIT_FIFOEN()
3430 husart->TxXferCount--; in USART_TxISR_16BIT_FIFOEN()
3446 static void USART_EndTransmit_IT(USART_HandleTypeDef *husart) in USART_EndTransmit_IT() argument
3449 __HAL_USART_DISABLE_IT(husart, USART_IT_TC); in USART_EndTransmit_IT()
3452 __HAL_USART_DISABLE_IT(husart, USART_IT_ERR); in USART_EndTransmit_IT()
3455 husart->TxISR = NULL; in USART_EndTransmit_IT()
3457 if (husart->State == HAL_USART_STATE_BUSY_TX) in USART_EndTransmit_IT()
3460 __HAL_USART_CLEAR_OREFLAG(husart); in USART_EndTransmit_IT()
3461 __HAL_USART_SEND_REQ(husart, USART_RXDATA_FLUSH_REQUEST); in USART_EndTransmit_IT()
3464 husart->State = HAL_USART_STATE_READY; in USART_EndTransmit_IT()
3468 husart->TxCpltCallback(husart); in USART_EndTransmit_IT()
3471 HAL_USART_TxCpltCallback(husart); in USART_EndTransmit_IT()
3474 else if (husart->RxXferCount == 0U) in USART_EndTransmit_IT()
3477 husart->State = HAL_USART_STATE_READY; in USART_EndTransmit_IT()
3481 husart->TxRxCpltCallback(husart); in USART_EndTransmit_IT()
3484 HAL_USART_TxRxCpltCallback(husart); in USART_EndTransmit_IT()
3503 static void USART_RxISR_8BIT(USART_HandleTypeDef *husart) in USART_RxISR_8BIT() argument
3505 const HAL_USART_StateTypeDef state = husart->State; in USART_RxISR_8BIT()
3507 uint16_t uhMask = husart->Mask; in USART_RxISR_8BIT()
3513 *husart->pRxBuffPtr = (uint8_t)(husart->Instance->RDR & (uint8_t)uhMask); in USART_RxISR_8BIT()
3514 husart->pRxBuffPtr++; in USART_RxISR_8BIT()
3515 husart->RxXferCount--; in USART_RxISR_8BIT()
3517 if (husart->RxXferCount == 0U) in USART_RxISR_8BIT()
3520 CLEAR_BIT(husart->Instance->CR1, (USART_CR1_RXNEIE_RXFNEIE | USART_CR1_PEIE)); in USART_RxISR_8BIT()
3523 CLEAR_BIT(husart->Instance->CR3, USART_CR3_EIE); in USART_RxISR_8BIT()
3526 husart->RxISR = NULL; in USART_RxISR_8BIT()
3529 txftie = READ_BIT(husart->Instance->CR3, USART_CR3_TXFTIE); in USART_RxISR_8BIT()
3530 txdatacount = husart->TxXferCount; in USART_RxISR_8BIT()
3535 if (husart->SlaveMode == USART_SLAVEMODE_ENABLE) in USART_RxISR_8BIT()
3537 __HAL_USART_CLEAR_UDRFLAG(husart); in USART_RxISR_8BIT()
3538 __HAL_USART_SEND_REQ(husart, USART_TXDATA_FLUSH_REQUEST); in USART_RxISR_8BIT()
3542 husart->State = HAL_USART_STATE_READY; in USART_RxISR_8BIT()
3546 husart->RxCpltCallback(husart); in USART_RxISR_8BIT()
3549 HAL_USART_RxCpltCallback(husart); in USART_RxISR_8BIT()
3552 else if ((READ_BIT(husart->Instance->CR1, USART_CR1_TCIE) != USART_CR1_TCIE) && in USART_RxISR_8BIT()
3557 husart->State = HAL_USART_STATE_READY; in USART_RxISR_8BIT()
3561 husart->TxRxCpltCallback(husart); in USART_RxISR_8BIT()
3564 HAL_USART_TxRxCpltCallback(husart); in USART_RxISR_8BIT()
3573 (husart->SlaveMode == USART_SLAVEMODE_DISABLE)) in USART_RxISR_8BIT()
3576 husart->Instance->TDR = (USART_DUMMY_DATA & (uint16_t)0x00FF); in USART_RxISR_8BIT()
3594 static void USART_RxISR_16BIT(USART_HandleTypeDef *husart) in USART_RxISR_16BIT() argument
3596 const HAL_USART_StateTypeDef state = husart->State; in USART_RxISR_16BIT()
3599 uint16_t uhMask = husart->Mask; in USART_RxISR_16BIT()
3605 tmp = (uint16_t *) husart->pRxBuffPtr; in USART_RxISR_16BIT()
3606 *tmp = (uint16_t)(husart->Instance->RDR & uhMask); in USART_RxISR_16BIT()
3607 husart->pRxBuffPtr += 2U; in USART_RxISR_16BIT()
3608 husart->RxXferCount--; in USART_RxISR_16BIT()
3610 if (husart->RxXferCount == 0U) in USART_RxISR_16BIT()
3613 CLEAR_BIT(husart->Instance->CR1, (USART_CR1_RXNEIE_RXFNEIE | USART_CR1_PEIE)); in USART_RxISR_16BIT()
3616 CLEAR_BIT(husart->Instance->CR3, USART_CR3_EIE); in USART_RxISR_16BIT()
3619 husart->RxISR = NULL; in USART_RxISR_16BIT()
3622 txftie = READ_BIT(husart->Instance->CR3, USART_CR3_TXFTIE); in USART_RxISR_16BIT()
3623 txdatacount = husart->TxXferCount; in USART_RxISR_16BIT()
3628 if (husart->SlaveMode == USART_SLAVEMODE_ENABLE) in USART_RxISR_16BIT()
3630 __HAL_USART_CLEAR_UDRFLAG(husart); in USART_RxISR_16BIT()
3631 __HAL_USART_SEND_REQ(husart, USART_TXDATA_FLUSH_REQUEST); in USART_RxISR_16BIT()
3635 husart->State = HAL_USART_STATE_READY; in USART_RxISR_16BIT()
3639 husart->RxCpltCallback(husart); in USART_RxISR_16BIT()
3642 HAL_USART_RxCpltCallback(husart); in USART_RxISR_16BIT()
3645 else if ((READ_BIT(husart->Instance->CR1, USART_CR1_TCIE) != USART_CR1_TCIE) && in USART_RxISR_16BIT()
3650 husart->State = HAL_USART_STATE_READY; in USART_RxISR_16BIT()
3654 husart->TxRxCpltCallback(husart); in USART_RxISR_16BIT()
3657 HAL_USART_TxRxCpltCallback(husart); in USART_RxISR_16BIT()
3666 (husart->SlaveMode == USART_SLAVEMODE_DISABLE)) in USART_RxISR_16BIT()
3669 husart->Instance->TDR = (USART_DUMMY_DATA & (uint16_t)0x00FF); in USART_RxISR_16BIT()
3687 static void USART_RxISR_8BIT_FIFOEN(USART_HandleTypeDef *husart) in USART_RxISR_8BIT_FIFOEN() argument
3689 HAL_USART_StateTypeDef state = husart->State; in USART_RxISR_8BIT_FIFOEN()
3692 uint16_t uhMask = husart->Mask; in USART_RxISR_8BIT_FIFOEN()
3700 for (nb_rx_data = husart->NbRxDataToProcess ; nb_rx_data > 0U ; nb_rx_data--) in USART_RxISR_8BIT_FIFOEN()
3702 if (__HAL_USART_GET_FLAG(husart, USART_FLAG_RXFNE) == SET) in USART_RxISR_8BIT_FIFOEN()
3704 *husart->pRxBuffPtr = (uint8_t)(husart->Instance->RDR & (uint8_t)(uhMask & 0xFFU)); in USART_RxISR_8BIT_FIFOEN()
3705 husart->pRxBuffPtr++; in USART_RxISR_8BIT_FIFOEN()
3706 husart->RxXferCount--; in USART_RxISR_8BIT_FIFOEN()
3708 if (husart->RxXferCount == 0U) in USART_RxISR_8BIT_FIFOEN()
3711 CLEAR_BIT(husart->Instance->CR1, USART_CR1_PEIE); in USART_RxISR_8BIT_FIFOEN()
3715 CLEAR_BIT(husart->Instance->CR3, (USART_CR3_EIE | USART_CR3_RXFTIE)); in USART_RxISR_8BIT_FIFOEN()
3718 husart->RxISR = NULL; in USART_RxISR_8BIT_FIFOEN()
3721 txftie = READ_BIT(husart->Instance->CR3, USART_CR3_TXFTIE); in USART_RxISR_8BIT_FIFOEN()
3722 txdatacount = husart->TxXferCount; in USART_RxISR_8BIT_FIFOEN()
3727 if (husart->SlaveMode == USART_SLAVEMODE_ENABLE) in USART_RxISR_8BIT_FIFOEN()
3729 __HAL_USART_CLEAR_UDRFLAG(husart); in USART_RxISR_8BIT_FIFOEN()
3730 __HAL_USART_SEND_REQ(husart, USART_TXDATA_FLUSH_REQUEST); in USART_RxISR_8BIT_FIFOEN()
3734 husart->State = HAL_USART_STATE_READY; in USART_RxISR_8BIT_FIFOEN()
3739 husart->RxCpltCallback(husart); in USART_RxISR_8BIT_FIFOEN()
3742 HAL_USART_RxCpltCallback(husart); in USART_RxISR_8BIT_FIFOEN()
3745 else if ((READ_BIT(husart->Instance->CR1, USART_CR1_TCIE) != USART_CR1_TCIE) && in USART_RxISR_8BIT_FIFOEN()
3750 husart->State = HAL_USART_STATE_READY; in USART_RxISR_8BIT_FIFOEN()
3755 husart->TxRxCpltCallback(husart); in USART_RxISR_8BIT_FIFOEN()
3758 HAL_USART_TxRxCpltCallback(husart); in USART_RxISR_8BIT_FIFOEN()
3767 (husart->SlaveMode == USART_SLAVEMODE_DISABLE)) in USART_RxISR_8BIT_FIFOEN()
3770 husart->Instance->TDR = (USART_DUMMY_DATA & (uint16_t)0x00FF); in USART_RxISR_8BIT_FIFOEN()
3783 rxdatacount = husart->RxXferCount; in USART_RxISR_8BIT_FIFOEN()
3784 if (((rxdatacount != 0U)) && (rxdatacount < husart->NbRxDataToProcess)) in USART_RxISR_8BIT_FIFOEN()
3787 CLEAR_BIT(husart->Instance->CR3, USART_CR3_RXFTIE); in USART_RxISR_8BIT_FIFOEN()
3790 husart->RxISR = USART_RxISR_8BIT; in USART_RxISR_8BIT_FIFOEN()
3793 SET_BIT(husart->Instance->CR1, USART_CR1_RXNEIE_RXFNEIE); in USART_RxISR_8BIT_FIFOEN()
3795 if ((husart->TxXferCount == 0U) && in USART_RxISR_8BIT_FIFOEN()
3797 (husart->SlaveMode == USART_SLAVEMODE_DISABLE)) in USART_RxISR_8BIT_FIFOEN()
3800 husart->Instance->TDR = (USART_DUMMY_DATA & (uint16_t)0x00FF); in USART_RxISR_8BIT_FIFOEN()
3807 __HAL_USART_SEND_REQ(husart, USART_RXDATA_FLUSH_REQUEST); in USART_RxISR_8BIT_FIFOEN()
3820 static void USART_RxISR_16BIT_FIFOEN(USART_HandleTypeDef *husart) in USART_RxISR_16BIT_FIFOEN() argument
3822 HAL_USART_StateTypeDef state = husart->State; in USART_RxISR_16BIT_FIFOEN()
3826 uint16_t uhMask = husart->Mask; in USART_RxISR_16BIT_FIFOEN()
3834 for (nb_rx_data = husart->NbRxDataToProcess ; nb_rx_data > 0U ; nb_rx_data--) in USART_RxISR_16BIT_FIFOEN()
3836 if (__HAL_USART_GET_FLAG(husart, USART_FLAG_RXFNE) == SET) in USART_RxISR_16BIT_FIFOEN()
3838 tmp = (uint16_t *) husart->pRxBuffPtr; in USART_RxISR_16BIT_FIFOEN()
3839 *tmp = (uint16_t)(husart->Instance->RDR & uhMask); in USART_RxISR_16BIT_FIFOEN()
3840 husart->pRxBuffPtr += 2U; in USART_RxISR_16BIT_FIFOEN()
3841 husart->RxXferCount--; in USART_RxISR_16BIT_FIFOEN()
3843 if (husart->RxXferCount == 0U) in USART_RxISR_16BIT_FIFOEN()
3846 CLEAR_BIT(husart->Instance->CR1, USART_CR1_PEIE); in USART_RxISR_16BIT_FIFOEN()
3850 CLEAR_BIT(husart->Instance->CR3, (USART_CR3_EIE | USART_CR3_RXFTIE)); in USART_RxISR_16BIT_FIFOEN()
3853 husart->RxISR = NULL; in USART_RxISR_16BIT_FIFOEN()
3856 txftie = READ_BIT(husart->Instance->CR3, USART_CR3_TXFTIE); in USART_RxISR_16BIT_FIFOEN()
3857 txdatacount = husart->TxXferCount; in USART_RxISR_16BIT_FIFOEN()
3862 if (husart->SlaveMode == USART_SLAVEMODE_ENABLE) in USART_RxISR_16BIT_FIFOEN()
3864 __HAL_USART_CLEAR_UDRFLAG(husart); in USART_RxISR_16BIT_FIFOEN()
3865 __HAL_USART_SEND_REQ(husart, USART_TXDATA_FLUSH_REQUEST); in USART_RxISR_16BIT_FIFOEN()
3869 husart->State = HAL_USART_STATE_READY; in USART_RxISR_16BIT_FIFOEN()
3874 husart->RxCpltCallback(husart); in USART_RxISR_16BIT_FIFOEN()
3877 HAL_USART_RxCpltCallback(husart); in USART_RxISR_16BIT_FIFOEN()
3880 else if ((READ_BIT(husart->Instance->CR1, USART_CR1_TCIE) != USART_CR1_TCIE) && in USART_RxISR_16BIT_FIFOEN()
3885 husart->State = HAL_USART_STATE_READY; in USART_RxISR_16BIT_FIFOEN()
3890 husart->TxRxCpltCallback(husart); in USART_RxISR_16BIT_FIFOEN()
3893 HAL_USART_TxRxCpltCallback(husart); in USART_RxISR_16BIT_FIFOEN()
3902 (husart->SlaveMode == USART_SLAVEMODE_DISABLE)) in USART_RxISR_16BIT_FIFOEN()
3905 husart->Instance->TDR = (USART_DUMMY_DATA & (uint16_t)0x00FF); in USART_RxISR_16BIT_FIFOEN()
3918 rxdatacount = husart->RxXferCount; in USART_RxISR_16BIT_FIFOEN()
3919 if (((rxdatacount != 0U)) && (rxdatacount < husart->NbRxDataToProcess)) in USART_RxISR_16BIT_FIFOEN()
3922 CLEAR_BIT(husart->Instance->CR3, USART_CR3_RXFTIE); in USART_RxISR_16BIT_FIFOEN()
3925 husart->RxISR = USART_RxISR_16BIT; in USART_RxISR_16BIT_FIFOEN()
3928 SET_BIT(husart->Instance->CR1, USART_CR1_RXNEIE_RXFNEIE); in USART_RxISR_16BIT_FIFOEN()
3930 if ((husart->TxXferCount == 0U) && in USART_RxISR_16BIT_FIFOEN()
3932 (husart->SlaveMode == USART_SLAVEMODE_DISABLE)) in USART_RxISR_16BIT_FIFOEN()
3935 husart->Instance->TDR = (USART_DUMMY_DATA & (uint16_t)0x00FF); in USART_RxISR_16BIT_FIFOEN()
3942 __HAL_USART_SEND_REQ(husart, USART_RXDATA_FLUSH_REQUEST); in USART_RxISR_16BIT_FIFOEN()