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()
564husart->TxHalfCpltCallback = HAL_USART_TxHalfCpltCallback; /* Legacy weak TxHalfCpl… in HAL_USART_UnRegisterCallback()
568husart->TxCpltCallback = HAL_USART_TxCpltCallback; /* Legacy weak TxCpltCall… in HAL_USART_UnRegisterCallback()
572husart->RxHalfCpltCallback = HAL_USART_RxHalfCpltCallback; /* Legacy weak RxHalfCplt… in HAL_USART_UnRegisterCallback()
576husart->RxCpltCallback = HAL_USART_RxCpltCallback; /* Legacy weak RxCpltCall… in HAL_USART_UnRegisterCallback()
580husart->TxRxCpltCallback = HAL_USART_TxRxCpltCallback; /* Legacy weak TxRxCpltCa… in HAL_USART_UnRegisterCallback()
584husart->ErrorCallback = HAL_USART_ErrorCallback; /* Legacy weak ErrorCallb… in HAL_USART_UnRegisterCallback()
588husart->AbortCpltCallback = HAL_USART_AbortCpltCallback; /* Legacy weak AbortCpltC… in HAL_USART_UnRegisterCallback()
592husart->RxFifoFullCallback = HAL_USARTEx_RxFifoFullCallback; /* Legacy weak RxFifoFull… in HAL_USART_UnRegisterCallback()
596husart->TxFifoEmptyCallback = HAL_USARTEx_TxFifoEmptyCallback; /* Legacy weak TxFifoEmpt… in HAL_USART_UnRegisterCallback()
600husart->MspInitCallback = HAL_USART_MspInit; /* Legacy weak MspInitCal… in HAL_USART_UnRegisterCallback()
604husart->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()
750 HAL_StatusTypeDef HAL_USART_Transmit(USART_HandleTypeDef *husart, const uint8_t *pTxData, uint16_t … in HAL_USART_Transmit() argument
757 if (husart->State == HAL_USART_STATE_READY) in HAL_USART_Transmit()
767 …if ((husart->Init.WordLength == USART_WORDLENGTH_9B) && (husart->Init.Parity == USART_PARITY_NONE)) in HAL_USART_Transmit()
776 __HAL_LOCK(husart); in HAL_USART_Transmit()
778 husart->ErrorCode = HAL_USART_ERROR_NONE; in HAL_USART_Transmit()
779 husart->State = HAL_USART_STATE_BUSY_TX; in HAL_USART_Transmit()
784 husart->TxXferSize = Size; in HAL_USART_Transmit()
785 husart->TxXferCount = Size; in HAL_USART_Transmit()
788 …if ((husart->Init.WordLength == USART_WORDLENGTH_9B) && (husart->Init.Parity == USART_PARITY_NONE)) in HAL_USART_Transmit()
800 while (husart->TxXferCount > 0U) in HAL_USART_Transmit()
802 if (USART_WaitOnFlagUntilTimeout(husart, USART_FLAG_TXE, RESET, tickstart, Timeout) != HAL_OK) in HAL_USART_Transmit()
808 husart->Instance->TDR = (uint16_t)(*ptxdata16bits & 0x01FFU); in HAL_USART_Transmit()
813 husart->Instance->TDR = (uint8_t)(*ptxdata8bits & 0xFFU); in HAL_USART_Transmit()
817 husart->TxXferCount--; in HAL_USART_Transmit()
820 if (USART_WaitOnFlagUntilTimeout(husart, USART_FLAG_TC, RESET, tickstart, Timeout) != HAL_OK) in HAL_USART_Transmit()
826 __HAL_USART_CLEAR_FLAG(husart, USART_CLEAR_TCF); in HAL_USART_Transmit()
829 __HAL_USART_CLEAR_OREFLAG(husart); in HAL_USART_Transmit()
830 __HAL_USART_SEND_REQ(husart, USART_RXDATA_FLUSH_REQUEST); in HAL_USART_Transmit()
831 __HAL_USART_SEND_REQ(husart, USART_TXDATA_FLUSH_REQUEST); in HAL_USART_Transmit()
834 husart->State = HAL_USART_STATE_READY; in HAL_USART_Transmit()
837 __HAL_UNLOCK(husart); in HAL_USART_Transmit()
864 HAL_StatusTypeDef HAL_USART_Receive(USART_HandleTypeDef *husart, uint8_t *pRxData, uint16_t Size, u… in HAL_USART_Receive() argument
871 if (husart->State == HAL_USART_STATE_READY) in HAL_USART_Receive()
881 …if ((husart->Init.WordLength == USART_WORDLENGTH_9B) && (husart->Init.Parity == USART_PARITY_NONE)) in HAL_USART_Receive()
890 __HAL_LOCK(husart); in HAL_USART_Receive()
892 husart->ErrorCode = HAL_USART_ERROR_NONE; in HAL_USART_Receive()
893 husart->State = HAL_USART_STATE_BUSY_RX; in HAL_USART_Receive()
898 husart->RxXferSize = Size; in HAL_USART_Receive()
899 husart->RxXferCount = Size; in HAL_USART_Receive()
902 USART_MASK_COMPUTATION(husart); in HAL_USART_Receive()
903 uhMask = husart->Mask; in HAL_USART_Receive()
906 …if ((husart->Init.WordLength == USART_WORDLENGTH_9B) && (husart->Init.Parity == USART_PARITY_NONE)) in HAL_USART_Receive()
918 while (husart->RxXferCount > 0U) in HAL_USART_Receive()
920 if (husart->SlaveMode == USART_SLAVEMODE_DISABLE) in HAL_USART_Receive()
926 … if (USART_WaitOnFlagUntilTimeout(husart, USART_FLAG_TXE, RESET, tickstart, Timeout) != HAL_OK) in HAL_USART_Receive()
930 husart->Instance->TDR = (USART_DUMMY_DATA & (uint16_t)0x0FF); in HAL_USART_Receive()
934 … if (USART_WaitOnFlagUntilTimeout(husart, USART_FLAG_RXNE, RESET, tickstart, Timeout) != HAL_OK) in HAL_USART_Receive()
941 *prxdata16bits = (uint16_t)(husart->Instance->RDR & uhMask); in HAL_USART_Receive()
946 *prxdata8bits = (uint8_t)(husart->Instance->RDR & (uint8_t)(uhMask & 0xFFU)); in HAL_USART_Receive()
950 husart->RxXferCount--; in HAL_USART_Receive()
955 if (husart->SlaveMode == USART_SLAVEMODE_ENABLE) in HAL_USART_Receive()
957 __HAL_USART_CLEAR_UDRFLAG(husart); in HAL_USART_Receive()
958 __HAL_USART_SEND_REQ(husart, USART_TXDATA_FLUSH_REQUEST); in HAL_USART_Receive()
962 husart->State = HAL_USART_STATE_READY; in HAL_USART_Receive()
965 __HAL_UNLOCK(husart); in HAL_USART_Receive()
992 HAL_StatusTypeDef HAL_USART_TransmitReceive(USART_HandleTypeDef *husart, const uint8_t *pTxData, ui… in HAL_USART_TransmitReceive() argument
1003 if (husart->State == HAL_USART_STATE_READY) in HAL_USART_TransmitReceive()
1013 …if ((husart->Init.WordLength == USART_WORDLENGTH_9B) && (husart->Init.Parity == USART_PARITY_NONE)) in HAL_USART_TransmitReceive()
1022 __HAL_LOCK(husart); in HAL_USART_TransmitReceive()
1024 husart->ErrorCode = HAL_USART_ERROR_NONE; in HAL_USART_TransmitReceive()
1025 husart->State = HAL_USART_STATE_BUSY_RX; in HAL_USART_TransmitReceive()
1030 husart->RxXferSize = Size; in HAL_USART_TransmitReceive()
1031 husart->TxXferSize = Size; in HAL_USART_TransmitReceive()
1032 husart->TxXferCount = Size; in HAL_USART_TransmitReceive()
1033 husart->RxXferCount = Size; in HAL_USART_TransmitReceive()
1036 USART_MASK_COMPUTATION(husart); in HAL_USART_TransmitReceive()
1037 uhMask = husart->Mask; in HAL_USART_TransmitReceive()
1040 …if ((husart->Init.WordLength == USART_WORDLENGTH_9B) && (husart->Init.Parity == USART_PARITY_NONE)) in HAL_USART_TransmitReceive()
1055 if ((husart->TxXferCount == 0x01U) || (husart->SlaveMode == USART_SLAVEMODE_ENABLE)) in HAL_USART_TransmitReceive()
1058 if (USART_WaitOnFlagUntilTimeout(husart, USART_FLAG_TXE, RESET, tickstart, Timeout) != HAL_OK) in HAL_USART_TransmitReceive()
1064 husart->Instance->TDR = (uint16_t)(*ptxdata16bits & uhMask); in HAL_USART_TransmitReceive()
1069 husart->Instance->TDR = (uint8_t)(*ptxdata8bits & (uint8_t)(uhMask & 0xFFU)); in HAL_USART_TransmitReceive()
1073 husart->TxXferCount--; in HAL_USART_TransmitReceive()
1078 rxdatacount = husart->RxXferCount; in HAL_USART_TransmitReceive()
1079 while ((husart->TxXferCount > 0U) || (rxdatacount > 0U)) in HAL_USART_TransmitReceive()
1081 if (husart->TxXferCount > 0U) in HAL_USART_TransmitReceive()
1084 … if (USART_WaitOnFlagUntilTimeout(husart, USART_FLAG_TXE, RESET, tickstart, Timeout) != HAL_OK) in HAL_USART_TransmitReceive()
1090 husart->Instance->TDR = (uint16_t)(*ptxdata16bits & uhMask); in HAL_USART_TransmitReceive()
1095 husart->Instance->TDR = (uint8_t)(*ptxdata8bits & (uint8_t)(uhMask & 0xFFU)); in HAL_USART_TransmitReceive()
1099 husart->TxXferCount--; in HAL_USART_TransmitReceive()
1102 if (husart->RxXferCount > 0U) in HAL_USART_TransmitReceive()
1105 … if (USART_WaitOnFlagUntilTimeout(husart, USART_FLAG_RXNE, RESET, tickstart, Timeout) != HAL_OK) in HAL_USART_TransmitReceive()
1112 *prxdata16bits = (uint16_t)(husart->Instance->RDR & uhMask); in HAL_USART_TransmitReceive()
1117 *prxdata8bits = (uint8_t)(husart->Instance->RDR & (uint8_t)(uhMask & 0xFFU)); in HAL_USART_TransmitReceive()
1121 husart->RxXferCount--; in HAL_USART_TransmitReceive()
1123 rxdatacount = husart->RxXferCount; in HAL_USART_TransmitReceive()
1127 husart->State = HAL_USART_STATE_READY; in HAL_USART_TransmitReceive()
1130 __HAL_UNLOCK(husart); in HAL_USART_TransmitReceive()
1155 HAL_StatusTypeDef HAL_USART_Transmit_IT(USART_HandleTypeDef *husart, const uint8_t *pTxData, uint16… in HAL_USART_Transmit_IT() argument
1157 if (husart->State == HAL_USART_STATE_READY) in HAL_USART_Transmit_IT()
1167 …if ((husart->Init.WordLength == USART_WORDLENGTH_9B) && (husart->Init.Parity == USART_PARITY_NONE)) in HAL_USART_Transmit_IT()
1176 __HAL_LOCK(husart); in HAL_USART_Transmit_IT()
1178 husart->pTxBuffPtr = pTxData; in HAL_USART_Transmit_IT()
1179 husart->TxXferSize = Size; in HAL_USART_Transmit_IT()
1180 husart->TxXferCount = Size; in HAL_USART_Transmit_IT()
1181 husart->TxISR = NULL; in HAL_USART_Transmit_IT()
1183 husart->ErrorCode = HAL_USART_ERROR_NONE; in HAL_USART_Transmit_IT()
1184 husart->State = HAL_USART_STATE_BUSY_TX; in HAL_USART_Transmit_IT()
1193 if (husart->FifoMode == USART_FIFOMODE_ENABLE) in HAL_USART_Transmit_IT()
1196 …if ((husart->Init.WordLength == USART_WORDLENGTH_9B) && (husart->Init.Parity == USART_PARITY_NONE)) in HAL_USART_Transmit_IT()
1198 husart->TxISR = USART_TxISR_16BIT_FIFOEN; in HAL_USART_Transmit_IT()
1202 husart->TxISR = USART_TxISR_8BIT_FIFOEN; in HAL_USART_Transmit_IT()
1206 __HAL_UNLOCK(husart); in HAL_USART_Transmit_IT()
1209 __HAL_USART_ENABLE_IT(husart, USART_IT_TXFT); in HAL_USART_Transmit_IT()
1214 …if ((husart->Init.WordLength == USART_WORDLENGTH_9B) && (husart->Init.Parity == USART_PARITY_NONE)) in HAL_USART_Transmit_IT()
1216 husart->TxISR = USART_TxISR_16BIT; in HAL_USART_Transmit_IT()
1220 husart->TxISR = USART_TxISR_8BIT; in HAL_USART_Transmit_IT()
1224 __HAL_UNLOCK(husart); in HAL_USART_Transmit_IT()
1227 __HAL_USART_ENABLE_IT(husart, USART_IT_TXE); in HAL_USART_Transmit_IT()
1254 HAL_StatusTypeDef HAL_USART_Receive_IT(USART_HandleTypeDef *husart, uint8_t *pRxData, uint16_t Size) in HAL_USART_Receive_IT() argument
1258 if (husart->State == HAL_USART_STATE_READY) in HAL_USART_Receive_IT()
1268 …if ((husart->Init.WordLength == USART_WORDLENGTH_9B) && (husart->Init.Parity == USART_PARITY_NONE)) in HAL_USART_Receive_IT()
1277 __HAL_LOCK(husart); in HAL_USART_Receive_IT()
1279 husart->pRxBuffPtr = pRxData; in HAL_USART_Receive_IT()
1280 husart->RxXferSize = Size; in HAL_USART_Receive_IT()
1281 husart->RxXferCount = Size; in HAL_USART_Receive_IT()
1282 husart->RxISR = NULL; in HAL_USART_Receive_IT()
1284 USART_MASK_COMPUTATION(husart); in HAL_USART_Receive_IT()
1286 husart->ErrorCode = HAL_USART_ERROR_NONE; in HAL_USART_Receive_IT()
1287 husart->State = HAL_USART_STATE_BUSY_RX; in HAL_USART_Receive_IT()
1290 SET_BIT(husart->Instance->CR3, USART_CR3_EIE); in HAL_USART_Receive_IT()
1293 if ((husart->FifoMode == USART_FIFOMODE_ENABLE) && (Size >= husart->NbRxDataToProcess)) in HAL_USART_Receive_IT()
1296 …if ((husart->Init.WordLength == USART_WORDLENGTH_9B) && (husart->Init.Parity == USART_PARITY_NONE)) in HAL_USART_Receive_IT()
1298 husart->RxISR = USART_RxISR_16BIT_FIFOEN; in HAL_USART_Receive_IT()
1302 husart->RxISR = USART_RxISR_8BIT_FIFOEN; in HAL_USART_Receive_IT()
1306 __HAL_UNLOCK(husart); in HAL_USART_Receive_IT()
1309 if (husart->Init.Parity != USART_PARITY_NONE) in HAL_USART_Receive_IT()
1311 SET_BIT(husart->Instance->CR1, USART_CR1_PEIE); in HAL_USART_Receive_IT()
1313 SET_BIT(husart->Instance->CR3, USART_CR3_RXFTIE); in HAL_USART_Receive_IT()
1318 …if ((husart->Init.WordLength == USART_WORDLENGTH_9B) && (husart->Init.Parity == USART_PARITY_NONE)) in HAL_USART_Receive_IT()
1320 husart->RxISR = USART_RxISR_16BIT; in HAL_USART_Receive_IT()
1324 husart->RxISR = USART_RxISR_8BIT; in HAL_USART_Receive_IT()
1328 __HAL_UNLOCK(husart); in HAL_USART_Receive_IT()
1331 if (husart->Init.Parity != USART_PARITY_NONE) in HAL_USART_Receive_IT()
1333 SET_BIT(husart->Instance->CR1, USART_CR1_PEIE | USART_CR1_RXNEIE_RXFNEIE); in HAL_USART_Receive_IT()
1337 SET_BIT(husart->Instance->CR1, USART_CR1_RXNEIE_RXFNEIE); in HAL_USART_Receive_IT()
1341 if (husart->SlaveMode == USART_SLAVEMODE_DISABLE) in HAL_USART_Receive_IT()
1347 if ((husart->FifoMode == USART_FIFOMODE_ENABLE) && (Size >= husart->NbRxDataToProcess)) in HAL_USART_Receive_IT()
1349 for (nb_dummy_data = husart->NbRxDataToProcess ; nb_dummy_data > 0U ; nb_dummy_data--) in HAL_USART_Receive_IT()
1351 husart->Instance->TDR = (USART_DUMMY_DATA & (uint16_t)0x00FF); in HAL_USART_Receive_IT()
1356 husart->Instance->TDR = (USART_DUMMY_DATA & (uint16_t)0x00FF); in HAL_USART_Receive_IT()
1384 HAL_StatusTypeDef HAL_USART_TransmitReceive_IT(USART_HandleTypeDef *husart, const uint8_t *pTxData,… in HAL_USART_TransmitReceive_IT() argument
1388 if (husart->State == HAL_USART_STATE_READY) in HAL_USART_TransmitReceive_IT()
1398 …if ((husart->Init.WordLength == USART_WORDLENGTH_9B) && (husart->Init.Parity == USART_PARITY_NONE)) in HAL_USART_TransmitReceive_IT()
1407 __HAL_LOCK(husart); in HAL_USART_TransmitReceive_IT()
1409 husart->pRxBuffPtr = pRxData; in HAL_USART_TransmitReceive_IT()
1410 husart->RxXferSize = Size; in HAL_USART_TransmitReceive_IT()
1411 husart->RxXferCount = Size; in HAL_USART_TransmitReceive_IT()
1412 husart->pTxBuffPtr = pTxData; in HAL_USART_TransmitReceive_IT()
1413 husart->TxXferSize = Size; in HAL_USART_TransmitReceive_IT()
1414 husart->TxXferCount = Size; in HAL_USART_TransmitReceive_IT()
1417 USART_MASK_COMPUTATION(husart); in HAL_USART_TransmitReceive_IT()
1419 husart->ErrorCode = HAL_USART_ERROR_NONE; in HAL_USART_TransmitReceive_IT()
1420 husart->State = HAL_USART_STATE_BUSY_TX_RX; in HAL_USART_TransmitReceive_IT()
1423 if ((husart->FifoMode == USART_FIFOMODE_ENABLE) && (Size >= husart->NbRxDataToProcess)) in HAL_USART_TransmitReceive_IT()
1426 …if ((husart->Init.WordLength == USART_WORDLENGTH_9B) && (husart->Init.Parity == USART_PARITY_NONE)) in HAL_USART_TransmitReceive_IT()
1428 husart->TxISR = USART_TxISR_16BIT_FIFOEN; in HAL_USART_TransmitReceive_IT()
1429 husart->RxISR = USART_RxISR_16BIT_FIFOEN; in HAL_USART_TransmitReceive_IT()
1433 husart->TxISR = USART_TxISR_8BIT_FIFOEN; in HAL_USART_TransmitReceive_IT()
1434 husart->RxISR = USART_RxISR_8BIT_FIFOEN; in HAL_USART_TransmitReceive_IT()
1438 __HAL_UNLOCK(husart); in HAL_USART_TransmitReceive_IT()
1441 SET_BIT(husart->Instance->CR3, USART_CR3_EIE); in HAL_USART_TransmitReceive_IT()
1443 if (husart->Init.Parity != USART_PARITY_NONE) in HAL_USART_TransmitReceive_IT()
1446 SET_BIT(husart->Instance->CR1, USART_CR1_PEIE); in HAL_USART_TransmitReceive_IT()
1450 SET_BIT(husart->Instance->CR3, (USART_CR3_TXFTIE | USART_CR3_RXFTIE)); in HAL_USART_TransmitReceive_IT()
1454 …if ((husart->Init.WordLength == USART_WORDLENGTH_9B) && (husart->Init.Parity == USART_PARITY_NONE)) in HAL_USART_TransmitReceive_IT()
1456 husart->TxISR = USART_TxISR_16BIT; in HAL_USART_TransmitReceive_IT()
1457 husart->RxISR = USART_RxISR_16BIT; in HAL_USART_TransmitReceive_IT()
1461 husart->TxISR = USART_TxISR_8BIT; in HAL_USART_TransmitReceive_IT()
1462 husart->RxISR = USART_RxISR_8BIT; in HAL_USART_TransmitReceive_IT()
1466 __HAL_UNLOCK(husart); in HAL_USART_TransmitReceive_IT()
1469 SET_BIT(husart->Instance->CR3, USART_CR3_EIE); in HAL_USART_TransmitReceive_IT()
1472 if (husart->Init.Parity != USART_PARITY_NONE) in HAL_USART_TransmitReceive_IT()
1474 SET_BIT(husart->Instance->CR1, USART_CR1_PEIE | USART_CR1_RXNEIE_RXFNEIE); in HAL_USART_TransmitReceive_IT()
1478 SET_BIT(husart->Instance->CR1, USART_CR1_RXNEIE_RXFNEIE); in HAL_USART_TransmitReceive_IT()
1482 SET_BIT(husart->Instance->CR1, USART_CR1_TXEIE_TXFNFIE); in HAL_USART_TransmitReceive_IT()
1509 HAL_StatusTypeDef HAL_USART_Transmit_DMA(USART_HandleTypeDef *husart, const uint8_t *pTxData, uint1… in HAL_USART_Transmit_DMA() argument
1514 if (husart->State == HAL_USART_STATE_READY) in HAL_USART_Transmit_DMA()
1524 …if ((husart->Init.WordLength == USART_WORDLENGTH_9B) && (husart->Init.Parity == USART_PARITY_NONE)) in HAL_USART_Transmit_DMA()
1533 __HAL_LOCK(husart); in HAL_USART_Transmit_DMA()
1535 husart->pTxBuffPtr = pTxData; in HAL_USART_Transmit_DMA()
1536 husart->TxXferSize = Size; in HAL_USART_Transmit_DMA()
1537 husart->TxXferCount = Size; in HAL_USART_Transmit_DMA()
1539 husart->ErrorCode = HAL_USART_ERROR_NONE; in HAL_USART_Transmit_DMA()
1540 husart->State = HAL_USART_STATE_BUSY_TX; in HAL_USART_Transmit_DMA()
1542 if (husart->hdmatx != NULL) in HAL_USART_Transmit_DMA()
1545 husart->hdmatx->XferCpltCallback = USART_DMATransmitCplt; in HAL_USART_Transmit_DMA()
1548 husart->hdmatx->XferHalfCpltCallback = USART_DMATxHalfCplt; in HAL_USART_Transmit_DMA()
1551 husart->hdmatx->XferErrorCallback = USART_DMAError; in HAL_USART_Transmit_DMA()
1555 …status = HAL_DMA_Start_IT(husart->hdmatx, *(const uint32_t *)tmp, (uint32_t)&husart->Instance->TDR… in HAL_USART_Transmit_DMA()
1561 __HAL_USART_CLEAR_FLAG(husart, USART_CLEAR_TCF); in HAL_USART_Transmit_DMA()
1564 __HAL_UNLOCK(husart); in HAL_USART_Transmit_DMA()
1568 SET_BIT(husart->Instance->CR3, USART_CR3_DMAT); in HAL_USART_Transmit_DMA()
1575 husart->ErrorCode = HAL_USART_ERROR_DMA; in HAL_USART_Transmit_DMA()
1578 __HAL_UNLOCK(husart); in HAL_USART_Transmit_DMA()
1581 husart->State = HAL_USART_STATE_READY; in HAL_USART_Transmit_DMA()
1610 HAL_StatusTypeDef HAL_USART_Receive_DMA(USART_HandleTypeDef *husart, uint8_t *pRxData, uint16_t Siz… in HAL_USART_Receive_DMA() argument
1616 if (husart->State == HAL_USART_STATE_READY) in HAL_USART_Receive_DMA()
1626 …if ((husart->Init.WordLength == USART_WORDLENGTH_9B) && (husart->Init.Parity == USART_PARITY_NONE)) in HAL_USART_Receive_DMA()
1635 __HAL_LOCK(husart); in HAL_USART_Receive_DMA()
1637 husart->pRxBuffPtr = pRxData; in HAL_USART_Receive_DMA()
1638 husart->RxXferSize = Size; in HAL_USART_Receive_DMA()
1639 husart->pTxBuffPtr = pRxData; in HAL_USART_Receive_DMA()
1640 husart->TxXferSize = Size; in HAL_USART_Receive_DMA()
1642 husart->ErrorCode = HAL_USART_ERROR_NONE; in HAL_USART_Receive_DMA()
1643 husart->State = HAL_USART_STATE_BUSY_RX; in HAL_USART_Receive_DMA()
1645 if (husart->hdmarx != NULL) in HAL_USART_Receive_DMA()
1648 husart->hdmarx->XferCpltCallback = USART_DMAReceiveCplt; in HAL_USART_Receive_DMA()
1651 husart->hdmarx->XferHalfCpltCallback = USART_DMARxHalfCplt; in HAL_USART_Receive_DMA()
1654 husart->hdmarx->XferErrorCallback = USART_DMAError; in HAL_USART_Receive_DMA()
1657 …status = HAL_DMA_Start_IT(husart->hdmarx, (uint32_t)&husart->Instance->RDR, *(uint32_t *)tmp, Size… in HAL_USART_Receive_DMA()
1661 (husart->SlaveMode == USART_SLAVEMODE_DISABLE)) in HAL_USART_Receive_DMA()
1668 if (husart->hdmatx != NULL) in HAL_USART_Receive_DMA()
1670 husart->hdmatx->XferErrorCallback = NULL; in HAL_USART_Receive_DMA()
1671 husart->hdmatx->XferHalfCpltCallback = NULL; in HAL_USART_Receive_DMA()
1672 husart->hdmatx->XferCpltCallback = NULL; in HAL_USART_Receive_DMA()
1673 …status = HAL_DMA_Start_IT(husart->hdmatx, *(uint32_t *)tmp, (uint32_t)&husart->Instance->TDR, Size… in HAL_USART_Receive_DMA()
1680 __HAL_UNLOCK(husart); in HAL_USART_Receive_DMA()
1682 if (husart->Init.Parity != USART_PARITY_NONE) in HAL_USART_Receive_DMA()
1685 SET_BIT(husart->Instance->CR1, USART_CR1_PEIE); in HAL_USART_Receive_DMA()
1689 SET_BIT(husart->Instance->CR3, USART_CR3_EIE); in HAL_USART_Receive_DMA()
1693 SET_BIT(husart->Instance->CR3, USART_CR3_DMAR); in HAL_USART_Receive_DMA()
1697 SET_BIT(husart->Instance->CR3, USART_CR3_DMAT); in HAL_USART_Receive_DMA()
1703 if (husart->hdmarx != NULL) in HAL_USART_Receive_DMA()
1705 status = HAL_DMA_Abort(husart->hdmarx); in HAL_USART_Receive_DMA()
1712 husart->ErrorCode = HAL_USART_ERROR_DMA; in HAL_USART_Receive_DMA()
1715 __HAL_UNLOCK(husart); in HAL_USART_Receive_DMA()
1718 husart->State = HAL_USART_STATE_READY; in HAL_USART_Receive_DMA()
1746 HAL_StatusTypeDef HAL_USART_TransmitReceive_DMA(USART_HandleTypeDef *husart, const uint8_t *pTxData… in HAL_USART_TransmitReceive_DMA() argument
1752 if (husart->State == HAL_USART_STATE_READY) in HAL_USART_TransmitReceive_DMA()
1762 …if ((husart->Init.WordLength == USART_WORDLENGTH_9B) && (husart->Init.Parity == USART_PARITY_NONE)) in HAL_USART_TransmitReceive_DMA()
1771 __HAL_LOCK(husart); in HAL_USART_TransmitReceive_DMA()
1773 husart->pRxBuffPtr = pRxData; in HAL_USART_TransmitReceive_DMA()
1774 husart->RxXferSize = Size; in HAL_USART_TransmitReceive_DMA()
1775 husart->pTxBuffPtr = pTxData; in HAL_USART_TransmitReceive_DMA()
1776 husart->TxXferSize = Size; in HAL_USART_TransmitReceive_DMA()
1778 husart->ErrorCode = HAL_USART_ERROR_NONE; in HAL_USART_TransmitReceive_DMA()
1779 husart->State = HAL_USART_STATE_BUSY_TX_RX; in HAL_USART_TransmitReceive_DMA()
1781 if ((husart->hdmarx != NULL) && (husart->hdmatx != NULL)) in HAL_USART_TransmitReceive_DMA()
1784 husart->hdmarx->XferCpltCallback = USART_DMAReceiveCplt; in HAL_USART_TransmitReceive_DMA()
1787 husart->hdmarx->XferHalfCpltCallback = USART_DMARxHalfCplt; in HAL_USART_TransmitReceive_DMA()
1790 husart->hdmatx->XferCpltCallback = USART_DMATransmitCplt; in HAL_USART_TransmitReceive_DMA()
1793 husart->hdmatx->XferHalfCpltCallback = USART_DMATxHalfCplt; in HAL_USART_TransmitReceive_DMA()
1796 husart->hdmatx->XferErrorCallback = USART_DMAError; in HAL_USART_TransmitReceive_DMA()
1799 husart->hdmarx->XferErrorCallback = USART_DMAError; in HAL_USART_TransmitReceive_DMA()
1803 …status = HAL_DMA_Start_IT(husart->hdmarx, (uint32_t)&husart->Instance->RDR, *(const uint32_t *)tmp… in HAL_USART_TransmitReceive_DMA()
1809 …status = HAL_DMA_Start_IT(husart->hdmatx, *(const uint32_t *)tmp, (uint32_t)&husart->Instance->TDR… in HAL_USART_TransmitReceive_DMA()
1820 __HAL_UNLOCK(husart); in HAL_USART_TransmitReceive_DMA()
1822 if (husart->Init.Parity != USART_PARITY_NONE) in HAL_USART_TransmitReceive_DMA()
1825 SET_BIT(husart->Instance->CR1, USART_CR1_PEIE); in HAL_USART_TransmitReceive_DMA()
1829 SET_BIT(husart->Instance->CR3, USART_CR3_EIE); in HAL_USART_TransmitReceive_DMA()
1832 __HAL_USART_CLEAR_FLAG(husart, USART_CLEAR_TCF); in HAL_USART_TransmitReceive_DMA()
1836 SET_BIT(husart->Instance->CR3, USART_CR3_DMAR); in HAL_USART_TransmitReceive_DMA()
1840 SET_BIT(husart->Instance->CR3, USART_CR3_DMAT); in HAL_USART_TransmitReceive_DMA()
1846 if (husart->hdmarx != NULL) in HAL_USART_TransmitReceive_DMA()
1848 status = HAL_DMA_Abort(husart->hdmarx); in HAL_USART_TransmitReceive_DMA()
1855 husart->ErrorCode = HAL_USART_ERROR_DMA; in HAL_USART_TransmitReceive_DMA()
1858 __HAL_UNLOCK(husart); in HAL_USART_TransmitReceive_DMA()
1861 husart->State = HAL_USART_STATE_READY; in HAL_USART_TransmitReceive_DMA()
1877 HAL_StatusTypeDef HAL_USART_DMAPause(USART_HandleTypeDef *husart) in HAL_USART_DMAPause() argument
1879 const HAL_USART_StateTypeDef state = husart->State; in HAL_USART_DMAPause()
1882 __HAL_LOCK(husart); in HAL_USART_DMAPause()
1884 if ((HAL_IS_BIT_SET(husart->Instance->CR3, USART_CR3_DMAT)) && in HAL_USART_DMAPause()
1888 CLEAR_BIT(husart->Instance->CR3, USART_CR3_DMAT); in HAL_USART_DMAPause()
1893 if (HAL_IS_BIT_SET(husart->Instance->CR3, USART_CR3_DMAT)) in HAL_USART_DMAPause()
1896 CLEAR_BIT(husart->Instance->CR3, USART_CR3_DMAT); in HAL_USART_DMAPause()
1898 if (HAL_IS_BIT_SET(husart->Instance->CR3, USART_CR3_DMAR)) in HAL_USART_DMAPause()
1901 CLEAR_BIT(husart->Instance->CR1, USART_CR1_PEIE); in HAL_USART_DMAPause()
1902 CLEAR_BIT(husart->Instance->CR3, USART_CR3_EIE); in HAL_USART_DMAPause()
1905 CLEAR_BIT(husart->Instance->CR3, USART_CR3_DMAR); in HAL_USART_DMAPause()
1914 __HAL_UNLOCK(husart); in HAL_USART_DMAPause()
1924 HAL_StatusTypeDef HAL_USART_DMAResume(USART_HandleTypeDef *husart) in HAL_USART_DMAResume() argument
1926 const HAL_USART_StateTypeDef state = husart->State; in HAL_USART_DMAResume()
1929 __HAL_LOCK(husart); in HAL_USART_DMAResume()
1934 SET_BIT(husart->Instance->CR3, USART_CR3_DMAT); in HAL_USART_DMAResume()
1940 __HAL_USART_CLEAR_FLAG(husart, USART_CLEAR_OREF); in HAL_USART_DMAResume()
1943 if (husart->Init.Parity != USART_PARITY_NONE) in HAL_USART_DMAResume()
1945 SET_BIT(husart->Instance->CR1, USART_CR1_PEIE); in HAL_USART_DMAResume()
1947 SET_BIT(husart->Instance->CR3, USART_CR3_EIE); in HAL_USART_DMAResume()
1950 SET_BIT(husart->Instance->CR3, USART_CR3_DMAR); in HAL_USART_DMAResume()
1953 SET_BIT(husart->Instance->CR3, USART_CR3_DMAT); in HAL_USART_DMAResume()
1961 __HAL_UNLOCK(husart); in HAL_USART_DMAResume()
1971 HAL_StatusTypeDef HAL_USART_DMAStop(USART_HandleTypeDef *husart) in HAL_USART_DMAStop() argument
1981 CLEAR_BIT(husart->Instance->CR3, USART_CR3_DMAT); in HAL_USART_DMAStop()
1982 CLEAR_BIT(husart->Instance->CR3, USART_CR3_DMAR); in HAL_USART_DMAStop()
1985 if (husart->hdmatx != NULL) in HAL_USART_DMAStop()
1987 if (HAL_DMA_Abort(husart->hdmatx) != HAL_OK) in HAL_USART_DMAStop()
1989 if (HAL_DMA_GetError(husart->hdmatx) == HAL_DMA_ERROR_TIMEOUT) in HAL_USART_DMAStop()
1992 husart->ErrorCode = HAL_USART_ERROR_DMA; in HAL_USART_DMAStop()
1999 if (husart->hdmarx != NULL) in HAL_USART_DMAStop()
2001 if (HAL_DMA_Abort(husart->hdmarx) != HAL_OK) in HAL_USART_DMAStop()
2003 if (HAL_DMA_GetError(husart->hdmarx) == HAL_DMA_ERROR_TIMEOUT) in HAL_USART_DMAStop()
2006 husart->ErrorCode = HAL_USART_ERROR_DMA; in HAL_USART_DMAStop()
2013 USART_EndTransfer(husart); in HAL_USART_DMAStop()
2014 husart->State = HAL_USART_STATE_READY; in HAL_USART_DMAStop()
2032 HAL_StatusTypeDef HAL_USART_Abort(USART_HandleTypeDef *husart) in HAL_USART_Abort() argument
2035 …CLEAR_BIT(husart->Instance->CR1, (USART_CR1_RXNEIE_RXFNEIE | USART_CR1_PEIE | USART_CR1_TXEIE_TXFN… in HAL_USART_Abort()
2037 CLEAR_BIT(husart->Instance->CR3, (USART_CR3_EIE | USART_CR3_RXFTIE | USART_CR3_TXFTIE)); in HAL_USART_Abort()
2041 if (HAL_IS_BIT_SET(husart->Instance->CR3, USART_CR3_DMAT)) in HAL_USART_Abort()
2044 CLEAR_BIT(husart->Instance->CR3, USART_CR3_DMAT); in HAL_USART_Abort()
2047 if (husart->hdmatx != NULL) in HAL_USART_Abort()
2051 husart->hdmatx->XferAbortCallback = NULL; in HAL_USART_Abort()
2053 if (HAL_DMA_Abort(husart->hdmatx) != HAL_OK) in HAL_USART_Abort()
2055 if (HAL_DMA_GetError(husart->hdmatx) == HAL_DMA_ERROR_TIMEOUT) in HAL_USART_Abort()
2058 husart->ErrorCode = HAL_USART_ERROR_DMA; in HAL_USART_Abort()
2067 if (HAL_IS_BIT_SET(husart->Instance->CR3, USART_CR3_DMAR)) in HAL_USART_Abort()
2070 CLEAR_BIT(husart->Instance->CR3, USART_CR3_DMAR); in HAL_USART_Abort()
2073 if (husart->hdmarx != NULL) in HAL_USART_Abort()
2077 husart->hdmarx->XferAbortCallback = NULL; in HAL_USART_Abort()
2079 if (HAL_DMA_Abort(husart->hdmarx) != HAL_OK) in HAL_USART_Abort()
2081 if (HAL_DMA_GetError(husart->hdmarx) == HAL_DMA_ERROR_TIMEOUT) in HAL_USART_Abort()
2084 husart->ErrorCode = HAL_USART_ERROR_DMA; in HAL_USART_Abort()
2094 husart->TxXferCount = 0U; in HAL_USART_Abort()
2095 husart->RxXferCount = 0U; in HAL_USART_Abort()
2098 …__HAL_USART_CLEAR_FLAG(husart, USART_CLEAR_OREF | USART_CLEAR_NEF | USART_CLEAR_PEF | USART_CLEAR_… in HAL_USART_Abort()
2101 if (husart->FifoMode == USART_FIFOMODE_ENABLE) in HAL_USART_Abort()
2103 __HAL_USART_SEND_REQ(husart, USART_TXDATA_FLUSH_REQUEST); in HAL_USART_Abort()
2107 __HAL_USART_SEND_REQ(husart, USART_RXDATA_FLUSH_REQUEST); in HAL_USART_Abort()
2110 husart->State = HAL_USART_STATE_READY; in HAL_USART_Abort()
2113 husart->ErrorCode = HAL_USART_ERROR_NONE; in HAL_USART_Abort()
2132 HAL_StatusTypeDef HAL_USART_Abort_IT(USART_HandleTypeDef *husart) in HAL_USART_Abort_IT() argument
2137 …CLEAR_BIT(husart->Instance->CR1, (USART_CR1_RXNEIE_RXFNEIE | USART_CR1_PEIE | USART_CR1_TXEIE_TXFN… in HAL_USART_Abort_IT()
2139 CLEAR_BIT(husart->Instance->CR3, (USART_CR3_EIE | USART_CR3_RXFTIE | USART_CR3_TXFTIE)); in HAL_USART_Abort_IT()
2145 if (husart->hdmatx != NULL) in HAL_USART_Abort_IT()
2149 if (HAL_IS_BIT_SET(husart->Instance->CR3, USART_CR3_DMAT)) in HAL_USART_Abort_IT()
2151 husart->hdmatx->XferAbortCallback = USART_DMATxAbortCallback; in HAL_USART_Abort_IT()
2155 husart->hdmatx->XferAbortCallback = NULL; in HAL_USART_Abort_IT()
2159 if (husart->hdmarx != NULL) in HAL_USART_Abort_IT()
2163 if (HAL_IS_BIT_SET(husart->Instance->CR3, USART_CR3_DMAR)) in HAL_USART_Abort_IT()
2165 husart->hdmarx->XferAbortCallback = USART_DMARxAbortCallback; in HAL_USART_Abort_IT()
2169 husart->hdmarx->XferAbortCallback = NULL; in HAL_USART_Abort_IT()
2174 if (HAL_IS_BIT_SET(husart->Instance->CR3, USART_CR3_DMAT)) in HAL_USART_Abort_IT()
2177 CLEAR_BIT(husart->Instance->CR3, USART_CR3_DMAT); in HAL_USART_Abort_IT()
2180 if (husart->hdmatx != NULL) in HAL_USART_Abort_IT()
2186 if (HAL_DMA_Abort_IT(husart->hdmatx) != HAL_OK) in HAL_USART_Abort_IT()
2188 husart->hdmatx->XferAbortCallback = NULL; in HAL_USART_Abort_IT()
2198 if (HAL_IS_BIT_SET(husart->Instance->CR3, USART_CR3_DMAR)) in HAL_USART_Abort_IT()
2201 CLEAR_BIT(husart->Instance->CR3, USART_CR3_DMAR); in HAL_USART_Abort_IT()
2204 if (husart->hdmarx != NULL) in HAL_USART_Abort_IT()
2210 if (HAL_DMA_Abort_IT(husart->hdmarx) != HAL_OK) in HAL_USART_Abort_IT()
2212 husart->hdmarx->XferAbortCallback = NULL; in HAL_USART_Abort_IT()
2227 husart->TxXferCount = 0U; in HAL_USART_Abort_IT()
2228 husart->RxXferCount = 0U; in HAL_USART_Abort_IT()
2231 husart->ErrorCode = HAL_USART_ERROR_NONE; in HAL_USART_Abort_IT()
2234 …__HAL_USART_CLEAR_FLAG(husart, USART_CLEAR_OREF | USART_CLEAR_NEF | USART_CLEAR_PEF | USART_CLEAR_… in HAL_USART_Abort_IT()
2237 if (husart->FifoMode == USART_FIFOMODE_ENABLE) in HAL_USART_Abort_IT()
2239 __HAL_USART_SEND_REQ(husart, USART_TXDATA_FLUSH_REQUEST); in HAL_USART_Abort_IT()
2243 __HAL_USART_SEND_REQ(husart, USART_RXDATA_FLUSH_REQUEST); in HAL_USART_Abort_IT()
2246 husart->State = HAL_USART_STATE_READY; in HAL_USART_Abort_IT()
2251 husart->AbortCpltCallback(husart); in HAL_USART_Abort_IT()
2254 HAL_USART_AbortCpltCallback(husart); in HAL_USART_Abort_IT()
2266 void HAL_USART_IRQHandler(USART_HandleTypeDef *husart) in HAL_USART_IRQHandler() argument
2268 uint32_t isrflags = READ_REG(husart->Instance->ISR); in HAL_USART_IRQHandler()
2269 uint32_t cr1its = READ_REG(husart->Instance->CR1); in HAL_USART_IRQHandler()
2270 uint32_t cr3its = READ_REG(husart->Instance->CR3); in HAL_USART_IRQHandler()
2285 if (husart->RxISR != NULL) in HAL_USART_IRQHandler()
2287 husart->RxISR(husart); in HAL_USART_IRQHandler()
2301 __HAL_USART_CLEAR_IT(husart, USART_CLEAR_PEF); in HAL_USART_IRQHandler()
2303 husart->ErrorCode |= HAL_USART_ERROR_PE; in HAL_USART_IRQHandler()
2309 __HAL_USART_CLEAR_IT(husart, USART_CLEAR_FEF); in HAL_USART_IRQHandler()
2311 husart->ErrorCode |= HAL_USART_ERROR_FE; in HAL_USART_IRQHandler()
2317 __HAL_USART_CLEAR_IT(husart, USART_CLEAR_NEF); in HAL_USART_IRQHandler()
2319 husart->ErrorCode |= HAL_USART_ERROR_NE; in HAL_USART_IRQHandler()
2327 __HAL_USART_CLEAR_IT(husart, USART_CLEAR_OREF); in HAL_USART_IRQHandler()
2329 husart->ErrorCode |= HAL_USART_ERROR_ORE; in HAL_USART_IRQHandler()
2335 __HAL_USART_CLEAR_IT(husart, USART_CLEAR_RTOF); in HAL_USART_IRQHandler()
2337 husart->ErrorCode |= HAL_USART_ERROR_RTO; in HAL_USART_IRQHandler()
2344 if (husart->State == HAL_USART_STATE_BUSY_RX) in HAL_USART_IRQHandler()
2346 __HAL_USART_CLEAR_UDRFLAG(husart); in HAL_USART_IRQHandler()
2351 __HAL_USART_CLEAR_UDRFLAG(husart); in HAL_USART_IRQHandler()
2352 husart->ErrorCode |= HAL_USART_ERROR_UDR; in HAL_USART_IRQHandler()
2357 if (husart->ErrorCode != HAL_USART_ERROR_NONE) in HAL_USART_IRQHandler()
2364 if (husart->RxISR != NULL) in HAL_USART_IRQHandler()
2366 husart->RxISR(husart); in HAL_USART_IRQHandler()
2372 errorcode = husart->ErrorCode & HAL_USART_ERROR_ORE; in HAL_USART_IRQHandler()
2373 if ((HAL_IS_BIT_SET(husart->Instance->CR3, USART_CR3_DMAR)) || in HAL_USART_IRQHandler()
2379 USART_EndTransfer(husart); in HAL_USART_IRQHandler()
2383 if (HAL_IS_BIT_SET(husart->Instance->CR3, USART_CR3_DMAR)) in HAL_USART_IRQHandler()
2386 CLEAR_BIT(husart->Instance->CR3, USART_CR3_DMAR | USART_CR3_DMAR); in HAL_USART_IRQHandler()
2389 if (husart->hdmatx != NULL) in HAL_USART_IRQHandler()
2393 husart->hdmatx->XferAbortCallback = NULL; in HAL_USART_IRQHandler()
2396 (void)HAL_DMA_Abort_IT(husart->hdmatx); in HAL_USART_IRQHandler()
2400 if (husart->hdmarx != NULL) in HAL_USART_IRQHandler()
2404 husart->hdmarx->XferAbortCallback = USART_DMAAbortOnError; in HAL_USART_IRQHandler()
2407 if (HAL_DMA_Abort_IT(husart->hdmarx) != HAL_OK) in HAL_USART_IRQHandler()
2410 husart->hdmarx->XferAbortCallback(husart->hdmarx); in HAL_USART_IRQHandler()
2418 husart->ErrorCallback(husart); in HAL_USART_IRQHandler()
2421 HAL_USART_ErrorCallback(husart); in HAL_USART_IRQHandler()
2431 husart->ErrorCallback(husart); in HAL_USART_IRQHandler()
2434 HAL_USART_ErrorCallback(husart); in HAL_USART_IRQHandler()
2444 husart->ErrorCallback(husart); in HAL_USART_IRQHandler()
2447 HAL_USART_ErrorCallback(husart); in HAL_USART_IRQHandler()
2449 husart->ErrorCode = HAL_USART_ERROR_NONE; in HAL_USART_IRQHandler()
2462 if (husart->TxISR != NULL) in HAL_USART_IRQHandler()
2464 husart->TxISR(husart); in HAL_USART_IRQHandler()
2472 USART_EndTransmit_IT(husart); in HAL_USART_IRQHandler()
2481 husart->TxFifoEmptyCallback(husart); in HAL_USART_IRQHandler()
2484 HAL_USARTEx_TxFifoEmptyCallback(husart); in HAL_USART_IRQHandler()
2494 husart->RxFifoFullCallback(husart); in HAL_USART_IRQHandler()
2497 HAL_USARTEx_RxFifoFullCallback(husart); in HAL_USART_IRQHandler()
2508 __weak void HAL_USART_TxCpltCallback(USART_HandleTypeDef *husart) in HAL_USART_TxCpltCallback() argument
2511 UNUSED(husart); in HAL_USART_TxCpltCallback()
2523 __weak void HAL_USART_TxHalfCpltCallback(USART_HandleTypeDef *husart) in HAL_USART_TxHalfCpltCallback() argument
2526 UNUSED(husart); in HAL_USART_TxHalfCpltCallback()
2538 __weak void HAL_USART_RxCpltCallback(USART_HandleTypeDef *husart) in HAL_USART_RxCpltCallback() argument
2541 UNUSED(husart); in HAL_USART_RxCpltCallback()
2553 __weak void HAL_USART_RxHalfCpltCallback(USART_HandleTypeDef *husart) in HAL_USART_RxHalfCpltCallback() argument
2556 UNUSED(husart); in HAL_USART_RxHalfCpltCallback()
2568 __weak void HAL_USART_TxRxCpltCallback(USART_HandleTypeDef *husart) in HAL_USART_TxRxCpltCallback() argument
2571 UNUSED(husart); in HAL_USART_TxRxCpltCallback()
2583 __weak void HAL_USART_ErrorCallback(USART_HandleTypeDef *husart) in HAL_USART_ErrorCallback() argument
2586 UNUSED(husart); in HAL_USART_ErrorCallback()
2598 __weak void HAL_USART_AbortCpltCallback(USART_HandleTypeDef *husart) in HAL_USART_AbortCpltCallback() argument
2601 UNUSED(husart); in HAL_USART_AbortCpltCallback()
2635 HAL_USART_StateTypeDef HAL_USART_GetState(const USART_HandleTypeDef *husart) in HAL_USART_GetState() argument
2637 return husart->State; in HAL_USART_GetState()
2646 uint32_t HAL_USART_GetError(const USART_HandleTypeDef *husart) in HAL_USART_GetError() argument
2648 return husart->ErrorCode; in HAL_USART_GetError()
2669 void USART_InitCallbacksToDefault(USART_HandleTypeDef *husart) in USART_InitCallbacksToDefault() argument
2672husart->TxHalfCpltCallback = HAL_USART_TxHalfCpltCallback; /* Legacy weak TxHalfCplt… in USART_InitCallbacksToDefault()
2673husart->TxCpltCallback = HAL_USART_TxCpltCallback; /* Legacy weak TxCpltCall… in USART_InitCallbacksToDefault()
2674husart->RxHalfCpltCallback = HAL_USART_RxHalfCpltCallback; /* Legacy weak RxHalfCplt… in USART_InitCallbacksToDefault()
2675husart->RxCpltCallback = HAL_USART_RxCpltCallback; /* Legacy weak RxCpltCall… in USART_InitCallbacksToDefault()
2676husart->TxRxCpltCallback = HAL_USART_TxRxCpltCallback; /* Legacy weak TxRxCpltCa… in USART_InitCallbacksToDefault()
2677husart->ErrorCallback = HAL_USART_ErrorCallback; /* Legacy weak ErrorCallb… in USART_InitCallbacksToDefault()
2678husart->AbortCpltCallback = HAL_USART_AbortCpltCallback; /* Legacy weak AbortCpltC… in USART_InitCallbacksToDefault()
2679husart->RxFifoFullCallback = HAL_USARTEx_RxFifoFullCallback; /* Legacy weak RxFifoFull… in USART_InitCallbacksToDefault()
2680husart->TxFifoEmptyCallback = HAL_USARTEx_TxFifoEmptyCallback; /* Legacy weak TxFifoEmpt… in USART_InitCallbacksToDefault()
2689 static void USART_EndTransfer(USART_HandleTypeDef *husart) in USART_EndTransfer() argument
2692 …CLEAR_BIT(husart->Instance->CR1, (USART_CR1_RXNEIE_RXFNEIE | USART_CR1_PEIE | USART_CR1_TXEIE_TXFN… in USART_EndTransfer()
2694 CLEAR_BIT(husart->Instance->CR3, (USART_CR3_EIE | USART_CR3_RXFTIE | USART_CR3_TXFTIE)); in USART_EndTransfer()
2697 husart->State = HAL_USART_STATE_READY; in USART_EndTransfer()
2708 USART_HandleTypeDef *husart = (USART_HandleTypeDef *)(hdma->Parent); in USART_DMATransmitCplt() local
2713 husart->TxXferCount = 0U; in USART_DMATransmitCplt()
2715 if (husart->State == HAL_USART_STATE_BUSY_TX) in USART_DMATransmitCplt()
2719 CLEAR_BIT(husart->Instance->CR3, USART_CR3_DMAT); in USART_DMATransmitCplt()
2722 __HAL_USART_ENABLE_IT(husart, USART_IT_TC); in USART_DMATransmitCplt()
2728 if (husart->State == HAL_USART_STATE_BUSY_TX) in USART_DMATransmitCplt()
2732 husart->TxCpltCallback(husart); in USART_DMATransmitCplt()
2735 HAL_USART_TxCpltCallback(husart); in USART_DMATransmitCplt()
2748 USART_HandleTypeDef *husart = (USART_HandleTypeDef *)(hdma->Parent); in USART_DMATxHalfCplt() local
2752 husart->TxHalfCpltCallback(husart); in USART_DMATxHalfCplt()
2755 HAL_USART_TxHalfCpltCallback(husart); in USART_DMATxHalfCplt()
2766 USART_HandleTypeDef *husart = (USART_HandleTypeDef *)(hdma->Parent); in USART_DMAReceiveCplt() local
2771 husart->RxXferCount = 0U; in USART_DMAReceiveCplt()
2774 CLEAR_BIT(husart->Instance->CR1, USART_CR1_PEIE); in USART_DMAReceiveCplt()
2775 CLEAR_BIT(husart->Instance->CR3, USART_CR3_EIE); in USART_DMAReceiveCplt()
2779 CLEAR_BIT(husart->Instance->CR3, USART_CR3_DMAR); in USART_DMAReceiveCplt()
2782 CLEAR_BIT(husart->Instance->CR3, USART_CR3_DMAT); in USART_DMAReceiveCplt()
2784 if (husart->State == HAL_USART_STATE_BUSY_RX) in USART_DMAReceiveCplt()
2788 husart->RxCpltCallback(husart); in USART_DMAReceiveCplt()
2791 HAL_USART_RxCpltCallback(husart); in USART_DMAReceiveCplt()
2799 husart->TxRxCpltCallback(husart); in USART_DMAReceiveCplt()
2802 HAL_USART_TxRxCpltCallback(husart); in USART_DMAReceiveCplt()
2805 husart->State = HAL_USART_STATE_READY; in USART_DMAReceiveCplt()
2810 if (husart->State == HAL_USART_STATE_BUSY_RX) in USART_DMAReceiveCplt()
2814 husart->RxCpltCallback(husart); in USART_DMAReceiveCplt()
2817 HAL_USART_RxCpltCallback(husart); in USART_DMAReceiveCplt()
2825 husart->TxRxCpltCallback(husart); in USART_DMAReceiveCplt()
2828 HAL_USART_TxRxCpltCallback(husart); in USART_DMAReceiveCplt()
2841 USART_HandleTypeDef *husart = (USART_HandleTypeDef *)(hdma->Parent); in USART_DMARxHalfCplt() local
2845 husart->RxHalfCpltCallback(husart); in USART_DMARxHalfCplt()
2848 HAL_USART_RxHalfCpltCallback(husart); in USART_DMARxHalfCplt()
2859 USART_HandleTypeDef *husart = (USART_HandleTypeDef *)(hdma->Parent); in USART_DMAError() local
2861 husart->RxXferCount = 0U; in USART_DMAError()
2862 husart->TxXferCount = 0U; in USART_DMAError()
2863 USART_EndTransfer(husart); in USART_DMAError()
2865 husart->ErrorCode |= HAL_USART_ERROR_DMA; in USART_DMAError()
2866 husart->State = HAL_USART_STATE_READY; in USART_DMAError()
2870 husart->ErrorCallback(husart); in USART_DMAError()
2873 HAL_USART_ErrorCallback(husart); in USART_DMAError()
2885 USART_HandleTypeDef *husart = (USART_HandleTypeDef *)(hdma->Parent); in USART_DMAAbortOnError() local
2886 husart->RxXferCount = 0U; in USART_DMAAbortOnError()
2887 husart->TxXferCount = 0U; in USART_DMAAbortOnError()
2891 husart->ErrorCallback(husart); in USART_DMAAbortOnError()
2894 HAL_USART_ErrorCallback(husart); in USART_DMAAbortOnError()
2908 USART_HandleTypeDef *husart = (USART_HandleTypeDef *)(hdma->Parent); in USART_DMATxAbortCallback() local
2910 husart->hdmatx->XferAbortCallback = NULL; in USART_DMATxAbortCallback()
2913 if (husart->hdmarx != NULL) in USART_DMATxAbortCallback()
2915 if (husart->hdmarx->XferAbortCallback != NULL) in USART_DMATxAbortCallback()
2922 husart->TxXferCount = 0U; in USART_DMATxAbortCallback()
2923 husart->RxXferCount = 0U; in USART_DMATxAbortCallback()
2926 husart->ErrorCode = HAL_USART_ERROR_NONE; in USART_DMATxAbortCallback()
2929 …__HAL_USART_CLEAR_FLAG(husart, USART_CLEAR_OREF | USART_CLEAR_NEF | USART_CLEAR_PEF | USART_CLEAR_… in USART_DMATxAbortCallback()
2932 husart->State = HAL_USART_STATE_READY; in USART_DMATxAbortCallback()
2937 husart->AbortCpltCallback(husart); in USART_DMATxAbortCallback()
2940 HAL_USART_AbortCpltCallback(husart); in USART_DMATxAbortCallback()
2956 USART_HandleTypeDef *husart = (USART_HandleTypeDef *)(hdma->Parent); in USART_DMARxAbortCallback() local
2958 husart->hdmarx->XferAbortCallback = NULL; in USART_DMARxAbortCallback()
2961 if (husart->hdmatx != NULL) in USART_DMARxAbortCallback()
2963 if (husart->hdmatx->XferAbortCallback != NULL) in USART_DMARxAbortCallback()
2970 husart->TxXferCount = 0U; in USART_DMARxAbortCallback()
2971 husart->RxXferCount = 0U; in USART_DMARxAbortCallback()
2974 husart->ErrorCode = HAL_USART_ERROR_NONE; in USART_DMARxAbortCallback()
2977 …__HAL_USART_CLEAR_FLAG(husart, USART_CLEAR_OREF | USART_CLEAR_NEF | USART_CLEAR_PEF | USART_CLEAR_… in USART_DMARxAbortCallback()
2980 husart->State = HAL_USART_STATE_READY; in USART_DMARxAbortCallback()
2985 husart->AbortCpltCallback(husart); in USART_DMARxAbortCallback()
2988 HAL_USART_AbortCpltCallback(husart); in USART_DMARxAbortCallback()
3004 static HAL_StatusTypeDef USART_WaitOnFlagUntilTimeout(USART_HandleTypeDef *husart, uint32_t Flag, F… in USART_WaitOnFlagUntilTimeout() argument
3008 while ((__HAL_USART_GET_FLAG(husart, Flag) ? SET : RESET) == Status) in USART_WaitOnFlagUntilTimeout()
3015 husart->State = HAL_USART_STATE_READY; in USART_WaitOnFlagUntilTimeout()
3018 __HAL_UNLOCK(husart); in USART_WaitOnFlagUntilTimeout()
3032 static HAL_StatusTypeDef USART_SetConfig(USART_HandleTypeDef *husart) in USART_SetConfig() argument
3042 assert_param(IS_USART_POLARITY(husart->Init.CLKPolarity)); in USART_SetConfig()
3043 assert_param(IS_USART_PHASE(husart->Init.CLKPhase)); in USART_SetConfig()
3044 assert_param(IS_USART_LASTBIT(husart->Init.CLKLastBit)); in USART_SetConfig()
3045 assert_param(IS_USART_BAUDRATE(husart->Init.BaudRate)); in USART_SetConfig()
3046 assert_param(IS_USART_WORD_LENGTH(husart->Init.WordLength)); in USART_SetConfig()
3047 assert_param(IS_USART_STOPBITS(husart->Init.StopBits)); in USART_SetConfig()
3048 assert_param(IS_USART_PARITY(husart->Init.Parity)); in USART_SetConfig()
3049 assert_param(IS_USART_MODE(husart->Init.Mode)); in USART_SetConfig()
3050 assert_param(IS_USART_PRESCALER(husart->Init.ClockPrescaler)); in USART_SetConfig()
3059 …tmpreg = (uint32_t)husart->Init.WordLength | husart->Init.Parity | husart->Init.Mode | USART_CR1_O… in USART_SetConfig()
3060 MODIFY_REG(husart->Instance->CR1, USART_CR1_FIELDS, tmpreg); in USART_SetConfig()
3069 tmpreg |= (uint32_t)husart->Init.CLKLastBit; in USART_SetConfig()
3070 tmpreg |= ((uint32_t)husart->Init.CLKPolarity | (uint32_t)husart->Init.CLKPhase); in USART_SetConfig()
3071 tmpreg |= (uint32_t)husart->Init.StopBits; in USART_SetConfig()
3072 MODIFY_REG(husart->Instance->CR2, USART_CR2_FIELDS, tmpreg); in USART_SetConfig()
3077 MODIFY_REG(husart->Instance->PRESC, USART_PRESC_PRESCALER, husart->Init.ClockPrescaler); in USART_SetConfig()
3081 USART_GETCLOCKSOURCE(husart, clocksource); in USART_SetConfig()
3087 …usartdiv = (uint32_t)(USART_DIV_SAMPLING8(pclk, husart->Init.BaudRate, husart->Init.ClockPrescaler… in USART_SetConfig()
3091 …usartdiv = (uint32_t)(USART_DIV_SAMPLING8(pclk, husart->Init.BaudRate, husart->Init.ClockPrescaler… in USART_SetConfig()
3095 …usartdiv = (uint32_t)(USART_DIV_SAMPLING8(pclk, husart->Init.BaudRate, husart->Init.ClockPrescaler… in USART_SetConfig()
3098 …usartdiv = (uint32_t)(USART_DIV_SAMPLING8(LSE_VALUE, husart->Init.BaudRate, husart->Init.ClockPres… in USART_SetConfig()
3110 husart->Instance->BRR = brrtemp; in USART_SetConfig()
3118 husart->NbTxDataToProcess = 1U; in USART_SetConfig()
3119 husart->NbRxDataToProcess = 1U; in USART_SetConfig()
3122 husart->RxISR = NULL; in USART_SetConfig()
3123 husart->TxISR = NULL; in USART_SetConfig()
3133 static HAL_StatusTypeDef USART_CheckIdleState(USART_HandleTypeDef *husart) in USART_CheckIdleState() argument
3138 husart->ErrorCode = HAL_USART_ERROR_NONE; in USART_CheckIdleState()
3144 if ((husart->Instance->CR1 & USART_CR1_TE) == USART_CR1_TE) in USART_CheckIdleState()
3147 …if (USART_WaitOnFlagUntilTimeout(husart, USART_ISR_TEACK, RESET, tickstart, USART_TEACK_REACK_TIME… in USART_CheckIdleState()
3154 if ((husart->Instance->CR1 & USART_CR1_RE) == USART_CR1_RE) in USART_CheckIdleState()
3157 …if (USART_WaitOnFlagUntilTimeout(husart, USART_ISR_REACK, RESET, tickstart, USART_TEACK_REACK_TIME… in USART_CheckIdleState()
3165 husart->State = HAL_USART_STATE_READY; in USART_CheckIdleState()
3168 __HAL_UNLOCK(husart); in USART_CheckIdleState()
3183 static void USART_TxISR_8BIT(USART_HandleTypeDef *husart) in USART_TxISR_8BIT() argument
3185 const HAL_USART_StateTypeDef state = husart->State; in USART_TxISR_8BIT()
3191 if (husart->TxXferCount == 0U) in USART_TxISR_8BIT()
3194 __HAL_USART_DISABLE_IT(husart, USART_IT_TXE); in USART_TxISR_8BIT()
3197 __HAL_USART_ENABLE_IT(husart, USART_IT_TC); in USART_TxISR_8BIT()
3201 husart->Instance->TDR = (uint8_t)(*husart->pTxBuffPtr & (uint8_t)0xFF); in USART_TxISR_8BIT()
3202 husart->pTxBuffPtr++; in USART_TxISR_8BIT()
3203 husart->TxXferCount--; in USART_TxISR_8BIT()
3218 static void USART_TxISR_16BIT(USART_HandleTypeDef *husart) in USART_TxISR_16BIT() argument
3220 const HAL_USART_StateTypeDef state = husart->State; in USART_TxISR_16BIT()
3226 if (husart->TxXferCount == 0U) in USART_TxISR_16BIT()
3229 __HAL_USART_DISABLE_IT(husart, USART_IT_TXE); in USART_TxISR_16BIT()
3232 __HAL_USART_ENABLE_IT(husart, USART_IT_TC); in USART_TxISR_16BIT()
3236 tmp = (const uint16_t *) husart->pTxBuffPtr; in USART_TxISR_16BIT()
3237 husart->Instance->TDR = (uint16_t)(*tmp & 0x01FFU); in USART_TxISR_16BIT()
3238 husart->pTxBuffPtr += 2U; in USART_TxISR_16BIT()
3239 husart->TxXferCount--; in USART_TxISR_16BIT()
3254 static void USART_TxISR_8BIT_FIFOEN(USART_HandleTypeDef *husart) in USART_TxISR_8BIT_FIFOEN() argument
3256 const HAL_USART_StateTypeDef state = husart->State; in USART_TxISR_8BIT_FIFOEN()
3263 for (nb_tx_data = husart->NbTxDataToProcess ; nb_tx_data > 0U ; nb_tx_data--) in USART_TxISR_8BIT_FIFOEN()
3265 if (husart->TxXferCount == 0U) in USART_TxISR_8BIT_FIFOEN()
3268 __HAL_USART_DISABLE_IT(husart, USART_IT_TXFT); in USART_TxISR_8BIT_FIFOEN()
3271 __HAL_USART_ENABLE_IT(husart, USART_IT_TC); in USART_TxISR_8BIT_FIFOEN()
3275 else if (__HAL_USART_GET_FLAG(husart, USART_FLAG_TXFNF) == SET) in USART_TxISR_8BIT_FIFOEN()
3277 husart->Instance->TDR = (uint8_t)(*husart->pTxBuffPtr & (uint8_t)0xFF); in USART_TxISR_8BIT_FIFOEN()
3278 husart->pTxBuffPtr++; in USART_TxISR_8BIT_FIFOEN()
3279 husart->TxXferCount--; in USART_TxISR_8BIT_FIFOEN()
3299 static void USART_TxISR_16BIT_FIFOEN(USART_HandleTypeDef *husart) in USART_TxISR_16BIT_FIFOEN() argument
3301 const HAL_USART_StateTypeDef state = husart->State; in USART_TxISR_16BIT_FIFOEN()
3309 for (nb_tx_data = husart->NbTxDataToProcess ; nb_tx_data > 0U ; nb_tx_data--) in USART_TxISR_16BIT_FIFOEN()
3311 if (husart->TxXferCount == 0U) in USART_TxISR_16BIT_FIFOEN()
3314 __HAL_USART_DISABLE_IT(husart, USART_IT_TXFT); in USART_TxISR_16BIT_FIFOEN()
3317 __HAL_USART_ENABLE_IT(husart, USART_IT_TC); in USART_TxISR_16BIT_FIFOEN()
3321 else if (__HAL_USART_GET_FLAG(husart, USART_FLAG_TXFNF) == SET) in USART_TxISR_16BIT_FIFOEN()
3323 tmp = (const uint16_t *) husart->pTxBuffPtr; in USART_TxISR_16BIT_FIFOEN()
3324 husart->Instance->TDR = (uint16_t)(*tmp & 0x01FFU); in USART_TxISR_16BIT_FIFOEN()
3325 husart->pTxBuffPtr += 2U; in USART_TxISR_16BIT_FIFOEN()
3326 husart->TxXferCount--; in USART_TxISR_16BIT_FIFOEN()
3342 static void USART_EndTransmit_IT(USART_HandleTypeDef *husart) in USART_EndTransmit_IT() argument
3345 __HAL_USART_DISABLE_IT(husart, USART_IT_TC); in USART_EndTransmit_IT()
3348 __HAL_USART_DISABLE_IT(husart, USART_IT_ERR); in USART_EndTransmit_IT()
3351 husart->TxISR = NULL; in USART_EndTransmit_IT()
3353 if (husart->State == HAL_USART_STATE_BUSY_TX) in USART_EndTransmit_IT()
3356 __HAL_USART_CLEAR_OREFLAG(husart); in USART_EndTransmit_IT()
3357 __HAL_USART_SEND_REQ(husart, USART_RXDATA_FLUSH_REQUEST); in USART_EndTransmit_IT()
3360 husart->State = HAL_USART_STATE_READY; in USART_EndTransmit_IT()
3364 husart->TxCpltCallback(husart); in USART_EndTransmit_IT()
3367 HAL_USART_TxCpltCallback(husart); in USART_EndTransmit_IT()
3370 else if (husart->RxXferCount == 0U) in USART_EndTransmit_IT()
3373 husart->State = HAL_USART_STATE_READY; in USART_EndTransmit_IT()
3377 husart->TxRxCpltCallback(husart); in USART_EndTransmit_IT()
3380 HAL_USART_TxRxCpltCallback(husart); in USART_EndTransmit_IT()
3399 static void USART_RxISR_8BIT(USART_HandleTypeDef *husart) in USART_RxISR_8BIT() argument
3401 const HAL_USART_StateTypeDef state = husart->State; in USART_RxISR_8BIT()
3403 uint16_t uhMask = husart->Mask; in USART_RxISR_8BIT()
3409 *husart->pRxBuffPtr = (uint8_t)(husart->Instance->RDR & (uint8_t)uhMask); in USART_RxISR_8BIT()
3410 husart->pRxBuffPtr++; in USART_RxISR_8BIT()
3411 husart->RxXferCount--; in USART_RxISR_8BIT()
3413 if (husart->RxXferCount == 0U) in USART_RxISR_8BIT()
3416 CLEAR_BIT(husart->Instance->CR1, (USART_CR1_RXNEIE_RXFNEIE | USART_CR1_PEIE)); in USART_RxISR_8BIT()
3419 CLEAR_BIT(husart->Instance->CR3, USART_CR3_EIE); in USART_RxISR_8BIT()
3422 husart->RxISR = NULL; in USART_RxISR_8BIT()
3425 txftie = READ_BIT(husart->Instance->CR3, USART_CR3_TXFTIE); in USART_RxISR_8BIT()
3426 txdatacount = husart->TxXferCount; in USART_RxISR_8BIT()
3431 if (husart->SlaveMode == USART_SLAVEMODE_ENABLE) in USART_RxISR_8BIT()
3433 __HAL_USART_CLEAR_UDRFLAG(husart); in USART_RxISR_8BIT()
3434 __HAL_USART_SEND_REQ(husart, USART_TXDATA_FLUSH_REQUEST); in USART_RxISR_8BIT()
3438 husart->State = HAL_USART_STATE_READY; in USART_RxISR_8BIT()
3442 husart->RxCpltCallback(husart); in USART_RxISR_8BIT()
3445 HAL_USART_RxCpltCallback(husart); in USART_RxISR_8BIT()
3448 else if ((READ_BIT(husart->Instance->CR1, USART_CR1_TCIE) != USART_CR1_TCIE) && in USART_RxISR_8BIT()
3453 husart->State = HAL_USART_STATE_READY; in USART_RxISR_8BIT()
3457 husart->TxRxCpltCallback(husart); in USART_RxISR_8BIT()
3460 HAL_USART_TxRxCpltCallback(husart); in USART_RxISR_8BIT()
3469 (husart->SlaveMode == USART_SLAVEMODE_DISABLE)) in USART_RxISR_8BIT()
3472 husart->Instance->TDR = (USART_DUMMY_DATA & (uint16_t)0x00FF); in USART_RxISR_8BIT()
3490 static void USART_RxISR_16BIT(USART_HandleTypeDef *husart) in USART_RxISR_16BIT() argument
3492 const HAL_USART_StateTypeDef state = husart->State; in USART_RxISR_16BIT()
3495 uint16_t uhMask = husart->Mask; in USART_RxISR_16BIT()
3501 tmp = (uint16_t *) husart->pRxBuffPtr; in USART_RxISR_16BIT()
3502 *tmp = (uint16_t)(husart->Instance->RDR & uhMask); in USART_RxISR_16BIT()
3503 husart->pRxBuffPtr += 2U; in USART_RxISR_16BIT()
3504 husart->RxXferCount--; in USART_RxISR_16BIT()
3506 if (husart->RxXferCount == 0U) in USART_RxISR_16BIT()
3509 CLEAR_BIT(husart->Instance->CR1, (USART_CR1_RXNEIE_RXFNEIE | USART_CR1_PEIE)); in USART_RxISR_16BIT()
3512 CLEAR_BIT(husart->Instance->CR3, USART_CR3_EIE); in USART_RxISR_16BIT()
3515 husart->RxISR = NULL; in USART_RxISR_16BIT()
3518 txftie = READ_BIT(husart->Instance->CR3, USART_CR3_TXFTIE); in USART_RxISR_16BIT()
3519 txdatacount = husart->TxXferCount; in USART_RxISR_16BIT()
3524 if (husart->SlaveMode == USART_SLAVEMODE_ENABLE) in USART_RxISR_16BIT()
3526 __HAL_USART_CLEAR_UDRFLAG(husart); in USART_RxISR_16BIT()
3527 __HAL_USART_SEND_REQ(husart, USART_TXDATA_FLUSH_REQUEST); in USART_RxISR_16BIT()
3531 husart->State = HAL_USART_STATE_READY; in USART_RxISR_16BIT()
3535 husart->RxCpltCallback(husart); in USART_RxISR_16BIT()
3538 HAL_USART_RxCpltCallback(husart); in USART_RxISR_16BIT()
3541 else if ((READ_BIT(husart->Instance->CR1, USART_CR1_TCIE) != USART_CR1_TCIE) && in USART_RxISR_16BIT()
3546 husart->State = HAL_USART_STATE_READY; in USART_RxISR_16BIT()
3550 husart->TxRxCpltCallback(husart); in USART_RxISR_16BIT()
3553 HAL_USART_TxRxCpltCallback(husart); in USART_RxISR_16BIT()
3562 (husart->SlaveMode == USART_SLAVEMODE_DISABLE)) in USART_RxISR_16BIT()
3565 husart->Instance->TDR = (USART_DUMMY_DATA & (uint16_t)0x00FF); in USART_RxISR_16BIT()
3583 static void USART_RxISR_8BIT_FIFOEN(USART_HandleTypeDef *husart) in USART_RxISR_8BIT_FIFOEN() argument
3585 HAL_USART_StateTypeDef state = husart->State; in USART_RxISR_8BIT_FIFOEN()
3588 uint16_t uhMask = husart->Mask; in USART_RxISR_8BIT_FIFOEN()
3596 for (nb_rx_data = husart->NbRxDataToProcess ; nb_rx_data > 0U ; nb_rx_data--) in USART_RxISR_8BIT_FIFOEN()
3598 if (__HAL_USART_GET_FLAG(husart, USART_FLAG_RXFNE) == SET) in USART_RxISR_8BIT_FIFOEN()
3600 *husart->pRxBuffPtr = (uint8_t)(husart->Instance->RDR & (uint8_t)(uhMask & 0xFFU)); in USART_RxISR_8BIT_FIFOEN()
3601 husart->pRxBuffPtr++; in USART_RxISR_8BIT_FIFOEN()
3602 husart->RxXferCount--; in USART_RxISR_8BIT_FIFOEN()
3604 if (husart->RxXferCount == 0U) in USART_RxISR_8BIT_FIFOEN()
3607 CLEAR_BIT(husart->Instance->CR1, USART_CR1_PEIE); in USART_RxISR_8BIT_FIFOEN()
3611 CLEAR_BIT(husart->Instance->CR3, (USART_CR3_EIE | USART_CR3_RXFTIE)); in USART_RxISR_8BIT_FIFOEN()
3614 husart->RxISR = NULL; in USART_RxISR_8BIT_FIFOEN()
3617 txftie = READ_BIT(husart->Instance->CR3, USART_CR3_TXFTIE); in USART_RxISR_8BIT_FIFOEN()
3618 txdatacount = husart->TxXferCount; in USART_RxISR_8BIT_FIFOEN()
3623 if (husart->SlaveMode == USART_SLAVEMODE_ENABLE) in USART_RxISR_8BIT_FIFOEN()
3625 __HAL_USART_CLEAR_UDRFLAG(husart); in USART_RxISR_8BIT_FIFOEN()
3626 __HAL_USART_SEND_REQ(husart, USART_TXDATA_FLUSH_REQUEST); in USART_RxISR_8BIT_FIFOEN()
3630 husart->State = HAL_USART_STATE_READY; in USART_RxISR_8BIT_FIFOEN()
3635 husart->RxCpltCallback(husart); in USART_RxISR_8BIT_FIFOEN()
3638 HAL_USART_RxCpltCallback(husart); in USART_RxISR_8BIT_FIFOEN()
3641 else if ((READ_BIT(husart->Instance->CR1, USART_CR1_TCIE) != USART_CR1_TCIE) && in USART_RxISR_8BIT_FIFOEN()
3646 husart->State = HAL_USART_STATE_READY; in USART_RxISR_8BIT_FIFOEN()
3651 husart->TxRxCpltCallback(husart); in USART_RxISR_8BIT_FIFOEN()
3654 HAL_USART_TxRxCpltCallback(husart); in USART_RxISR_8BIT_FIFOEN()
3663 (husart->SlaveMode == USART_SLAVEMODE_DISABLE)) in USART_RxISR_8BIT_FIFOEN()
3666 husart->Instance->TDR = (USART_DUMMY_DATA & (uint16_t)0x00FF); in USART_RxISR_8BIT_FIFOEN()
3679 rxdatacount = husart->RxXferCount; in USART_RxISR_8BIT_FIFOEN()
3680 if (((rxdatacount != 0U)) && (rxdatacount < husart->NbRxDataToProcess)) in USART_RxISR_8BIT_FIFOEN()
3683 CLEAR_BIT(husart->Instance->CR3, USART_CR3_RXFTIE); in USART_RxISR_8BIT_FIFOEN()
3686 husart->RxISR = USART_RxISR_8BIT; in USART_RxISR_8BIT_FIFOEN()
3689 SET_BIT(husart->Instance->CR1, USART_CR1_RXNEIE_RXFNEIE); in USART_RxISR_8BIT_FIFOEN()
3691 if ((husart->TxXferCount == 0U) && in USART_RxISR_8BIT_FIFOEN()
3693 (husart->SlaveMode == USART_SLAVEMODE_DISABLE)) in USART_RxISR_8BIT_FIFOEN()
3696 husart->Instance->TDR = (USART_DUMMY_DATA & (uint16_t)0x00FF); in USART_RxISR_8BIT_FIFOEN()
3703 __HAL_USART_SEND_REQ(husart, USART_RXDATA_FLUSH_REQUEST); in USART_RxISR_8BIT_FIFOEN()
3716 static void USART_RxISR_16BIT_FIFOEN(USART_HandleTypeDef *husart) in USART_RxISR_16BIT_FIFOEN() argument
3718 HAL_USART_StateTypeDef state = husart->State; in USART_RxISR_16BIT_FIFOEN()
3722 uint16_t uhMask = husart->Mask; in USART_RxISR_16BIT_FIFOEN()
3730 for (nb_rx_data = husart->NbRxDataToProcess ; nb_rx_data > 0U ; nb_rx_data--) in USART_RxISR_16BIT_FIFOEN()
3732 if (__HAL_USART_GET_FLAG(husart, USART_FLAG_RXFNE) == SET) in USART_RxISR_16BIT_FIFOEN()
3734 tmp = (uint16_t *) husart->pRxBuffPtr; in USART_RxISR_16BIT_FIFOEN()
3735 *tmp = (uint16_t)(husart->Instance->RDR & uhMask); in USART_RxISR_16BIT_FIFOEN()
3736 husart->pRxBuffPtr += 2U; in USART_RxISR_16BIT_FIFOEN()
3737 husart->RxXferCount--; in USART_RxISR_16BIT_FIFOEN()
3739 if (husart->RxXferCount == 0U) in USART_RxISR_16BIT_FIFOEN()
3742 CLEAR_BIT(husart->Instance->CR1, USART_CR1_PEIE); in USART_RxISR_16BIT_FIFOEN()
3746 CLEAR_BIT(husart->Instance->CR3, (USART_CR3_EIE | USART_CR3_RXFTIE)); in USART_RxISR_16BIT_FIFOEN()
3749 husart->RxISR = NULL; in USART_RxISR_16BIT_FIFOEN()
3752 txftie = READ_BIT(husart->Instance->CR3, USART_CR3_TXFTIE); in USART_RxISR_16BIT_FIFOEN()
3753 txdatacount = husart->TxXferCount; in USART_RxISR_16BIT_FIFOEN()
3758 if (husart->SlaveMode == USART_SLAVEMODE_ENABLE) in USART_RxISR_16BIT_FIFOEN()
3760 __HAL_USART_CLEAR_UDRFLAG(husart); in USART_RxISR_16BIT_FIFOEN()
3761 __HAL_USART_SEND_REQ(husart, USART_TXDATA_FLUSH_REQUEST); in USART_RxISR_16BIT_FIFOEN()
3765 husart->State = HAL_USART_STATE_READY; in USART_RxISR_16BIT_FIFOEN()
3770 husart->RxCpltCallback(husart); in USART_RxISR_16BIT_FIFOEN()
3773 HAL_USART_RxCpltCallback(husart); in USART_RxISR_16BIT_FIFOEN()
3776 else if ((READ_BIT(husart->Instance->CR1, USART_CR1_TCIE) != USART_CR1_TCIE) && in USART_RxISR_16BIT_FIFOEN()
3781 husart->State = HAL_USART_STATE_READY; in USART_RxISR_16BIT_FIFOEN()
3786 husart->TxRxCpltCallback(husart); in USART_RxISR_16BIT_FIFOEN()
3789 HAL_USART_TxRxCpltCallback(husart); in USART_RxISR_16BIT_FIFOEN()
3798 (husart->SlaveMode == USART_SLAVEMODE_DISABLE)) in USART_RxISR_16BIT_FIFOEN()
3801 husart->Instance->TDR = (USART_DUMMY_DATA & (uint16_t)0x00FF); in USART_RxISR_16BIT_FIFOEN()
3814 rxdatacount = husart->RxXferCount; in USART_RxISR_16BIT_FIFOEN()
3815 if (((rxdatacount != 0U)) && (rxdatacount < husart->NbRxDataToProcess)) in USART_RxISR_16BIT_FIFOEN()
3818 CLEAR_BIT(husart->Instance->CR3, USART_CR3_RXFTIE); in USART_RxISR_16BIT_FIFOEN()
3821 husart->RxISR = USART_RxISR_16BIT; in USART_RxISR_16BIT_FIFOEN()
3824 SET_BIT(husart->Instance->CR1, USART_CR1_RXNEIE_RXFNEIE); in USART_RxISR_16BIT_FIFOEN()
3826 if ((husart->TxXferCount == 0U) && in USART_RxISR_16BIT_FIFOEN()
3828 (husart->SlaveMode == USART_SLAVEMODE_DISABLE)) in USART_RxISR_16BIT_FIFOEN()
3831 husart->Instance->TDR = (USART_DUMMY_DATA & (uint16_t)0x00FF); in USART_RxISR_16BIT_FIFOEN()
3838 __HAL_USART_SEND_REQ(husart, USART_RXDATA_FLUSH_REQUEST); in USART_RxISR_16BIT_FIFOEN()