Lines Matching refs:husart

183 void USART_InitCallbacksToDefault(USART_HandleTypeDef *husart);
185 static void USART_EndTransfer(USART_HandleTypeDef *husart);
194 static HAL_StatusTypeDef USART_WaitOnFlagUntilTimeout(USART_HandleTypeDef *husart, uint32_t Flag, F…
195 static HAL_StatusTypeDef USART_SetConfig(USART_HandleTypeDef *husart);
196 static HAL_StatusTypeDef USART_CheckIdleState(USART_HandleTypeDef *husart);
197 static void USART_TxISR_8BIT(USART_HandleTypeDef *husart);
198 static void USART_TxISR_16BIT(USART_HandleTypeDef *husart);
199 static void USART_TxISR_8BIT_FIFOEN(USART_HandleTypeDef *husart);
200 static void USART_TxISR_16BIT_FIFOEN(USART_HandleTypeDef *husart);
201 static void USART_EndTransmit_IT(USART_HandleTypeDef *husart);
202 static void USART_RxISR_8BIT(USART_HandleTypeDef *husart);
203 static void USART_RxISR_16BIT(USART_HandleTypeDef *husart);
204 static void USART_RxISR_8BIT_FIFOEN(USART_HandleTypeDef *husart);
205 static void USART_RxISR_16BIT_FIFOEN(USART_HandleTypeDef *husart);
275 HAL_StatusTypeDef HAL_USART_Init(USART_HandleTypeDef *husart) in HAL_USART_Init() argument
278 if (husart == NULL) in HAL_USART_Init()
284 assert_param(IS_USART_INSTANCE(husart->Instance)); in HAL_USART_Init()
286 if (husart->State == HAL_USART_STATE_RESET) in HAL_USART_Init()
289 husart->Lock = HAL_UNLOCKED; in HAL_USART_Init()
292 USART_InitCallbacksToDefault(husart); in HAL_USART_Init()
294 if (husart->MspInitCallback == NULL) in HAL_USART_Init()
296 husart->MspInitCallback = HAL_USART_MspInit; in HAL_USART_Init()
300 husart->MspInitCallback(husart); in HAL_USART_Init()
303 HAL_USART_MspInit(husart); in HAL_USART_Init()
307 husart->State = HAL_USART_STATE_BUSY; in HAL_USART_Init()
310 __HAL_USART_DISABLE(husart); in HAL_USART_Init()
313 if (USART_SetConfig(husart) == HAL_ERROR) in HAL_USART_Init()
321 husart->Instance->CR2 &= ~USART_CR2_LINEN; in HAL_USART_Init()
322 husart->Instance->CR3 &= ~(USART_CR3_SCEN | USART_CR3_HDSEL | USART_CR3_IREN); in HAL_USART_Init()
325 __HAL_USART_ENABLE(husart); in HAL_USART_Init()
328 return (USART_CheckIdleState(husart)); in HAL_USART_Init()
336 HAL_StatusTypeDef HAL_USART_DeInit(USART_HandleTypeDef *husart) in HAL_USART_DeInit() argument
339 if (husart == NULL) in HAL_USART_DeInit()
345 assert_param(IS_USART_INSTANCE(husart->Instance)); in HAL_USART_DeInit()
347 husart->State = HAL_USART_STATE_BUSY; in HAL_USART_DeInit()
349 husart->Instance->CR1 = 0x0U; in HAL_USART_DeInit()
350 husart->Instance->CR2 = 0x0U; in HAL_USART_DeInit()
351 husart->Instance->CR3 = 0x0U; in HAL_USART_DeInit()
354 if (husart->MspDeInitCallback == NULL) in HAL_USART_DeInit()
356 husart->MspDeInitCallback = HAL_USART_MspDeInit; in HAL_USART_DeInit()
359 husart->MspDeInitCallback(husart); in HAL_USART_DeInit()
362 HAL_USART_MspDeInit(husart); in HAL_USART_DeInit()
365 husart->ErrorCode = HAL_USART_ERROR_NONE; in HAL_USART_DeInit()
366 husart->State = HAL_USART_STATE_RESET; in HAL_USART_DeInit()
369 __HAL_UNLOCK(husart); in HAL_USART_DeInit()
379 __weak void HAL_USART_MspInit(USART_HandleTypeDef *husart) in HAL_USART_MspInit() argument
382 UNUSED(husart); in HAL_USART_MspInit()
394 __weak void HAL_USART_MspDeInit(USART_HandleTypeDef *husart) in HAL_USART_MspDeInit() argument
397 UNUSED(husart); in HAL_USART_MspDeInit()
427 HAL_StatusTypeDef HAL_USART_RegisterCallback(USART_HandleTypeDef *husart, HAL_USART_CallbackIDTypeD… in HAL_USART_RegisterCallback() argument
435 husart->ErrorCode |= HAL_USART_ERROR_INVALID_CALLBACK; in HAL_USART_RegisterCallback()
440 if (husart->State == HAL_USART_STATE_READY) in HAL_USART_RegisterCallback()
445 husart->TxHalfCpltCallback = pCallback; in HAL_USART_RegisterCallback()
449 husart->TxCpltCallback = pCallback; in HAL_USART_RegisterCallback()
453 husart->RxHalfCpltCallback = pCallback; in HAL_USART_RegisterCallback()
457 husart->RxCpltCallback = pCallback; in HAL_USART_RegisterCallback()
461 husart->TxRxCpltCallback = pCallback; in HAL_USART_RegisterCallback()
465 husart->ErrorCallback = pCallback; in HAL_USART_RegisterCallback()
469 husart->AbortCpltCallback = pCallback; in HAL_USART_RegisterCallback()
473 husart->RxFifoFullCallback = pCallback; in HAL_USART_RegisterCallback()
477 husart->TxFifoEmptyCallback = pCallback; in HAL_USART_RegisterCallback()
481 husart->MspInitCallback = pCallback; in HAL_USART_RegisterCallback()
485 husart->MspDeInitCallback = pCallback; in HAL_USART_RegisterCallback()
490 husart->ErrorCode |= HAL_USART_ERROR_INVALID_CALLBACK; in HAL_USART_RegisterCallback()
497 else if (husart->State == HAL_USART_STATE_RESET) in HAL_USART_RegisterCallback()
502 husart->MspInitCallback = pCallback; in HAL_USART_RegisterCallback()
506 husart->MspDeInitCallback = pCallback; in HAL_USART_RegisterCallback()
511 husart->ErrorCode |= HAL_USART_ERROR_INVALID_CALLBACK; in HAL_USART_RegisterCallback()
521 husart->ErrorCode |= HAL_USART_ERROR_INVALID_CALLBACK; in HAL_USART_RegisterCallback()
551 HAL_StatusTypeDef HAL_USART_UnRegisterCallback(USART_HandleTypeDef *husart, HAL_USART_CallbackIDTyp… in HAL_USART_UnRegisterCallback() argument
555 if (HAL_USART_STATE_READY == husart->State) in HAL_USART_UnRegisterCallback()
560husart->TxHalfCpltCallback = HAL_USART_TxHalfCpltCallback; /* Legacy weak TxHalfCpl… in HAL_USART_UnRegisterCallback()
564husart->TxCpltCallback = HAL_USART_TxCpltCallback; /* Legacy weak TxCpltCall… in HAL_USART_UnRegisterCallback()
568husart->RxHalfCpltCallback = HAL_USART_RxHalfCpltCallback; /* Legacy weak RxHalfCplt… in HAL_USART_UnRegisterCallback()
572husart->RxCpltCallback = HAL_USART_RxCpltCallback; /* Legacy weak RxCpltCall… in HAL_USART_UnRegisterCallback()
576husart->TxRxCpltCallback = HAL_USART_TxRxCpltCallback; /* Legacy weak TxRxCpltCa… in HAL_USART_UnRegisterCallback()
580husart->ErrorCallback = HAL_USART_ErrorCallback; /* Legacy weak ErrorCallb… in HAL_USART_UnRegisterCallback()
584husart->AbortCpltCallback = HAL_USART_AbortCpltCallback; /* Legacy weak AbortCpltC… in HAL_USART_UnRegisterCallback()
588husart->RxFifoFullCallback = HAL_USARTEx_RxFifoFullCallback; /* Legacy weak RxFifoFull… in HAL_USART_UnRegisterCallback()
592husart->TxFifoEmptyCallback = HAL_USARTEx_TxFifoEmptyCallback; /* Legacy weak TxFifoEmpt… in HAL_USART_UnRegisterCallback()
596husart->MspInitCallback = HAL_USART_MspInit; /* Legacy weak MspInitCal… in HAL_USART_UnRegisterCallback()
600husart->MspDeInitCallback = HAL_USART_MspDeInit; /* Legacy weak MspDeInitC… in HAL_USART_UnRegisterCallback()
605 husart->ErrorCode |= HAL_USART_ERROR_INVALID_CALLBACK; in HAL_USART_UnRegisterCallback()
612 else if (HAL_USART_STATE_RESET == husart->State) in HAL_USART_UnRegisterCallback()
617 husart->MspInitCallback = HAL_USART_MspInit; in HAL_USART_UnRegisterCallback()
621 husart->MspDeInitCallback = HAL_USART_MspDeInit; in HAL_USART_UnRegisterCallback()
626 husart->ErrorCode |= HAL_USART_ERROR_INVALID_CALLBACK; in HAL_USART_UnRegisterCallback()
636 husart->ErrorCode |= HAL_USART_ERROR_INVALID_CALLBACK; in HAL_USART_UnRegisterCallback()
742 HAL_StatusTypeDef HAL_USART_Transmit(USART_HandleTypeDef *husart, const uint8_t *pTxData, uint16_t … in HAL_USART_Transmit() argument
749 if (husart->State == HAL_USART_STATE_READY) in HAL_USART_Transmit()
757 __HAL_LOCK(husart); in HAL_USART_Transmit()
759 husart->ErrorCode = HAL_USART_ERROR_NONE; in HAL_USART_Transmit()
760 husart->State = HAL_USART_STATE_BUSY_TX; in HAL_USART_Transmit()
765 husart->TxXferSize = Size; in HAL_USART_Transmit()
766 husart->TxXferCount = Size; in HAL_USART_Transmit()
769 …if ((husart->Init.WordLength == USART_WORDLENGTH_9B) && (husart->Init.Parity == USART_PARITY_NONE)) in HAL_USART_Transmit()
781 while (husart->TxXferCount > 0U) in HAL_USART_Transmit()
783 if (USART_WaitOnFlagUntilTimeout(husart, USART_FLAG_TXE, RESET, tickstart, Timeout) != HAL_OK) in HAL_USART_Transmit()
789 husart->Instance->TDR = (uint16_t)(*ptxdata16bits & 0x01FFU); in HAL_USART_Transmit()
794 husart->Instance->TDR = (uint8_t)(*ptxdata8bits & 0xFFU); in HAL_USART_Transmit()
798 husart->TxXferCount--; in HAL_USART_Transmit()
801 if (USART_WaitOnFlagUntilTimeout(husart, USART_FLAG_TC, RESET, tickstart, Timeout) != HAL_OK) in HAL_USART_Transmit()
807 __HAL_USART_CLEAR_FLAG(husart, USART_CLEAR_TCF); in HAL_USART_Transmit()
810 __HAL_USART_CLEAR_OREFLAG(husart); in HAL_USART_Transmit()
811 __HAL_USART_SEND_REQ(husart, USART_RXDATA_FLUSH_REQUEST); in HAL_USART_Transmit()
812 __HAL_USART_SEND_REQ(husart, USART_TXDATA_FLUSH_REQUEST); in HAL_USART_Transmit()
815 husart->State = HAL_USART_STATE_READY; in HAL_USART_Transmit()
818 __HAL_UNLOCK(husart); in HAL_USART_Transmit()
840 HAL_StatusTypeDef HAL_USART_Receive(USART_HandleTypeDef *husart, uint8_t *pRxData, uint16_t Size, u… in HAL_USART_Receive() argument
848 if (husart->State == HAL_USART_STATE_READY) in HAL_USART_Receive()
856 __HAL_LOCK(husart); in HAL_USART_Receive()
858 husart->ErrorCode = HAL_USART_ERROR_NONE; in HAL_USART_Receive()
859 husart->State = HAL_USART_STATE_BUSY_RX; in HAL_USART_Receive()
864 husart->RxXferSize = Size; in HAL_USART_Receive()
865 husart->RxXferCount = Size; in HAL_USART_Receive()
868 USART_MASK_COMPUTATION(husart); in HAL_USART_Receive()
869 uhMask = husart->Mask; in HAL_USART_Receive()
872 …if ((husart->Init.WordLength == USART_WORDLENGTH_9B) && (husart->Init.Parity == USART_PARITY_NONE)) in HAL_USART_Receive()
884 while (husart->RxXferCount > 0U) in HAL_USART_Receive()
886 if (husart->SlaveMode == USART_SLAVEMODE_DISABLE) in HAL_USART_Receive()
892 … if (USART_WaitOnFlagUntilTimeout(husart, USART_FLAG_TXE, RESET, tickstart, Timeout) != HAL_OK) in HAL_USART_Receive()
896 husart->Instance->TDR = (USART_DUMMY_DATA & (uint16_t)0x0FF); in HAL_USART_Receive()
900 … if (USART_WaitOnFlagUntilTimeout(husart, USART_FLAG_RXNE, RESET, tickstart, Timeout) != HAL_OK) in HAL_USART_Receive()
907 *prxdata16bits = (uint16_t)(husart->Instance->RDR & uhMask); in HAL_USART_Receive()
912 *prxdata8bits = (uint8_t)(husart->Instance->RDR & (uint8_t)(uhMask & 0xFFU)); in HAL_USART_Receive()
916 husart->RxXferCount--; in HAL_USART_Receive()
921 if (husart->SlaveMode == USART_SLAVEMODE_ENABLE) in HAL_USART_Receive()
923 __HAL_USART_CLEAR_UDRFLAG(husart); in HAL_USART_Receive()
924 __HAL_USART_SEND_REQ(husart, USART_TXDATA_FLUSH_REQUEST); in HAL_USART_Receive()
928 husart->State = HAL_USART_STATE_READY; in HAL_USART_Receive()
931 __HAL_UNLOCK(husart); in HAL_USART_Receive()
953 HAL_StatusTypeDef HAL_USART_TransmitReceive(USART_HandleTypeDef *husart, const uint8_t *pTxData, ui… in HAL_USART_TransmitReceive() argument
965 if (husart->State == HAL_USART_STATE_READY) in HAL_USART_TransmitReceive()
973 __HAL_LOCK(husart); in HAL_USART_TransmitReceive()
975 husart->ErrorCode = HAL_USART_ERROR_NONE; in HAL_USART_TransmitReceive()
976 husart->State = HAL_USART_STATE_BUSY_RX; in HAL_USART_TransmitReceive()
981 husart->RxXferSize = Size; in HAL_USART_TransmitReceive()
982 husart->TxXferSize = Size; in HAL_USART_TransmitReceive()
983 husart->TxXferCount = Size; in HAL_USART_TransmitReceive()
984 husart->RxXferCount = Size; in HAL_USART_TransmitReceive()
987 USART_MASK_COMPUTATION(husart); in HAL_USART_TransmitReceive()
988 uhMask = husart->Mask; in HAL_USART_TransmitReceive()
991 …if ((husart->Init.WordLength == USART_WORDLENGTH_9B) && (husart->Init.Parity == USART_PARITY_NONE)) in HAL_USART_TransmitReceive()
1006 if ((husart->TxXferCount == 0x01U) || (husart->SlaveMode == USART_SLAVEMODE_ENABLE)) in HAL_USART_TransmitReceive()
1009 if (USART_WaitOnFlagUntilTimeout(husart, USART_FLAG_TXE, RESET, tickstart, Timeout) != HAL_OK) in HAL_USART_TransmitReceive()
1015 husart->Instance->TDR = (uint16_t)(*ptxdata16bits & uhMask); in HAL_USART_TransmitReceive()
1020 husart->Instance->TDR = (uint8_t)(*ptxdata8bits & (uint8_t)(uhMask & 0xFFU)); in HAL_USART_TransmitReceive()
1024 husart->TxXferCount--; in HAL_USART_TransmitReceive()
1029 rxdatacount = husart->RxXferCount; in HAL_USART_TransmitReceive()
1030 while ((husart->TxXferCount > 0U) || (rxdatacount > 0U)) in HAL_USART_TransmitReceive()
1032 if (husart->TxXferCount > 0U) in HAL_USART_TransmitReceive()
1035 … if (USART_WaitOnFlagUntilTimeout(husart, USART_FLAG_TXE, RESET, tickstart, Timeout) != HAL_OK) in HAL_USART_TransmitReceive()
1041 husart->Instance->TDR = (uint16_t)(*ptxdata16bits & uhMask); in HAL_USART_TransmitReceive()
1046 husart->Instance->TDR = (uint8_t)(*ptxdata8bits & (uint8_t)(uhMask & 0xFFU)); in HAL_USART_TransmitReceive()
1050 husart->TxXferCount--; in HAL_USART_TransmitReceive()
1053 if (husart->RxXferCount > 0U) in HAL_USART_TransmitReceive()
1056 … if (USART_WaitOnFlagUntilTimeout(husart, USART_FLAG_RXNE, RESET, tickstart, Timeout) != HAL_OK) in HAL_USART_TransmitReceive()
1063 *prxdata16bits = (uint16_t)(husart->Instance->RDR & uhMask); in HAL_USART_TransmitReceive()
1068 *prxdata8bits = (uint8_t)(husart->Instance->RDR & (uint8_t)(uhMask & 0xFFU)); in HAL_USART_TransmitReceive()
1072 husart->RxXferCount--; in HAL_USART_TransmitReceive()
1074 rxdatacount = husart->RxXferCount; in HAL_USART_TransmitReceive()
1078 husart->State = HAL_USART_STATE_READY; in HAL_USART_TransmitReceive()
1081 __HAL_UNLOCK(husart); in HAL_USART_TransmitReceive()
1101 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
1190 if (husart->State == HAL_USART_STATE_READY) in HAL_USART_Receive_IT()
1198 __HAL_LOCK(husart); in HAL_USART_Receive_IT()
1200 husart->pRxBuffPtr = pRxData; in HAL_USART_Receive_IT()
1201 husart->RxXferSize = Size; in HAL_USART_Receive_IT()
1202 husart->RxXferCount = Size; in HAL_USART_Receive_IT()
1203 husart->RxISR = NULL; in HAL_USART_Receive_IT()
1205 USART_MASK_COMPUTATION(husart); in HAL_USART_Receive_IT()
1207 husart->ErrorCode = HAL_USART_ERROR_NONE; in HAL_USART_Receive_IT()
1208 husart->State = HAL_USART_STATE_BUSY_RX; in HAL_USART_Receive_IT()
1211 SET_BIT(husart->Instance->CR3, USART_CR3_EIE); in HAL_USART_Receive_IT()
1214 if ((husart->FifoMode == USART_FIFOMODE_ENABLE) && (Size >= husart->NbRxDataToProcess)) in HAL_USART_Receive_IT()
1217 …if ((husart->Init.WordLength == USART_WORDLENGTH_9B) && (husart->Init.Parity == USART_PARITY_NONE)) in HAL_USART_Receive_IT()
1219 husart->RxISR = USART_RxISR_16BIT_FIFOEN; in HAL_USART_Receive_IT()
1223 husart->RxISR = USART_RxISR_8BIT_FIFOEN; in HAL_USART_Receive_IT()
1227 __HAL_UNLOCK(husart); in HAL_USART_Receive_IT()
1230 if (husart->Init.Parity != USART_PARITY_NONE) in HAL_USART_Receive_IT()
1232 SET_BIT(husart->Instance->CR1, USART_CR1_PEIE); in HAL_USART_Receive_IT()
1234 SET_BIT(husart->Instance->CR3, USART_CR3_RXFTIE); in HAL_USART_Receive_IT()
1239 …if ((husart->Init.WordLength == USART_WORDLENGTH_9B) && (husart->Init.Parity == USART_PARITY_NONE)) in HAL_USART_Receive_IT()
1241 husart->RxISR = USART_RxISR_16BIT; in HAL_USART_Receive_IT()
1245 husart->RxISR = USART_RxISR_8BIT; in HAL_USART_Receive_IT()
1249 __HAL_UNLOCK(husart); in HAL_USART_Receive_IT()
1252 if (husart->Init.Parity != USART_PARITY_NONE) in HAL_USART_Receive_IT()
1254 SET_BIT(husart->Instance->CR1, USART_CR1_PEIE | USART_CR1_RXNEIE_RXFNEIE); in HAL_USART_Receive_IT()
1258 SET_BIT(husart->Instance->CR1, USART_CR1_RXNEIE_RXFNEIE); in HAL_USART_Receive_IT()
1262 if (husart->SlaveMode == USART_SLAVEMODE_DISABLE) in HAL_USART_Receive_IT()
1268 if ((husart->FifoMode == USART_FIFOMODE_ENABLE) && (Size >= husart->NbRxDataToProcess)) in HAL_USART_Receive_IT()
1270 for (nb_dummy_data = husart->NbRxDataToProcess ; nb_dummy_data > 0U ; nb_dummy_data--) in HAL_USART_Receive_IT()
1272 husart->Instance->TDR = (USART_DUMMY_DATA & (uint16_t)0x00FF); in HAL_USART_Receive_IT()
1277 husart->Instance->TDR = (USART_DUMMY_DATA & (uint16_t)0x00FF); in HAL_USART_Receive_IT()
1300 HAL_StatusTypeDef HAL_USART_TransmitReceive_IT(USART_HandleTypeDef *husart, const uint8_t *pTxData,… in HAL_USART_TransmitReceive_IT() argument
1304 if (husart->State == HAL_USART_STATE_READY) in HAL_USART_TransmitReceive_IT()
1312 __HAL_LOCK(husart); in HAL_USART_TransmitReceive_IT()
1314 husart->pRxBuffPtr = pRxData; in HAL_USART_TransmitReceive_IT()
1315 husart->RxXferSize = Size; in HAL_USART_TransmitReceive_IT()
1316 husart->RxXferCount = Size; in HAL_USART_TransmitReceive_IT()
1317 husart->pTxBuffPtr = pTxData; in HAL_USART_TransmitReceive_IT()
1318 husart->TxXferSize = Size; in HAL_USART_TransmitReceive_IT()
1319 husart->TxXferCount = Size; in HAL_USART_TransmitReceive_IT()
1322 USART_MASK_COMPUTATION(husart); in HAL_USART_TransmitReceive_IT()
1324 husart->ErrorCode = HAL_USART_ERROR_NONE; in HAL_USART_TransmitReceive_IT()
1325 husart->State = HAL_USART_STATE_BUSY_TX_RX; in HAL_USART_TransmitReceive_IT()
1328 if ((husart->FifoMode == USART_FIFOMODE_ENABLE) && (Size >= husart->NbRxDataToProcess)) in HAL_USART_TransmitReceive_IT()
1331 …if ((husart->Init.WordLength == USART_WORDLENGTH_9B) && (husart->Init.Parity == USART_PARITY_NONE)) in HAL_USART_TransmitReceive_IT()
1333 husart->TxISR = USART_TxISR_16BIT_FIFOEN; in HAL_USART_TransmitReceive_IT()
1334 husart->RxISR = USART_RxISR_16BIT_FIFOEN; in HAL_USART_TransmitReceive_IT()
1338 husart->TxISR = USART_TxISR_8BIT_FIFOEN; in HAL_USART_TransmitReceive_IT()
1339 husart->RxISR = USART_RxISR_8BIT_FIFOEN; in HAL_USART_TransmitReceive_IT()
1343 __HAL_UNLOCK(husart); in HAL_USART_TransmitReceive_IT()
1346 SET_BIT(husart->Instance->CR3, USART_CR3_EIE); in HAL_USART_TransmitReceive_IT()
1348 if (husart->Init.Parity != USART_PARITY_NONE) in HAL_USART_TransmitReceive_IT()
1351 SET_BIT(husart->Instance->CR1, USART_CR1_PEIE); in HAL_USART_TransmitReceive_IT()
1355 SET_BIT(husart->Instance->CR3, (USART_CR3_TXFTIE | USART_CR3_RXFTIE)); in HAL_USART_TransmitReceive_IT()
1359 …if ((husart->Init.WordLength == USART_WORDLENGTH_9B) && (husart->Init.Parity == USART_PARITY_NONE)) in HAL_USART_TransmitReceive_IT()
1361 husart->TxISR = USART_TxISR_16BIT; in HAL_USART_TransmitReceive_IT()
1362 husart->RxISR = USART_RxISR_16BIT; in HAL_USART_TransmitReceive_IT()
1366 husart->TxISR = USART_TxISR_8BIT; in HAL_USART_TransmitReceive_IT()
1367 husart->RxISR = USART_RxISR_8BIT; in HAL_USART_TransmitReceive_IT()
1371 __HAL_UNLOCK(husart); in HAL_USART_TransmitReceive_IT()
1374 SET_BIT(husart->Instance->CR3, USART_CR3_EIE); in HAL_USART_TransmitReceive_IT()
1377 if (husart->Init.Parity != USART_PARITY_NONE) in HAL_USART_TransmitReceive_IT()
1379 SET_BIT(husart->Instance->CR1, USART_CR1_PEIE | USART_CR1_RXNEIE_RXFNEIE); in HAL_USART_TransmitReceive_IT()
1383 SET_BIT(husart->Instance->CR1, USART_CR1_RXNEIE_RXFNEIE); in HAL_USART_TransmitReceive_IT()
1387 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 …status = HAL_DMA_Start_IT(husart->hdmatx, *(const uint32_t *)tmp, (uint32_t)&husart->Instance->TDR… in HAL_USART_Transmit_DMA()
1450 __HAL_USART_CLEAR_FLAG(husart, USART_CLEAR_TCF); in HAL_USART_Transmit_DMA()
1453 __HAL_UNLOCK(husart); in HAL_USART_Transmit_DMA()
1457 SET_BIT(husart->Instance->CR3, USART_CR3_DMAT); in HAL_USART_Transmit_DMA()
1464 husart->ErrorCode = HAL_USART_ERROR_DMA; in HAL_USART_Transmit_DMA()
1467 __HAL_UNLOCK(husart); in HAL_USART_Transmit_DMA()
1470 husart->State = HAL_USART_STATE_READY; in HAL_USART_Transmit_DMA()
1494 HAL_StatusTypeDef HAL_USART_Receive_DMA(USART_HandleTypeDef *husart, uint8_t *pRxData, uint16_t Siz… in HAL_USART_Receive_DMA() argument
1501 if (husart->State == HAL_USART_STATE_READY) in HAL_USART_Receive_DMA()
1509 __HAL_LOCK(husart); in HAL_USART_Receive_DMA()
1511 husart->pRxBuffPtr = pRxData; in HAL_USART_Receive_DMA()
1512 husart->RxXferSize = Size; in HAL_USART_Receive_DMA()
1513 husart->pTxBuffPtr = pRxData; in HAL_USART_Receive_DMA()
1514 husart->TxXferSize = Size; in HAL_USART_Receive_DMA()
1516 husart->ErrorCode = HAL_USART_ERROR_NONE; in HAL_USART_Receive_DMA()
1517 husart->State = HAL_USART_STATE_BUSY_RX; in HAL_USART_Receive_DMA()
1519 if (husart->hdmarx != NULL) in HAL_USART_Receive_DMA()
1522 husart->hdmarx->XferCpltCallback = USART_DMAReceiveCplt; in HAL_USART_Receive_DMA()
1525 husart->hdmarx->XferHalfCpltCallback = USART_DMARxHalfCplt; in HAL_USART_Receive_DMA()
1528 husart->hdmarx->XferErrorCallback = USART_DMAError; in HAL_USART_Receive_DMA()
1531 …status = HAL_DMA_Start_IT(husart->hdmarx, (uint32_t)&husart->Instance->RDR, *(uint32_t *)tmp, Size… in HAL_USART_Receive_DMA()
1535 (husart->SlaveMode == USART_SLAVEMODE_DISABLE)) in HAL_USART_Receive_DMA()
1542 if (husart->hdmatx != NULL) in HAL_USART_Receive_DMA()
1544 husart->hdmatx->XferErrorCallback = NULL; in HAL_USART_Receive_DMA()
1545 husart->hdmatx->XferHalfCpltCallback = NULL; in HAL_USART_Receive_DMA()
1546 husart->hdmatx->XferCpltCallback = NULL; in HAL_USART_Receive_DMA()
1547 …status = HAL_DMA_Start_IT(husart->hdmatx, *(uint32_t *)tmp, (uint32_t)&husart->Instance->TDR, Size… in HAL_USART_Receive_DMA()
1554 __HAL_UNLOCK(husart); in HAL_USART_Receive_DMA()
1556 if (husart->Init.Parity != USART_PARITY_NONE) in HAL_USART_Receive_DMA()
1559 SET_BIT(husart->Instance->CR1, USART_CR1_PEIE); in HAL_USART_Receive_DMA()
1563 SET_BIT(husart->Instance->CR3, USART_CR3_EIE); in HAL_USART_Receive_DMA()
1567 SET_BIT(husart->Instance->CR3, USART_CR3_DMAR); in HAL_USART_Receive_DMA()
1571 SET_BIT(husart->Instance->CR3, USART_CR3_DMAT); in HAL_USART_Receive_DMA()
1577 if (husart->hdmarx != NULL) in HAL_USART_Receive_DMA()
1579 status = HAL_DMA_Abort(husart->hdmarx); in HAL_USART_Receive_DMA()
1586 husart->ErrorCode = HAL_USART_ERROR_DMA; in HAL_USART_Receive_DMA()
1589 __HAL_UNLOCK(husart); in HAL_USART_Receive_DMA()
1592 husart->State = HAL_USART_STATE_READY; in HAL_USART_Receive_DMA()
1615 HAL_StatusTypeDef HAL_USART_TransmitReceive_DMA(USART_HandleTypeDef *husart, const uint8_t *pTxData… in HAL_USART_TransmitReceive_DMA() argument
1622 if (husart->State == HAL_USART_STATE_READY) in HAL_USART_TransmitReceive_DMA()
1630 __HAL_LOCK(husart); in HAL_USART_TransmitReceive_DMA()
1632 husart->pRxBuffPtr = pRxData; in HAL_USART_TransmitReceive_DMA()
1633 husart->RxXferSize = Size; in HAL_USART_TransmitReceive_DMA()
1634 husart->pTxBuffPtr = pTxData; in HAL_USART_TransmitReceive_DMA()
1635 husart->TxXferSize = Size; in HAL_USART_TransmitReceive_DMA()
1637 husart->ErrorCode = HAL_USART_ERROR_NONE; in HAL_USART_TransmitReceive_DMA()
1638 husart->State = HAL_USART_STATE_BUSY_TX_RX; in HAL_USART_TransmitReceive_DMA()
1640 if ((husart->hdmarx != NULL) && (husart->hdmatx != NULL)) in HAL_USART_TransmitReceive_DMA()
1643 husart->hdmarx->XferCpltCallback = USART_DMAReceiveCplt; in HAL_USART_TransmitReceive_DMA()
1646 husart->hdmarx->XferHalfCpltCallback = USART_DMARxHalfCplt; in HAL_USART_TransmitReceive_DMA()
1649 husart->hdmatx->XferCpltCallback = USART_DMATransmitCplt; in HAL_USART_TransmitReceive_DMA()
1652 husart->hdmatx->XferHalfCpltCallback = USART_DMATxHalfCplt; in HAL_USART_TransmitReceive_DMA()
1655 husart->hdmatx->XferErrorCallback = USART_DMAError; in HAL_USART_TransmitReceive_DMA()
1658 husart->hdmarx->XferErrorCallback = USART_DMAError; in HAL_USART_TransmitReceive_DMA()
1662 …status = HAL_DMA_Start_IT(husart->hdmarx, (uint32_t)&husart->Instance->RDR, *(const uint32_t *)tmp… in HAL_USART_TransmitReceive_DMA()
1668 …status = HAL_DMA_Start_IT(husart->hdmatx, *(const uint32_t *)tmp, (uint32_t)&husart->Instance->TDR… in HAL_USART_TransmitReceive_DMA()
1679 __HAL_UNLOCK(husart); in HAL_USART_TransmitReceive_DMA()
1681 if (husart->Init.Parity != USART_PARITY_NONE) in HAL_USART_TransmitReceive_DMA()
1684 SET_BIT(husart->Instance->CR1, USART_CR1_PEIE); in HAL_USART_TransmitReceive_DMA()
1688 SET_BIT(husart->Instance->CR3, USART_CR3_EIE); in HAL_USART_TransmitReceive_DMA()
1691 __HAL_USART_CLEAR_FLAG(husart, USART_CLEAR_TCF); in HAL_USART_TransmitReceive_DMA()
1695 SET_BIT(husart->Instance->CR3, USART_CR3_DMAR); in HAL_USART_TransmitReceive_DMA()
1699 SET_BIT(husart->Instance->CR3, USART_CR3_DMAT); in HAL_USART_TransmitReceive_DMA()
1705 if (husart->hdmarx != NULL) in HAL_USART_TransmitReceive_DMA()
1707 status = HAL_DMA_Abort(husart->hdmarx); in HAL_USART_TransmitReceive_DMA()
1714 husart->ErrorCode = HAL_USART_ERROR_DMA; in HAL_USART_TransmitReceive_DMA()
1717 __HAL_UNLOCK(husart); in HAL_USART_TransmitReceive_DMA()
1720 husart->State = HAL_USART_STATE_READY; in HAL_USART_TransmitReceive_DMA()
1736 HAL_StatusTypeDef HAL_USART_DMAPause(USART_HandleTypeDef *husart) in HAL_USART_DMAPause() argument
1738 const HAL_USART_StateTypeDef state = husart->State; in HAL_USART_DMAPause()
1741 __HAL_LOCK(husart); in HAL_USART_DMAPause()
1743 if ((HAL_IS_BIT_SET(husart->Instance->CR3, USART_CR3_DMAT)) && in HAL_USART_DMAPause()
1747 CLEAR_BIT(husart->Instance->CR3, USART_CR3_DMAT); in HAL_USART_DMAPause()
1752 if (HAL_IS_BIT_SET(husart->Instance->CR3, USART_CR3_DMAT)) in HAL_USART_DMAPause()
1755 CLEAR_BIT(husart->Instance->CR3, USART_CR3_DMAT); in HAL_USART_DMAPause()
1757 if (HAL_IS_BIT_SET(husart->Instance->CR3, USART_CR3_DMAR)) in HAL_USART_DMAPause()
1760 CLEAR_BIT(husart->Instance->CR1, USART_CR1_PEIE); in HAL_USART_DMAPause()
1761 CLEAR_BIT(husart->Instance->CR3, USART_CR3_EIE); in HAL_USART_DMAPause()
1764 CLEAR_BIT(husart->Instance->CR3, USART_CR3_DMAR); in HAL_USART_DMAPause()
1773 __HAL_UNLOCK(husart); in HAL_USART_DMAPause()
1783 HAL_StatusTypeDef HAL_USART_DMAResume(USART_HandleTypeDef *husart) in HAL_USART_DMAResume() argument
1785 const HAL_USART_StateTypeDef state = husart->State; in HAL_USART_DMAResume()
1788 __HAL_LOCK(husart); in HAL_USART_DMAResume()
1793 SET_BIT(husart->Instance->CR3, USART_CR3_DMAT); in HAL_USART_DMAResume()
1799 __HAL_USART_CLEAR_FLAG(husart, USART_CLEAR_OREF); in HAL_USART_DMAResume()
1802 if (husart->Init.Parity != USART_PARITY_NONE) in HAL_USART_DMAResume()
1804 SET_BIT(husart->Instance->CR1, USART_CR1_PEIE); in HAL_USART_DMAResume()
1806 SET_BIT(husart->Instance->CR3, USART_CR3_EIE); in HAL_USART_DMAResume()
1809 SET_BIT(husart->Instance->CR3, USART_CR3_DMAR); in HAL_USART_DMAResume()
1812 SET_BIT(husart->Instance->CR3, USART_CR3_DMAT); in HAL_USART_DMAResume()
1820 __HAL_UNLOCK(husart); in HAL_USART_DMAResume()
1830 HAL_StatusTypeDef HAL_USART_DMAStop(USART_HandleTypeDef *husart) in HAL_USART_DMAStop() argument
1840 CLEAR_BIT(husart->Instance->CR3, USART_CR3_DMAT); in HAL_USART_DMAStop()
1841 CLEAR_BIT(husart->Instance->CR3, USART_CR3_DMAR); in HAL_USART_DMAStop()
1844 if (husart->hdmatx != NULL) in HAL_USART_DMAStop()
1846 if (HAL_DMA_Abort(husart->hdmatx) != HAL_OK) in HAL_USART_DMAStop()
1848 if (HAL_DMA_GetError(husart->hdmatx) == HAL_DMA_ERROR_TIMEOUT) in HAL_USART_DMAStop()
1851 husart->ErrorCode = HAL_USART_ERROR_DMA; in HAL_USART_DMAStop()
1858 if (husart->hdmarx != NULL) in HAL_USART_DMAStop()
1860 if (HAL_DMA_Abort(husart->hdmarx) != HAL_OK) in HAL_USART_DMAStop()
1862 if (HAL_DMA_GetError(husart->hdmarx) == HAL_DMA_ERROR_TIMEOUT) in HAL_USART_DMAStop()
1865 husart->ErrorCode = HAL_USART_ERROR_DMA; in HAL_USART_DMAStop()
1872 USART_EndTransfer(husart); in HAL_USART_DMAStop()
1873 husart->State = HAL_USART_STATE_READY; in HAL_USART_DMAStop()
1890 HAL_StatusTypeDef HAL_USART_Abort(USART_HandleTypeDef *husart) in HAL_USART_Abort() argument
1893 …CLEAR_BIT(husart->Instance->CR1, (USART_CR1_RXNEIE_RXFNEIE | USART_CR1_PEIE | USART_CR1_TXEIE_TXFN… in HAL_USART_Abort()
1895 CLEAR_BIT(husart->Instance->CR3, (USART_CR3_EIE | USART_CR3_RXFTIE | USART_CR3_TXFTIE)); in HAL_USART_Abort()
1898 if (HAL_IS_BIT_SET(husart->Instance->CR3, USART_CR3_DMAT)) in HAL_USART_Abort()
1900 CLEAR_BIT(husart->Instance->CR3, USART_CR3_DMAT); in HAL_USART_Abort()
1903 if (husart->hdmatx != NULL) in HAL_USART_Abort()
1907 husart->hdmatx->XferAbortCallback = NULL; in HAL_USART_Abort()
1909 if (HAL_DMA_Abort(husart->hdmatx) != HAL_OK) in HAL_USART_Abort()
1911 if (HAL_DMA_GetError(husart->hdmatx) == HAL_DMA_ERROR_TIMEOUT) in HAL_USART_Abort()
1914 husart->ErrorCode = HAL_USART_ERROR_DMA; in HAL_USART_Abort()
1923 if (HAL_IS_BIT_SET(husart->Instance->CR3, USART_CR3_DMAR)) in HAL_USART_Abort()
1925 CLEAR_BIT(husart->Instance->CR3, USART_CR3_DMAR); in HAL_USART_Abort()
1928 if (husart->hdmarx != NULL) in HAL_USART_Abort()
1932 husart->hdmarx->XferAbortCallback = NULL; in HAL_USART_Abort()
1934 if (HAL_DMA_Abort(husart->hdmarx) != HAL_OK) in HAL_USART_Abort()
1936 if (HAL_DMA_GetError(husart->hdmarx) == HAL_DMA_ERROR_TIMEOUT) in HAL_USART_Abort()
1939 husart->ErrorCode = HAL_USART_ERROR_DMA; in HAL_USART_Abort()
1948 husart->TxXferCount = 0U; in HAL_USART_Abort()
1949 husart->RxXferCount = 0U; in HAL_USART_Abort()
1952 …__HAL_USART_CLEAR_FLAG(husart, USART_CLEAR_OREF | USART_CLEAR_NEF | USART_CLEAR_PEF | USART_CLEAR_… in HAL_USART_Abort()
1955 if (husart->FifoMode == USART_FIFOMODE_ENABLE) in HAL_USART_Abort()
1957 __HAL_USART_SEND_REQ(husart, USART_TXDATA_FLUSH_REQUEST); in HAL_USART_Abort()
1961 __HAL_USART_SEND_REQ(husart, USART_RXDATA_FLUSH_REQUEST); in HAL_USART_Abort()
1964 husart->State = HAL_USART_STATE_READY; in HAL_USART_Abort()
1967 husart->ErrorCode = HAL_USART_ERROR_NONE; in HAL_USART_Abort()
1986 HAL_StatusTypeDef HAL_USART_Abort_IT(USART_HandleTypeDef *husart) in HAL_USART_Abort_IT() argument
1991 …CLEAR_BIT(husart->Instance->CR1, (USART_CR1_RXNEIE_RXFNEIE | USART_CR1_PEIE | USART_CR1_TXEIE_TXFN… in HAL_USART_Abort_IT()
1993 CLEAR_BIT(husart->Instance->CR3, (USART_CR3_EIE | USART_CR3_RXFTIE | USART_CR3_TXFTIE)); in HAL_USART_Abort_IT()
1998 if (husart->hdmatx != NULL) in HAL_USART_Abort_IT()
2002 if (HAL_IS_BIT_SET(husart->Instance->CR3, USART_CR3_DMAT)) in HAL_USART_Abort_IT()
2004 husart->hdmatx->XferAbortCallback = USART_DMATxAbortCallback; in HAL_USART_Abort_IT()
2008 husart->hdmatx->XferAbortCallback = NULL; in HAL_USART_Abort_IT()
2012 if (husart->hdmarx != NULL) in HAL_USART_Abort_IT()
2016 if (HAL_IS_BIT_SET(husart->Instance->CR3, USART_CR3_DMAR)) in HAL_USART_Abort_IT()
2018 husart->hdmarx->XferAbortCallback = USART_DMARxAbortCallback; in HAL_USART_Abort_IT()
2022 husart->hdmarx->XferAbortCallback = NULL; in HAL_USART_Abort_IT()
2027 if (HAL_IS_BIT_SET(husart->Instance->CR3, USART_CR3_DMAT)) in HAL_USART_Abort_IT()
2030 CLEAR_BIT(husart->Instance->CR3, USART_CR3_DMAT); in HAL_USART_Abort_IT()
2033 if (husart->hdmatx != NULL) in HAL_USART_Abort_IT()
2039 if (HAL_DMA_Abort_IT(husart->hdmatx) != HAL_OK) in HAL_USART_Abort_IT()
2041 husart->hdmatx->XferAbortCallback = NULL; in HAL_USART_Abort_IT()
2051 if (HAL_IS_BIT_SET(husart->Instance->CR3, USART_CR3_DMAR)) in HAL_USART_Abort_IT()
2053 CLEAR_BIT(husart->Instance->CR3, USART_CR3_DMAR); in HAL_USART_Abort_IT()
2056 if (husart->hdmarx != NULL) in HAL_USART_Abort_IT()
2062 if (HAL_DMA_Abort_IT(husart->hdmarx) != HAL_OK) in HAL_USART_Abort_IT()
2064 husart->hdmarx->XferAbortCallback = NULL; in HAL_USART_Abort_IT()
2078 husart->TxXferCount = 0U; in HAL_USART_Abort_IT()
2079 husart->RxXferCount = 0U; in HAL_USART_Abort_IT()
2082 husart->ErrorCode = HAL_USART_ERROR_NONE; in HAL_USART_Abort_IT()
2085 …__HAL_USART_CLEAR_FLAG(husart, USART_CLEAR_OREF | USART_CLEAR_NEF | USART_CLEAR_PEF | USART_CLEAR_… in HAL_USART_Abort_IT()
2088 if (husart->FifoMode == USART_FIFOMODE_ENABLE) in HAL_USART_Abort_IT()
2090 __HAL_USART_SEND_REQ(husart, USART_TXDATA_FLUSH_REQUEST); in HAL_USART_Abort_IT()
2094 __HAL_USART_SEND_REQ(husart, USART_RXDATA_FLUSH_REQUEST); in HAL_USART_Abort_IT()
2097 husart->State = HAL_USART_STATE_READY; in HAL_USART_Abort_IT()
2102 husart->AbortCpltCallback(husart); in HAL_USART_Abort_IT()
2105 HAL_USART_AbortCpltCallback(husart); in HAL_USART_Abort_IT()
2117 void HAL_USART_IRQHandler(USART_HandleTypeDef *husart) in HAL_USART_IRQHandler() argument
2119 uint32_t isrflags = READ_REG(husart->Instance->ISR); in HAL_USART_IRQHandler()
2120 uint32_t cr1its = READ_REG(husart->Instance->CR1); in HAL_USART_IRQHandler()
2121 uint32_t cr3its = READ_REG(husart->Instance->CR3); in HAL_USART_IRQHandler()
2135 if (husart->RxISR != NULL) in HAL_USART_IRQHandler()
2137 husart->RxISR(husart); in HAL_USART_IRQHandler()
2151 __HAL_USART_CLEAR_IT(husart, USART_CLEAR_PEF); in HAL_USART_IRQHandler()
2153 husart->ErrorCode |= HAL_USART_ERROR_PE; in HAL_USART_IRQHandler()
2159 __HAL_USART_CLEAR_IT(husart, USART_CLEAR_FEF); in HAL_USART_IRQHandler()
2161 husart->ErrorCode |= HAL_USART_ERROR_FE; in HAL_USART_IRQHandler()
2167 __HAL_USART_CLEAR_IT(husart, USART_CLEAR_NEF); in HAL_USART_IRQHandler()
2169 husart->ErrorCode |= HAL_USART_ERROR_NE; in HAL_USART_IRQHandler()
2177 __HAL_USART_CLEAR_IT(husart, USART_CLEAR_OREF); in HAL_USART_IRQHandler()
2179 husart->ErrorCode |= HAL_USART_ERROR_ORE; in HAL_USART_IRQHandler()
2185 __HAL_UART_CLEAR_FLAG(husart, UART_CLEAR_RTOF); in HAL_USART_IRQHandler()
2187 husart->ErrorCode |= HAL_USART_ERROR_RTO; in HAL_USART_IRQHandler()
2194 if (husart->State == HAL_USART_STATE_BUSY_RX) in HAL_USART_IRQHandler()
2196 __HAL_USART_CLEAR_UDRFLAG(husart); in HAL_USART_IRQHandler()
2201 __HAL_USART_CLEAR_UDRFLAG(husart); in HAL_USART_IRQHandler()
2202 husart->ErrorCode |= HAL_USART_ERROR_UDR; in HAL_USART_IRQHandler()
2207 if (husart->ErrorCode != HAL_USART_ERROR_NONE) in HAL_USART_IRQHandler()
2214 if (husart->RxISR != NULL) in HAL_USART_IRQHandler()
2216 husart->RxISR(husart); in HAL_USART_IRQHandler()
2222 errorcode = husart->ErrorCode & HAL_USART_ERROR_ORE; in HAL_USART_IRQHandler()
2223 if ((HAL_IS_BIT_SET(husart->Instance->CR3, USART_CR3_DMAR)) || in HAL_USART_IRQHandler()
2229 USART_EndTransfer(husart); in HAL_USART_IRQHandler()
2232 if (HAL_IS_BIT_SET(husart->Instance->CR3, USART_CR3_DMAR)) in HAL_USART_IRQHandler()
2234 CLEAR_BIT(husart->Instance->CR3, USART_CR3_DMAR | USART_CR3_DMAR); in HAL_USART_IRQHandler()
2237 if (husart->hdmatx != NULL) in HAL_USART_IRQHandler()
2241 husart->hdmatx->XferAbortCallback = NULL; in HAL_USART_IRQHandler()
2244 (void)HAL_DMA_Abort_IT(husart->hdmatx); in HAL_USART_IRQHandler()
2248 if (husart->hdmarx != NULL) in HAL_USART_IRQHandler()
2252 husart->hdmarx->XferAbortCallback = USART_DMAAbortOnError; in HAL_USART_IRQHandler()
2255 if (HAL_DMA_Abort_IT(husart->hdmarx) != HAL_OK) in HAL_USART_IRQHandler()
2258 husart->hdmarx->XferAbortCallback(husart->hdmarx); in HAL_USART_IRQHandler()
2266 husart->ErrorCallback(husart); in HAL_USART_IRQHandler()
2269 HAL_USART_ErrorCallback(husart); in HAL_USART_IRQHandler()
2278 husart->ErrorCallback(husart); in HAL_USART_IRQHandler()
2281 HAL_USART_ErrorCallback(husart); in HAL_USART_IRQHandler()
2291 husart->ErrorCallback(husart); in HAL_USART_IRQHandler()
2294 HAL_USART_ErrorCallback(husart); in HAL_USART_IRQHandler()
2296 husart->ErrorCode = HAL_USART_ERROR_NONE; in HAL_USART_IRQHandler()
2309 if (husart->TxISR != NULL) in HAL_USART_IRQHandler()
2311 husart->TxISR(husart); in HAL_USART_IRQHandler()
2319 USART_EndTransmit_IT(husart); in HAL_USART_IRQHandler()
2328 husart->TxFifoEmptyCallback(husart); in HAL_USART_IRQHandler()
2331 HAL_USARTEx_TxFifoEmptyCallback(husart); in HAL_USART_IRQHandler()
2341 husart->RxFifoFullCallback(husart); in HAL_USART_IRQHandler()
2344 HAL_USARTEx_RxFifoFullCallback(husart); in HAL_USART_IRQHandler()
2355 __weak void HAL_USART_TxCpltCallback(USART_HandleTypeDef *husart) in HAL_USART_TxCpltCallback() argument
2358 UNUSED(husart); in HAL_USART_TxCpltCallback()
2370 __weak void HAL_USART_TxHalfCpltCallback(USART_HandleTypeDef *husart) in HAL_USART_TxHalfCpltCallback() argument
2373 UNUSED(husart); in HAL_USART_TxHalfCpltCallback()
2385 __weak void HAL_USART_RxCpltCallback(USART_HandleTypeDef *husart) in HAL_USART_RxCpltCallback() argument
2388 UNUSED(husart); in HAL_USART_RxCpltCallback()
2400 __weak void HAL_USART_RxHalfCpltCallback(USART_HandleTypeDef *husart) in HAL_USART_RxHalfCpltCallback() argument
2403 UNUSED(husart); in HAL_USART_RxHalfCpltCallback()
2415 __weak void HAL_USART_TxRxCpltCallback(USART_HandleTypeDef *husart) in HAL_USART_TxRxCpltCallback() argument
2418 UNUSED(husart); in HAL_USART_TxRxCpltCallback()
2430 __weak void HAL_USART_ErrorCallback(USART_HandleTypeDef *husart) in HAL_USART_ErrorCallback() argument
2433 UNUSED(husart); in HAL_USART_ErrorCallback()
2445 __weak void HAL_USART_AbortCpltCallback(USART_HandleTypeDef *husart) in HAL_USART_AbortCpltCallback() argument
2448 UNUSED(husart); in HAL_USART_AbortCpltCallback()
2482 HAL_USART_StateTypeDef HAL_USART_GetState(const USART_HandleTypeDef *husart) in HAL_USART_GetState() argument
2484 return husart->State; in HAL_USART_GetState()
2493 uint32_t HAL_USART_GetError(const USART_HandleTypeDef *husart) in HAL_USART_GetError() argument
2495 return husart->ErrorCode; in HAL_USART_GetError()
2516 void USART_InitCallbacksToDefault(USART_HandleTypeDef *husart) in USART_InitCallbacksToDefault() argument
2519husart->TxHalfCpltCallback = HAL_USART_TxHalfCpltCallback; /* Legacy weak TxHalfCplt… in USART_InitCallbacksToDefault()
2520husart->TxCpltCallback = HAL_USART_TxCpltCallback; /* Legacy weak TxCpltCall… in USART_InitCallbacksToDefault()
2521husart->RxHalfCpltCallback = HAL_USART_RxHalfCpltCallback; /* Legacy weak RxHalfCplt… in USART_InitCallbacksToDefault()
2522husart->RxCpltCallback = HAL_USART_RxCpltCallback; /* Legacy weak RxCpltCall… in USART_InitCallbacksToDefault()
2523husart->TxRxCpltCallback = HAL_USART_TxRxCpltCallback; /* Legacy weak TxRxCpltCa… in USART_InitCallbacksToDefault()
2524husart->ErrorCallback = HAL_USART_ErrorCallback; /* Legacy weak ErrorCallb… in USART_InitCallbacksToDefault()
2525husart->AbortCpltCallback = HAL_USART_AbortCpltCallback; /* Legacy weak AbortCpltC… in USART_InitCallbacksToDefault()
2526husart->RxFifoFullCallback = HAL_USARTEx_RxFifoFullCallback; /* Legacy weak RxFifoFull… in USART_InitCallbacksToDefault()
2527husart->TxFifoEmptyCallback = HAL_USARTEx_TxFifoEmptyCallback; /* Legacy weak TxFifoEmpt… in USART_InitCallbacksToDefault()
2536 static void USART_EndTransfer(USART_HandleTypeDef *husart) in USART_EndTransfer() argument
2539 …CLEAR_BIT(husart->Instance->CR1, (USART_CR1_RXNEIE_RXFNEIE | USART_CR1_PEIE | USART_CR1_TXEIE_TXFN… in USART_EndTransfer()
2540 CLEAR_BIT(husart->Instance->CR3, (USART_CR3_EIE | USART_CR3_RXFTIE | USART_CR3_TXFTIE)); in USART_EndTransfer()
2543 husart->State = HAL_USART_STATE_READY; in USART_EndTransfer()
2553 USART_HandleTypeDef *husart = (USART_HandleTypeDef *)(hdma->Parent); in USART_DMATransmitCplt() local
2558 husart->TxXferCount = 0U; in USART_DMATransmitCplt()
2560 if (husart->State == HAL_USART_STATE_BUSY_TX) in USART_DMATransmitCplt()
2564 CLEAR_BIT(husart->Instance->CR3, USART_CR3_DMAT); in USART_DMATransmitCplt()
2567 __HAL_USART_ENABLE_IT(husart, USART_IT_TC); in USART_DMATransmitCplt()
2573 if (husart->State == HAL_USART_STATE_BUSY_TX) in USART_DMATransmitCplt()
2577 husart->TxCpltCallback(husart); in USART_DMATransmitCplt()
2580 HAL_USART_TxCpltCallback(husart); in USART_DMATransmitCplt()
2593 USART_HandleTypeDef *husart = (USART_HandleTypeDef *)(hdma->Parent); in USART_DMATxHalfCplt() local
2597 husart->TxHalfCpltCallback(husart); in USART_DMATxHalfCplt()
2600 HAL_USART_TxHalfCpltCallback(husart); in USART_DMATxHalfCplt()
2611 USART_HandleTypeDef *husart = (USART_HandleTypeDef *)(hdma->Parent); in USART_DMAReceiveCplt() local
2616 husart->RxXferCount = 0U; in USART_DMAReceiveCplt()
2619 CLEAR_BIT(husart->Instance->CR1, USART_CR1_PEIE); in USART_DMAReceiveCplt()
2620 CLEAR_BIT(husart->Instance->CR3, USART_CR3_EIE); in USART_DMAReceiveCplt()
2624 CLEAR_BIT(husart->Instance->CR3, USART_CR3_DMAR); in USART_DMAReceiveCplt()
2627 CLEAR_BIT(husart->Instance->CR3, USART_CR3_DMAT); in USART_DMAReceiveCplt()
2629 if (husart->State == HAL_USART_STATE_BUSY_RX) in USART_DMAReceiveCplt()
2633 husart->RxCpltCallback(husart); in USART_DMAReceiveCplt()
2636 HAL_USART_RxCpltCallback(husart); in USART_DMAReceiveCplt()
2644 husart->TxRxCpltCallback(husart); in USART_DMAReceiveCplt()
2647 HAL_USART_TxRxCpltCallback(husart); in USART_DMAReceiveCplt()
2650 husart->State = HAL_USART_STATE_READY; in USART_DMAReceiveCplt()
2655 if (husart->State == HAL_USART_STATE_BUSY_RX) in USART_DMAReceiveCplt()
2659 husart->RxCpltCallback(husart); in USART_DMAReceiveCplt()
2662 HAL_USART_RxCpltCallback(husart); in USART_DMAReceiveCplt()
2670 husart->TxRxCpltCallback(husart); in USART_DMAReceiveCplt()
2673 HAL_USART_TxRxCpltCallback(husart); in USART_DMAReceiveCplt()
2686 USART_HandleTypeDef *husart = (USART_HandleTypeDef *)(hdma->Parent); in USART_DMARxHalfCplt() local
2690 husart->RxHalfCpltCallback(husart); in USART_DMARxHalfCplt()
2693 HAL_USART_RxHalfCpltCallback(husart); in USART_DMARxHalfCplt()
2704 USART_HandleTypeDef *husart = (USART_HandleTypeDef *)(hdma->Parent); in USART_DMAError() local
2706 husart->RxXferCount = 0U; in USART_DMAError()
2707 husart->TxXferCount = 0U; in USART_DMAError()
2708 USART_EndTransfer(husart); in USART_DMAError()
2710 husart->ErrorCode |= HAL_USART_ERROR_DMA; in USART_DMAError()
2711 husart->State = HAL_USART_STATE_READY; in USART_DMAError()
2715 husart->ErrorCallback(husart); in USART_DMAError()
2718 HAL_USART_ErrorCallback(husart); in USART_DMAError()
2730 USART_HandleTypeDef *husart = (USART_HandleTypeDef *)(hdma->Parent); in USART_DMAAbortOnError() local
2731 husart->RxXferCount = 0U; in USART_DMAAbortOnError()
2732 husart->TxXferCount = 0U; in USART_DMAAbortOnError()
2736 husart->ErrorCallback(husart); in USART_DMAAbortOnError()
2739 HAL_USART_ErrorCallback(husart); in USART_DMAAbortOnError()
2753 USART_HandleTypeDef *husart = (USART_HandleTypeDef *)(hdma->Parent); in USART_DMATxAbortCallback() local
2755 husart->hdmatx->XferAbortCallback = NULL; in USART_DMATxAbortCallback()
2758 if (husart->hdmarx != NULL) in USART_DMATxAbortCallback()
2760 if (husart->hdmarx->XferAbortCallback != NULL) in USART_DMATxAbortCallback()
2767 husart->TxXferCount = 0U; in USART_DMATxAbortCallback()
2768 husart->RxXferCount = 0U; in USART_DMATxAbortCallback()
2771 husart->ErrorCode = HAL_USART_ERROR_NONE; in USART_DMATxAbortCallback()
2774 …__HAL_USART_CLEAR_FLAG(husart, USART_CLEAR_OREF | USART_CLEAR_NEF | USART_CLEAR_PEF | USART_CLEAR_… in USART_DMATxAbortCallback()
2777 husart->State = HAL_USART_STATE_READY; in USART_DMATxAbortCallback()
2782 husart->AbortCpltCallback(husart); in USART_DMATxAbortCallback()
2785 HAL_USART_AbortCpltCallback(husart); in USART_DMATxAbortCallback()
2801 USART_HandleTypeDef *husart = (USART_HandleTypeDef *)(hdma->Parent); in USART_DMARxAbortCallback() local
2803 husart->hdmarx->XferAbortCallback = NULL; in USART_DMARxAbortCallback()
2806 if (husart->hdmatx != NULL) in USART_DMARxAbortCallback()
2808 if (husart->hdmatx->XferAbortCallback != NULL) in USART_DMARxAbortCallback()
2815 husart->TxXferCount = 0U; in USART_DMARxAbortCallback()
2816 husart->RxXferCount = 0U; in USART_DMARxAbortCallback()
2819 husart->ErrorCode = HAL_USART_ERROR_NONE; in USART_DMARxAbortCallback()
2822 …__HAL_USART_CLEAR_FLAG(husart, USART_CLEAR_OREF | USART_CLEAR_NEF | USART_CLEAR_PEF | USART_CLEAR_… in USART_DMARxAbortCallback()
2825 husart->State = HAL_USART_STATE_READY; in USART_DMARxAbortCallback()
2830 husart->AbortCpltCallback(husart); in USART_DMARxAbortCallback()
2833 HAL_USART_AbortCpltCallback(husart); in USART_DMARxAbortCallback()
2848 static HAL_StatusTypeDef USART_WaitOnFlagUntilTimeout(USART_HandleTypeDef *husart, uint32_t Flag, F… in USART_WaitOnFlagUntilTimeout() argument
2852 while ((__HAL_USART_GET_FLAG(husart, Flag) ? SET : RESET) == Status) in USART_WaitOnFlagUntilTimeout()
2859 husart->State = HAL_USART_STATE_READY; in USART_WaitOnFlagUntilTimeout()
2862 __HAL_UNLOCK(husart); in USART_WaitOnFlagUntilTimeout()
2876 static HAL_StatusTypeDef USART_SetConfig(USART_HandleTypeDef *husart) in USART_SetConfig() argument
2886 assert_param(IS_USART_POLARITY(husart->Init.CLKPolarity)); in USART_SetConfig()
2887 assert_param(IS_USART_PHASE(husart->Init.CLKPhase)); in USART_SetConfig()
2888 assert_param(IS_USART_LASTBIT(husart->Init.CLKLastBit)); in USART_SetConfig()
2889 assert_param(IS_USART_BAUDRATE(husart->Init.BaudRate)); in USART_SetConfig()
2890 assert_param(IS_USART_WORD_LENGTH(husart->Init.WordLength)); in USART_SetConfig()
2891 assert_param(IS_USART_STOPBITS(husart->Init.StopBits)); in USART_SetConfig()
2892 assert_param(IS_USART_PARITY(husart->Init.Parity)); in USART_SetConfig()
2893 assert_param(IS_USART_MODE(husart->Init.Mode)); in USART_SetConfig()
2894 assert_param(IS_USART_PRESCALER(husart->Init.ClockPrescaler)); in USART_SetConfig()
2903 …tmpreg = (uint32_t)husart->Init.WordLength | husart->Init.Parity | husart->Init.Mode | USART_CR1_O… in USART_SetConfig()
2904 MODIFY_REG(husart->Instance->CR1, USART_CR1_FIELDS, tmpreg); in USART_SetConfig()
2913 tmpreg |= (uint32_t)husart->Init.CLKLastBit; in USART_SetConfig()
2914 tmpreg |= ((uint32_t)husart->Init.CLKPolarity | (uint32_t)husart->Init.CLKPhase); in USART_SetConfig()
2915 tmpreg |= (uint32_t)husart->Init.StopBits; in USART_SetConfig()
2916 MODIFY_REG(husart->Instance->CR2, USART_CR2_FIELDS, tmpreg); in USART_SetConfig()
2921 MODIFY_REG(husart->Instance->PRESC, USART_PRESC_PRESCALER, husart->Init.ClockPrescaler); in USART_SetConfig()
2925 USART_GETCLOCKSOURCE(husart, clocksource); in USART_SetConfig()
2931 …usartdiv = (uint32_t)(USART_DIV_SAMPLING8(pclk, husart->Init.BaudRate, husart->Init.ClockPrescaler… in USART_SetConfig()
2934 …usartdiv = (uint32_t)(USART_DIV_SAMPLING8(HSI_VALUE, husart->Init.BaudRate, husart->Init.ClockPres… in USART_SetConfig()
2938 …usartdiv = (uint32_t)(USART_DIV_SAMPLING8(pclk, husart->Init.BaudRate, husart->Init.ClockPrescaler… in USART_SetConfig()
2941 …usartdiv = (uint32_t)(USART_DIV_SAMPLING8(LSE_VALUE, husart->Init.BaudRate, husart->Init.ClockPres… in USART_SetConfig()
2953 husart->Instance->BRR = brrtemp; in USART_SetConfig()
2961 husart->NbTxDataToProcess = 1U; in USART_SetConfig()
2962 husart->NbRxDataToProcess = 1U; in USART_SetConfig()
2965 husart->RxISR = NULL; in USART_SetConfig()
2966 husart->TxISR = NULL; in USART_SetConfig()
2976 static HAL_StatusTypeDef USART_CheckIdleState(USART_HandleTypeDef *husart) in USART_CheckIdleState() argument
2981 husart->ErrorCode = HAL_USART_ERROR_NONE; in USART_CheckIdleState()
2987 if ((husart->Instance->CR1 & USART_CR1_TE) == USART_CR1_TE) in USART_CheckIdleState()
2990 …if (USART_WaitOnFlagUntilTimeout(husart, USART_ISR_TEACK, RESET, tickstart, USART_TEACK_REACK_TIME… in USART_CheckIdleState()
2997 if ((husart->Instance->CR1 & USART_CR1_RE) == USART_CR1_RE) in USART_CheckIdleState()
3000 …if (USART_WaitOnFlagUntilTimeout(husart, USART_ISR_REACK, RESET, tickstart, USART_TEACK_REACK_TIME… in USART_CheckIdleState()
3008 husart->State = HAL_USART_STATE_READY; in USART_CheckIdleState()
3011 __HAL_UNLOCK(husart); in USART_CheckIdleState()
3026 static void USART_TxISR_8BIT(USART_HandleTypeDef *husart) in USART_TxISR_8BIT() argument
3028 const HAL_USART_StateTypeDef state = husart->State; in USART_TxISR_8BIT()
3034 if (husart->TxXferCount == 0U) in USART_TxISR_8BIT()
3037 __HAL_USART_DISABLE_IT(husart, USART_IT_TXE); in USART_TxISR_8BIT()
3040 __HAL_USART_ENABLE_IT(husart, USART_IT_TC); in USART_TxISR_8BIT()
3044 husart->Instance->TDR = (uint8_t)(*husart->pTxBuffPtr & (uint8_t)0xFF); in USART_TxISR_8BIT()
3045 husart->pTxBuffPtr++; in USART_TxISR_8BIT()
3046 husart->TxXferCount--; in USART_TxISR_8BIT()
3061 static void USART_TxISR_16BIT(USART_HandleTypeDef *husart) in USART_TxISR_16BIT() argument
3063 const HAL_USART_StateTypeDef state = husart->State; in USART_TxISR_16BIT()
3069 if (husart->TxXferCount == 0U) in USART_TxISR_16BIT()
3072 __HAL_USART_DISABLE_IT(husart, USART_IT_TXE); in USART_TxISR_16BIT()
3075 __HAL_USART_ENABLE_IT(husart, USART_IT_TC); in USART_TxISR_16BIT()
3079 tmp = (const uint16_t *) husart->pTxBuffPtr; in USART_TxISR_16BIT()
3080 husart->Instance->TDR = (uint16_t)(*tmp & 0x01FFU); in USART_TxISR_16BIT()
3081 husart->pTxBuffPtr += 2U; in USART_TxISR_16BIT()
3082 husart->TxXferCount--; in USART_TxISR_16BIT()
3097 static void USART_TxISR_8BIT_FIFOEN(USART_HandleTypeDef *husart) in USART_TxISR_8BIT_FIFOEN() argument
3099 const HAL_USART_StateTypeDef state = husart->State; in USART_TxISR_8BIT_FIFOEN()
3106 for (nb_tx_data = husart->NbTxDataToProcess ; nb_tx_data > 0U ; nb_tx_data--) in USART_TxISR_8BIT_FIFOEN()
3108 if (husart->TxXferCount == 0U) in USART_TxISR_8BIT_FIFOEN()
3111 __HAL_USART_DISABLE_IT(husart, USART_IT_TXFT); in USART_TxISR_8BIT_FIFOEN()
3114 __HAL_USART_ENABLE_IT(husart, USART_IT_TC); in USART_TxISR_8BIT_FIFOEN()
3118 else if (__HAL_USART_GET_FLAG(husart, USART_FLAG_TXFNF) == SET) in USART_TxISR_8BIT_FIFOEN()
3120 husart->Instance->TDR = (uint8_t)(*husart->pTxBuffPtr & (uint8_t)0xFF); in USART_TxISR_8BIT_FIFOEN()
3121 husart->pTxBuffPtr++; in USART_TxISR_8BIT_FIFOEN()
3122 husart->TxXferCount--; in USART_TxISR_8BIT_FIFOEN()
3142 static void USART_TxISR_16BIT_FIFOEN(USART_HandleTypeDef *husart) in USART_TxISR_16BIT_FIFOEN() argument
3144 const HAL_USART_StateTypeDef state = husart->State; in USART_TxISR_16BIT_FIFOEN()
3152 for (nb_tx_data = husart->NbTxDataToProcess ; nb_tx_data > 0U ; nb_tx_data--) in USART_TxISR_16BIT_FIFOEN()
3154 if (husart->TxXferCount == 0U) in USART_TxISR_16BIT_FIFOEN()
3157 __HAL_USART_DISABLE_IT(husart, USART_IT_TXFT); in USART_TxISR_16BIT_FIFOEN()
3160 __HAL_USART_ENABLE_IT(husart, USART_IT_TC); in USART_TxISR_16BIT_FIFOEN()
3164 else if (__HAL_USART_GET_FLAG(husart, USART_FLAG_TXFNF) == SET) in USART_TxISR_16BIT_FIFOEN()
3166 tmp = (const uint16_t *) husart->pTxBuffPtr; in USART_TxISR_16BIT_FIFOEN()
3167 husart->Instance->TDR = (uint16_t)(*tmp & 0x01FFU); in USART_TxISR_16BIT_FIFOEN()
3168 husart->pTxBuffPtr += 2U; in USART_TxISR_16BIT_FIFOEN()
3169 husart->TxXferCount--; in USART_TxISR_16BIT_FIFOEN()
3185 static void USART_EndTransmit_IT(USART_HandleTypeDef *husart) in USART_EndTransmit_IT() argument
3188 __HAL_USART_DISABLE_IT(husart, USART_IT_TC); in USART_EndTransmit_IT()
3191 __HAL_USART_DISABLE_IT(husart, USART_IT_ERR); in USART_EndTransmit_IT()
3194 husart->TxISR = NULL; in USART_EndTransmit_IT()
3196 if (husart->State == HAL_USART_STATE_BUSY_TX) in USART_EndTransmit_IT()
3199 __HAL_USART_CLEAR_OREFLAG(husart); in USART_EndTransmit_IT()
3200 __HAL_USART_SEND_REQ(husart, USART_RXDATA_FLUSH_REQUEST); in USART_EndTransmit_IT()
3203 husart->State = HAL_USART_STATE_READY; in USART_EndTransmit_IT()
3207 husart->TxCpltCallback(husart); in USART_EndTransmit_IT()
3210 HAL_USART_TxCpltCallback(husart); in USART_EndTransmit_IT()
3213 else if (husart->RxXferCount == 0U) in USART_EndTransmit_IT()
3216 husart->State = HAL_USART_STATE_READY; in USART_EndTransmit_IT()
3220 husart->TxRxCpltCallback(husart); in USART_EndTransmit_IT()
3223 HAL_USART_TxRxCpltCallback(husart); in USART_EndTransmit_IT()
3242 static void USART_RxISR_8BIT(USART_HandleTypeDef *husart) in USART_RxISR_8BIT() argument
3244 const HAL_USART_StateTypeDef state = husart->State; in USART_RxISR_8BIT()
3246 uint16_t uhMask = husart->Mask; in USART_RxISR_8BIT()
3252 *husart->pRxBuffPtr = (uint8_t)(husart->Instance->RDR & (uint8_t)uhMask); in USART_RxISR_8BIT()
3253 husart->pRxBuffPtr++; in USART_RxISR_8BIT()
3254 husart->RxXferCount--; in USART_RxISR_8BIT()
3256 if (husart->RxXferCount == 0U) in USART_RxISR_8BIT()
3259 CLEAR_BIT(husart->Instance->CR1, (USART_CR1_RXNEIE_RXFNEIE | USART_CR1_PEIE)); in USART_RxISR_8BIT()
3262 CLEAR_BIT(husart->Instance->CR3, USART_CR3_EIE); in USART_RxISR_8BIT()
3265 husart->RxISR = NULL; in USART_RxISR_8BIT()
3268 txftie = READ_BIT(husart->Instance->CR3, USART_CR3_TXFTIE); in USART_RxISR_8BIT()
3269 txdatacount = husart->TxXferCount; in USART_RxISR_8BIT()
3274 if (husart->SlaveMode == USART_SLAVEMODE_ENABLE) in USART_RxISR_8BIT()
3276 __HAL_USART_CLEAR_UDRFLAG(husart); in USART_RxISR_8BIT()
3277 __HAL_USART_SEND_REQ(husart, USART_TXDATA_FLUSH_REQUEST); in USART_RxISR_8BIT()
3281 husart->State = HAL_USART_STATE_READY; in USART_RxISR_8BIT()
3285 husart->RxCpltCallback(husart); in USART_RxISR_8BIT()
3288 HAL_USART_RxCpltCallback(husart); in USART_RxISR_8BIT()
3291 else if ((READ_BIT(husart->Instance->CR1, USART_CR1_TCIE) != USART_CR1_TCIE) && in USART_RxISR_8BIT()
3296 husart->State = HAL_USART_STATE_READY; in USART_RxISR_8BIT()
3300 husart->TxRxCpltCallback(husart); in USART_RxISR_8BIT()
3303 HAL_USART_TxRxCpltCallback(husart); in USART_RxISR_8BIT()
3312 (husart->SlaveMode == USART_SLAVEMODE_DISABLE)) in USART_RxISR_8BIT()
3315 husart->Instance->TDR = (USART_DUMMY_DATA & (uint16_t)0x00FF); in USART_RxISR_8BIT()
3333 static void USART_RxISR_16BIT(USART_HandleTypeDef *husart) in USART_RxISR_16BIT() argument
3335 const HAL_USART_StateTypeDef state = husart->State; in USART_RxISR_16BIT()
3338 uint16_t uhMask = husart->Mask; in USART_RxISR_16BIT()
3344 tmp = (uint16_t *) husart->pRxBuffPtr; in USART_RxISR_16BIT()
3345 *tmp = (uint16_t)(husart->Instance->RDR & uhMask); in USART_RxISR_16BIT()
3346 husart->pRxBuffPtr += 2U; in USART_RxISR_16BIT()
3347 husart->RxXferCount--; in USART_RxISR_16BIT()
3349 if (husart->RxXferCount == 0U) in USART_RxISR_16BIT()
3352 CLEAR_BIT(husart->Instance->CR1, (USART_CR1_RXNEIE_RXFNEIE | USART_CR1_PEIE)); in USART_RxISR_16BIT()
3355 CLEAR_BIT(husart->Instance->CR3, USART_CR3_EIE); in USART_RxISR_16BIT()
3358 husart->RxISR = NULL; in USART_RxISR_16BIT()
3361 txftie = READ_BIT(husart->Instance->CR3, USART_CR3_TXFTIE); in USART_RxISR_16BIT()
3362 txdatacount = husart->TxXferCount; in USART_RxISR_16BIT()
3367 if (husart->SlaveMode == USART_SLAVEMODE_ENABLE) in USART_RxISR_16BIT()
3369 __HAL_USART_CLEAR_UDRFLAG(husart); in USART_RxISR_16BIT()
3370 __HAL_USART_SEND_REQ(husart, USART_TXDATA_FLUSH_REQUEST); in USART_RxISR_16BIT()
3374 husart->State = HAL_USART_STATE_READY; in USART_RxISR_16BIT()
3378 husart->RxCpltCallback(husart); in USART_RxISR_16BIT()
3381 HAL_USART_RxCpltCallback(husart); in USART_RxISR_16BIT()
3384 else if ((READ_BIT(husart->Instance->CR1, USART_CR1_TCIE) != USART_CR1_TCIE) && in USART_RxISR_16BIT()
3389 husart->State = HAL_USART_STATE_READY; in USART_RxISR_16BIT()
3393 husart->TxRxCpltCallback(husart); in USART_RxISR_16BIT()
3396 HAL_USART_TxRxCpltCallback(husart); in USART_RxISR_16BIT()
3405 (husart->SlaveMode == USART_SLAVEMODE_DISABLE)) in USART_RxISR_16BIT()
3408 husart->Instance->TDR = (USART_DUMMY_DATA & (uint16_t)0x00FF); in USART_RxISR_16BIT()
3426 static void USART_RxISR_8BIT_FIFOEN(USART_HandleTypeDef *husart) in USART_RxISR_8BIT_FIFOEN() argument
3428 HAL_USART_StateTypeDef state = husart->State; in USART_RxISR_8BIT_FIFOEN()
3431 uint16_t uhMask = husart->Mask; in USART_RxISR_8BIT_FIFOEN()
3439 for (nb_rx_data = husart->NbRxDataToProcess ; nb_rx_data > 0U ; nb_rx_data--) in USART_RxISR_8BIT_FIFOEN()
3441 if (__HAL_USART_GET_FLAG(husart, USART_FLAG_RXFNE) == SET) in USART_RxISR_8BIT_FIFOEN()
3443 *husart->pRxBuffPtr = (uint8_t)(husart->Instance->RDR & (uint8_t)(uhMask & 0xFFU)); in USART_RxISR_8BIT_FIFOEN()
3444 husart->pRxBuffPtr++; in USART_RxISR_8BIT_FIFOEN()
3445 husart->RxXferCount--; in USART_RxISR_8BIT_FIFOEN()
3447 if (husart->RxXferCount == 0U) in USART_RxISR_8BIT_FIFOEN()
3450 CLEAR_BIT(husart->Instance->CR1, USART_CR1_PEIE); in USART_RxISR_8BIT_FIFOEN()
3454 CLEAR_BIT(husart->Instance->CR3, (USART_CR3_EIE | USART_CR3_RXFTIE)); in USART_RxISR_8BIT_FIFOEN()
3457 husart->RxISR = NULL; in USART_RxISR_8BIT_FIFOEN()
3460 txftie = READ_BIT(husart->Instance->CR3, USART_CR3_TXFTIE); in USART_RxISR_8BIT_FIFOEN()
3461 txdatacount = husart->TxXferCount; in USART_RxISR_8BIT_FIFOEN()
3466 if (husart->SlaveMode == USART_SLAVEMODE_ENABLE) in USART_RxISR_8BIT_FIFOEN()
3468 __HAL_USART_CLEAR_UDRFLAG(husart); in USART_RxISR_8BIT_FIFOEN()
3469 __HAL_USART_SEND_REQ(husart, USART_TXDATA_FLUSH_REQUEST); in USART_RxISR_8BIT_FIFOEN()
3473 husart->State = HAL_USART_STATE_READY; in USART_RxISR_8BIT_FIFOEN()
3478 husart->RxCpltCallback(husart); in USART_RxISR_8BIT_FIFOEN()
3481 HAL_USART_RxCpltCallback(husart); in USART_RxISR_8BIT_FIFOEN()
3484 else if ((READ_BIT(husart->Instance->CR1, USART_CR1_TCIE) != USART_CR1_TCIE) && in USART_RxISR_8BIT_FIFOEN()
3489 husart->State = HAL_USART_STATE_READY; in USART_RxISR_8BIT_FIFOEN()
3494 husart->TxRxCpltCallback(husart); in USART_RxISR_8BIT_FIFOEN()
3497 HAL_USART_TxRxCpltCallback(husart); in USART_RxISR_8BIT_FIFOEN()
3506 (husart->SlaveMode == USART_SLAVEMODE_DISABLE)) in USART_RxISR_8BIT_FIFOEN()
3509 husart->Instance->TDR = (USART_DUMMY_DATA & (uint16_t)0x00FF); in USART_RxISR_8BIT_FIFOEN()
3522 rxdatacount = husart->RxXferCount; in USART_RxISR_8BIT_FIFOEN()
3523 if (((rxdatacount != 0U)) && (rxdatacount < husart->NbRxDataToProcess)) in USART_RxISR_8BIT_FIFOEN()
3526 CLEAR_BIT(husart->Instance->CR3, USART_CR3_RXFTIE); in USART_RxISR_8BIT_FIFOEN()
3529 husart->RxISR = USART_RxISR_8BIT; in USART_RxISR_8BIT_FIFOEN()
3532 SET_BIT(husart->Instance->CR1, USART_CR1_RXNEIE_RXFNEIE); in USART_RxISR_8BIT_FIFOEN()
3534 if ((husart->TxXferCount == 0U) && in USART_RxISR_8BIT_FIFOEN()
3536 (husart->SlaveMode == USART_SLAVEMODE_DISABLE)) in USART_RxISR_8BIT_FIFOEN()
3539 husart->Instance->TDR = (USART_DUMMY_DATA & (uint16_t)0x00FF); in USART_RxISR_8BIT_FIFOEN()
3546 __HAL_USART_SEND_REQ(husart, USART_RXDATA_FLUSH_REQUEST); in USART_RxISR_8BIT_FIFOEN()
3559 static void USART_RxISR_16BIT_FIFOEN(USART_HandleTypeDef *husart) in USART_RxISR_16BIT_FIFOEN() argument
3561 HAL_USART_StateTypeDef state = husart->State; in USART_RxISR_16BIT_FIFOEN()
3565 uint16_t uhMask = husart->Mask; in USART_RxISR_16BIT_FIFOEN()
3573 for (nb_rx_data = husart->NbRxDataToProcess ; nb_rx_data > 0U ; nb_rx_data--) in USART_RxISR_16BIT_FIFOEN()
3575 if (__HAL_USART_GET_FLAG(husart, USART_FLAG_RXFNE) == SET) in USART_RxISR_16BIT_FIFOEN()
3577 tmp = (uint16_t *) husart->pRxBuffPtr; in USART_RxISR_16BIT_FIFOEN()
3578 *tmp = (uint16_t)(husart->Instance->RDR & uhMask); in USART_RxISR_16BIT_FIFOEN()
3579 husart->pRxBuffPtr += 2U; in USART_RxISR_16BIT_FIFOEN()
3580 husart->RxXferCount--; in USART_RxISR_16BIT_FIFOEN()
3582 if (husart->RxXferCount == 0U) in USART_RxISR_16BIT_FIFOEN()
3585 CLEAR_BIT(husart->Instance->CR1, USART_CR1_PEIE); in USART_RxISR_16BIT_FIFOEN()
3589 CLEAR_BIT(husart->Instance->CR3, (USART_CR3_EIE | USART_CR3_RXFTIE)); in USART_RxISR_16BIT_FIFOEN()
3592 husart->RxISR = NULL; in USART_RxISR_16BIT_FIFOEN()
3595 txftie = READ_BIT(husart->Instance->CR3, USART_CR3_TXFTIE); in USART_RxISR_16BIT_FIFOEN()
3596 txdatacount = husart->TxXferCount; in USART_RxISR_16BIT_FIFOEN()
3601 if (husart->SlaveMode == USART_SLAVEMODE_ENABLE) in USART_RxISR_16BIT_FIFOEN()
3603 __HAL_USART_CLEAR_UDRFLAG(husart); in USART_RxISR_16BIT_FIFOEN()
3604 __HAL_USART_SEND_REQ(husart, USART_TXDATA_FLUSH_REQUEST); in USART_RxISR_16BIT_FIFOEN()
3608 husart->State = HAL_USART_STATE_READY; in USART_RxISR_16BIT_FIFOEN()
3613 husart->RxCpltCallback(husart); in USART_RxISR_16BIT_FIFOEN()
3616 HAL_USART_RxCpltCallback(husart); in USART_RxISR_16BIT_FIFOEN()
3619 else if ((READ_BIT(husart->Instance->CR1, USART_CR1_TCIE) != USART_CR1_TCIE) && in USART_RxISR_16BIT_FIFOEN()
3624 husart->State = HAL_USART_STATE_READY; in USART_RxISR_16BIT_FIFOEN()
3629 husart->TxRxCpltCallback(husart); in USART_RxISR_16BIT_FIFOEN()
3632 HAL_USART_TxRxCpltCallback(husart); in USART_RxISR_16BIT_FIFOEN()
3641 (husart->SlaveMode == USART_SLAVEMODE_DISABLE)) in USART_RxISR_16BIT_FIFOEN()
3644 husart->Instance->TDR = (USART_DUMMY_DATA & (uint16_t)0x00FF); in USART_RxISR_16BIT_FIFOEN()
3657 rxdatacount = husart->RxXferCount; in USART_RxISR_16BIT_FIFOEN()
3658 if (((rxdatacount != 0U)) && (rxdatacount < husart->NbRxDataToProcess)) in USART_RxISR_16BIT_FIFOEN()
3661 CLEAR_BIT(husart->Instance->CR3, USART_CR3_RXFTIE); in USART_RxISR_16BIT_FIFOEN()
3664 husart->RxISR = USART_RxISR_16BIT; in USART_RxISR_16BIT_FIFOEN()
3667 SET_BIT(husart->Instance->CR1, USART_CR1_RXNEIE_RXFNEIE); in USART_RxISR_16BIT_FIFOEN()
3669 if ((husart->TxXferCount == 0U) && in USART_RxISR_16BIT_FIFOEN()
3671 (husart->SlaveMode == USART_SLAVEMODE_DISABLE)) in USART_RxISR_16BIT_FIFOEN()
3674 husart->Instance->TDR = (USART_DUMMY_DATA & (uint16_t)0x00FF); in USART_RxISR_16BIT_FIFOEN()
3681 __HAL_USART_SEND_REQ(husart, USART_RXDATA_FLUSH_REQUEST); in USART_RxISR_16BIT_FIFOEN()