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…
196 static HAL_StatusTypeDef USART_SetConfig(USART_HandleTypeDef *husart);
197 static HAL_StatusTypeDef USART_CheckIdleState(USART_HandleTypeDef *husart);
198 static void USART_TxISR_8BIT(USART_HandleTypeDef *husart);
199 static void USART_TxISR_16BIT(USART_HandleTypeDef *husart);
200 static void USART_TxISR_8BIT_FIFOEN(USART_HandleTypeDef *husart);
201 static void USART_TxISR_16BIT_FIFOEN(USART_HandleTypeDef *husart);
202 static void USART_EndTransmit_IT(USART_HandleTypeDef *husart);
203 static void USART_RxISR_8BIT(USART_HandleTypeDef *husart);
204 static void USART_RxISR_16BIT(USART_HandleTypeDef *husart);
205 static void USART_RxISR_8BIT_FIFOEN(USART_HandleTypeDef *husart);
206 static void USART_RxISR_16BIT_FIFOEN(USART_HandleTypeDef *husart);
276 HAL_StatusTypeDef HAL_USART_Init(USART_HandleTypeDef *husart) in HAL_USART_Init() argument
279 if (husart == NULL) in HAL_USART_Init()
285 assert_param(IS_USART_INSTANCE(husart->Instance)); in HAL_USART_Init()
287 if (husart->State == HAL_USART_STATE_RESET) in HAL_USART_Init()
290 husart->Lock = HAL_UNLOCKED; in HAL_USART_Init()
293 USART_InitCallbacksToDefault(husart); in HAL_USART_Init()
295 if (husart->MspInitCallback == NULL) in HAL_USART_Init()
297 husart->MspInitCallback = HAL_USART_MspInit; in HAL_USART_Init()
301 husart->MspInitCallback(husart); in HAL_USART_Init()
304 HAL_USART_MspInit(husart); in HAL_USART_Init()
308 husart->State = HAL_USART_STATE_BUSY; in HAL_USART_Init()
311 __HAL_USART_DISABLE(husart); in HAL_USART_Init()
314 if (USART_SetConfig(husart) == HAL_ERROR) in HAL_USART_Init()
323 husart->Instance->CR2 &= ~USART_CR2_LINEN; in HAL_USART_Init()
324 husart->Instance->CR3 &= ~(USART_CR3_SCEN | USART_CR3_HDSEL | USART_CR3_IREN); in HAL_USART_Init()
327 __HAL_USART_ENABLE(husart); in HAL_USART_Init()
330 return (USART_CheckIdleState(husart)); in HAL_USART_Init()
338 HAL_StatusTypeDef HAL_USART_DeInit(USART_HandleTypeDef *husart) in HAL_USART_DeInit() argument
341 if (husart == NULL) in HAL_USART_DeInit()
347 assert_param(IS_USART_INSTANCE(husart->Instance)); in HAL_USART_DeInit()
349 husart->State = HAL_USART_STATE_BUSY; in HAL_USART_DeInit()
351 husart->Instance->CR1 = 0x0U; in HAL_USART_DeInit()
352 husart->Instance->CR2 = 0x0U; in HAL_USART_DeInit()
353 husart->Instance->CR3 = 0x0U; in HAL_USART_DeInit()
356 if (husart->MspDeInitCallback == NULL) in HAL_USART_DeInit()
358 husart->MspDeInitCallback = HAL_USART_MspDeInit; in HAL_USART_DeInit()
361 husart->MspDeInitCallback(husart); in HAL_USART_DeInit()
364 HAL_USART_MspDeInit(husart); in HAL_USART_DeInit()
367 husart->ErrorCode = HAL_USART_ERROR_NONE; in HAL_USART_DeInit()
368 husart->State = HAL_USART_STATE_RESET; in HAL_USART_DeInit()
371 __HAL_UNLOCK(husart); in HAL_USART_DeInit()
381 __weak void HAL_USART_MspInit(USART_HandleTypeDef *husart) in HAL_USART_MspInit() argument
384 UNUSED(husart); in HAL_USART_MspInit()
396 __weak void HAL_USART_MspDeInit(USART_HandleTypeDef *husart) in HAL_USART_MspDeInit() argument
399 UNUSED(husart); in HAL_USART_MspDeInit()
429 HAL_StatusTypeDef HAL_USART_RegisterCallback(USART_HandleTypeDef *husart, HAL_USART_CallbackIDTypeD… in HAL_USART_RegisterCallback() argument
437 husart->ErrorCode |= HAL_USART_ERROR_INVALID_CALLBACK; in HAL_USART_RegisterCallback()
442 if (husart->State == HAL_USART_STATE_READY) in HAL_USART_RegisterCallback()
447 husart->TxHalfCpltCallback = pCallback; in HAL_USART_RegisterCallback()
451 husart->TxCpltCallback = pCallback; in HAL_USART_RegisterCallback()
455 husart->RxHalfCpltCallback = pCallback; in HAL_USART_RegisterCallback()
459 husart->RxCpltCallback = pCallback; in HAL_USART_RegisterCallback()
463 husart->TxRxCpltCallback = pCallback; in HAL_USART_RegisterCallback()
467 husart->ErrorCallback = pCallback; in HAL_USART_RegisterCallback()
471 husart->AbortCpltCallback = pCallback; in HAL_USART_RegisterCallback()
475 husart->RxFifoFullCallback = pCallback; in HAL_USART_RegisterCallback()
479 husart->TxFifoEmptyCallback = pCallback; in HAL_USART_RegisterCallback()
483 husart->MspInitCallback = pCallback; in HAL_USART_RegisterCallback()
487 husart->MspDeInitCallback = pCallback; in HAL_USART_RegisterCallback()
492 husart->ErrorCode |= HAL_USART_ERROR_INVALID_CALLBACK; in HAL_USART_RegisterCallback()
499 else if (husart->State == HAL_USART_STATE_RESET) in HAL_USART_RegisterCallback()
504 husart->MspInitCallback = pCallback; in HAL_USART_RegisterCallback()
508 husart->MspDeInitCallback = pCallback; in HAL_USART_RegisterCallback()
513 husart->ErrorCode |= HAL_USART_ERROR_INVALID_CALLBACK; in HAL_USART_RegisterCallback()
523 husart->ErrorCode |= HAL_USART_ERROR_INVALID_CALLBACK; in HAL_USART_RegisterCallback()
553 HAL_StatusTypeDef HAL_USART_UnRegisterCallback(USART_HandleTypeDef *husart, HAL_USART_CallbackIDTyp… in HAL_USART_UnRegisterCallback() argument
557 if (HAL_USART_STATE_READY == husart->State) in HAL_USART_UnRegisterCallback()
562 …husart->TxHalfCpltCallback = HAL_USART_TxHalfCpltCallback; /* Legacy weak TxHalfCpl… in HAL_USART_UnRegisterCallback()
566 …husart->TxCpltCallback = HAL_USART_TxCpltCallback; /* Legacy weak TxCpltCall… in HAL_USART_UnRegisterCallback()
570 …husart->RxHalfCpltCallback = HAL_USART_RxHalfCpltCallback; /* Legacy weak RxHalfCplt… in HAL_USART_UnRegisterCallback()
574 …husart->RxCpltCallback = HAL_USART_RxCpltCallback; /* Legacy weak RxCpltCall… in HAL_USART_UnRegisterCallback()
578 …husart->TxRxCpltCallback = HAL_USART_TxRxCpltCallback; /* Legacy weak TxRxCpltCa… in HAL_USART_UnRegisterCallback()
582 …husart->ErrorCallback = HAL_USART_ErrorCallback; /* Legacy weak ErrorCallb… in HAL_USART_UnRegisterCallback()
586 …husart->AbortCpltCallback = HAL_USART_AbortCpltCallback; /* Legacy weak AbortCpltC… in HAL_USART_UnRegisterCallback()
590 …husart->RxFifoFullCallback = HAL_USARTEx_RxFifoFullCallback; /* Legacy weak RxFifoFull… in HAL_USART_UnRegisterCallback()
594 …husart->TxFifoEmptyCallback = HAL_USARTEx_TxFifoEmptyCallback; /* Legacy weak TxFifoEmpt… in HAL_USART_UnRegisterCallback()
598 …husart->MspInitCallback = HAL_USART_MspInit; /* Legacy weak MspInitCal… in HAL_USART_UnRegisterCallback()
602 …husart->MspDeInitCallback = HAL_USART_MspDeInit; /* Legacy weak MspDeInitC… in HAL_USART_UnRegisterCallback()
607 husart->ErrorCode |= HAL_USART_ERROR_INVALID_CALLBACK; in HAL_USART_UnRegisterCallback()
614 else if (HAL_USART_STATE_RESET == husart->State) in HAL_USART_UnRegisterCallback()
619 husart->MspInitCallback = HAL_USART_MspInit; in HAL_USART_UnRegisterCallback()
623 husart->MspDeInitCallback = HAL_USART_MspDeInit; in HAL_USART_UnRegisterCallback()
628 husart->ErrorCode |= HAL_USART_ERROR_INVALID_CALLBACK; in HAL_USART_UnRegisterCallback()
638 husart->ErrorCode |= HAL_USART_ERROR_INVALID_CALLBACK; in HAL_USART_UnRegisterCallback()
749 HAL_StatusTypeDef HAL_USART_Transmit(USART_HandleTypeDef *husart, const uint8_t *pTxData, uint16_t … in HAL_USART_Transmit() argument
756 if (husart->State == HAL_USART_STATE_READY) in HAL_USART_Transmit()
766 …if ((husart->Init.WordLength == USART_WORDLENGTH_9B) && (husart->Init.Parity == USART_PARITY_NONE)) in HAL_USART_Transmit()
775 __HAL_LOCK(husart); in HAL_USART_Transmit()
777 husart->ErrorCode = HAL_USART_ERROR_NONE; in HAL_USART_Transmit()
778 husart->State = HAL_USART_STATE_BUSY_TX; in HAL_USART_Transmit()
783 husart->TxXferSize = Size; in HAL_USART_Transmit()
784 husart->TxXferCount = Size; in HAL_USART_Transmit()
787 …if ((husart->Init.WordLength == USART_WORDLENGTH_9B) && (husart->Init.Parity == USART_PARITY_NONE)) in HAL_USART_Transmit()
799 while (husart->TxXferCount > 0U) in HAL_USART_Transmit()
801 if (USART_WaitOnFlagUntilTimeout(husart, USART_FLAG_TXE, RESET, tickstart, Timeout) != HAL_OK) in HAL_USART_Transmit()
807 husart->Instance->TDR = (uint16_t)(*ptxdata16bits & 0x01FFU); in HAL_USART_Transmit()
812 husart->Instance->TDR = (uint8_t)(*ptxdata8bits & 0xFFU); in HAL_USART_Transmit()
816 husart->TxXferCount--; in HAL_USART_Transmit()
819 if (USART_WaitOnFlagUntilTimeout(husart, USART_FLAG_TC, RESET, tickstart, Timeout) != HAL_OK) in HAL_USART_Transmit()
825 __HAL_USART_CLEAR_FLAG(husart, USART_CLEAR_TCF); in HAL_USART_Transmit()
828 __HAL_USART_CLEAR_OREFLAG(husart); in HAL_USART_Transmit()
829 __HAL_USART_SEND_REQ(husart, USART_RXDATA_FLUSH_REQUEST); in HAL_USART_Transmit()
830 __HAL_USART_SEND_REQ(husart, USART_TXDATA_FLUSH_REQUEST); in HAL_USART_Transmit()
833 husart->State = HAL_USART_STATE_READY; in HAL_USART_Transmit()
836 __HAL_UNLOCK(husart); in HAL_USART_Transmit()
863 HAL_StatusTypeDef HAL_USART_Receive(USART_HandleTypeDef *husart, uint8_t *pRxData, uint16_t Size, u… in HAL_USART_Receive() argument
870 if (husart->State == HAL_USART_STATE_READY) in HAL_USART_Receive()
880 …if ((husart->Init.WordLength == USART_WORDLENGTH_9B) && (husart->Init.Parity == USART_PARITY_NONE)) in HAL_USART_Receive()
889 __HAL_LOCK(husart); in HAL_USART_Receive()
891 husart->ErrorCode = HAL_USART_ERROR_NONE; in HAL_USART_Receive()
892 husart->State = HAL_USART_STATE_BUSY_RX; in HAL_USART_Receive()
897 husart->RxXferSize = Size; in HAL_USART_Receive()
898 husart->RxXferCount = Size; in HAL_USART_Receive()
901 USART_MASK_COMPUTATION(husart); in HAL_USART_Receive()
902 uhMask = husart->Mask; in HAL_USART_Receive()
905 …if ((husart->Init.WordLength == USART_WORDLENGTH_9B) && (husart->Init.Parity == USART_PARITY_NONE)) in HAL_USART_Receive()
917 while (husart->RxXferCount > 0U) in HAL_USART_Receive()
919 if (husart->SlaveMode == USART_SLAVEMODE_DISABLE) in HAL_USART_Receive()
925 … if (USART_WaitOnFlagUntilTimeout(husart, USART_FLAG_TXE, RESET, tickstart, Timeout) != HAL_OK) in HAL_USART_Receive()
929 husart->Instance->TDR = (USART_DUMMY_DATA & (uint16_t)0x0FF); in HAL_USART_Receive()
933 … if (USART_WaitOnFlagUntilTimeout(husart, USART_FLAG_RXNE, RESET, tickstart, Timeout) != HAL_OK) in HAL_USART_Receive()
940 *prxdata16bits = (uint16_t)(husart->Instance->RDR & uhMask); in HAL_USART_Receive()
945 *prxdata8bits = (uint8_t)(husart->Instance->RDR & (uint8_t)(uhMask & 0xFFU)); in HAL_USART_Receive()
949 husart->RxXferCount--; in HAL_USART_Receive()
954 if (husart->SlaveMode == USART_SLAVEMODE_ENABLE) in HAL_USART_Receive()
956 __HAL_USART_CLEAR_UDRFLAG(husart); in HAL_USART_Receive()
957 __HAL_USART_SEND_REQ(husart, USART_TXDATA_FLUSH_REQUEST); in HAL_USART_Receive()
961 husart->State = HAL_USART_STATE_READY; in HAL_USART_Receive()
964 __HAL_UNLOCK(husart); in HAL_USART_Receive()
991 HAL_StatusTypeDef HAL_USART_TransmitReceive(USART_HandleTypeDef *husart, const uint8_t *pTxData, ui… in HAL_USART_TransmitReceive() argument
1002 if (husart->State == HAL_USART_STATE_READY) in HAL_USART_TransmitReceive()
1012 …if ((husart->Init.WordLength == USART_WORDLENGTH_9B) && (husart->Init.Parity == USART_PARITY_NONE)) in HAL_USART_TransmitReceive()
1021 __HAL_LOCK(husart); in HAL_USART_TransmitReceive()
1023 husart->ErrorCode = HAL_USART_ERROR_NONE; in HAL_USART_TransmitReceive()
1024 husart->State = HAL_USART_STATE_BUSY_RX; in HAL_USART_TransmitReceive()
1029 husart->RxXferSize = Size; in HAL_USART_TransmitReceive()
1030 husart->TxXferSize = Size; in HAL_USART_TransmitReceive()
1031 husart->TxXferCount = Size; in HAL_USART_TransmitReceive()
1032 husart->RxXferCount = Size; in HAL_USART_TransmitReceive()
1035 USART_MASK_COMPUTATION(husart); in HAL_USART_TransmitReceive()
1036 uhMask = husart->Mask; in HAL_USART_TransmitReceive()
1039 …if ((husart->Init.WordLength == USART_WORDLENGTH_9B) && (husart->Init.Parity == USART_PARITY_NONE)) in HAL_USART_TransmitReceive()
1054 if ((husart->TxXferCount == 0x01U) || (husart->SlaveMode == USART_SLAVEMODE_ENABLE)) in HAL_USART_TransmitReceive()
1057 if (USART_WaitOnFlagUntilTimeout(husart, USART_FLAG_TXE, RESET, tickstart, Timeout) != HAL_OK) in HAL_USART_TransmitReceive()
1063 husart->Instance->TDR = (uint16_t)(*ptxdata16bits & uhMask); in HAL_USART_TransmitReceive()
1068 husart->Instance->TDR = (uint8_t)(*ptxdata8bits & (uint8_t)(uhMask & 0xFFU)); in HAL_USART_TransmitReceive()
1072 husart->TxXferCount--; in HAL_USART_TransmitReceive()
1077 rxdatacount = husart->RxXferCount; in HAL_USART_TransmitReceive()
1078 while ((husart->TxXferCount > 0U) || (rxdatacount > 0U)) in HAL_USART_TransmitReceive()
1080 if (husart->TxXferCount > 0U) in HAL_USART_TransmitReceive()
1083 … if (USART_WaitOnFlagUntilTimeout(husart, USART_FLAG_TXE, RESET, tickstart, Timeout) != HAL_OK) in HAL_USART_TransmitReceive()
1089 husart->Instance->TDR = (uint16_t)(*ptxdata16bits & uhMask); in HAL_USART_TransmitReceive()
1094 husart->Instance->TDR = (uint8_t)(*ptxdata8bits & (uint8_t)(uhMask & 0xFFU)); in HAL_USART_TransmitReceive()
1098 husart->TxXferCount--; in HAL_USART_TransmitReceive()
1101 if (husart->RxXferCount > 0U) in HAL_USART_TransmitReceive()
1104 … if (USART_WaitOnFlagUntilTimeout(husart, USART_FLAG_RXNE, RESET, tickstart, Timeout) != HAL_OK) in HAL_USART_TransmitReceive()
1111 *prxdata16bits = (uint16_t)(husart->Instance->RDR & uhMask); in HAL_USART_TransmitReceive()
1116 *prxdata8bits = (uint8_t)(husart->Instance->RDR & (uint8_t)(uhMask & 0xFFU)); in HAL_USART_TransmitReceive()
1120 husart->RxXferCount--; in HAL_USART_TransmitReceive()
1122 rxdatacount = husart->RxXferCount; in HAL_USART_TransmitReceive()
1126 husart->State = HAL_USART_STATE_READY; in HAL_USART_TransmitReceive()
1129 __HAL_UNLOCK(husart); in HAL_USART_TransmitReceive()
1154 HAL_StatusTypeDef HAL_USART_Transmit_IT(USART_HandleTypeDef *husart, const uint8_t *pTxData, uint16… in HAL_USART_Transmit_IT() argument
1156 if (husart->State == HAL_USART_STATE_READY) in HAL_USART_Transmit_IT()
1166 …if ((husart->Init.WordLength == USART_WORDLENGTH_9B) && (husart->Init.Parity == USART_PARITY_NONE)) in HAL_USART_Transmit_IT()
1175 __HAL_LOCK(husart); in HAL_USART_Transmit_IT()
1177 husart->pTxBuffPtr = pTxData; in HAL_USART_Transmit_IT()
1178 husart->TxXferSize = Size; in HAL_USART_Transmit_IT()
1179 husart->TxXferCount = Size; in HAL_USART_Transmit_IT()
1180 husart->TxISR = NULL; in HAL_USART_Transmit_IT()
1182 husart->ErrorCode = HAL_USART_ERROR_NONE; in HAL_USART_Transmit_IT()
1183 husart->State = HAL_USART_STATE_BUSY_TX; in HAL_USART_Transmit_IT()
1192 if (husart->FifoMode == USART_FIFOMODE_ENABLE) in HAL_USART_Transmit_IT()
1195 …if ((husart->Init.WordLength == USART_WORDLENGTH_9B) && (husart->Init.Parity == USART_PARITY_NONE)) in HAL_USART_Transmit_IT()
1197 husart->TxISR = USART_TxISR_16BIT_FIFOEN; in HAL_USART_Transmit_IT()
1201 husart->TxISR = USART_TxISR_8BIT_FIFOEN; in HAL_USART_Transmit_IT()
1205 __HAL_UNLOCK(husart); in HAL_USART_Transmit_IT()
1208 __HAL_USART_ENABLE_IT(husart, USART_IT_TXFT); in HAL_USART_Transmit_IT()
1213 …if ((husart->Init.WordLength == USART_WORDLENGTH_9B) && (husart->Init.Parity == USART_PARITY_NONE)) in HAL_USART_Transmit_IT()
1215 husart->TxISR = USART_TxISR_16BIT; in HAL_USART_Transmit_IT()
1219 husart->TxISR = USART_TxISR_8BIT; in HAL_USART_Transmit_IT()
1223 __HAL_UNLOCK(husart); in HAL_USART_Transmit_IT()
1226 __HAL_USART_ENABLE_IT(husart, USART_IT_TXE); in HAL_USART_Transmit_IT()
1253 HAL_StatusTypeDef HAL_USART_Receive_IT(USART_HandleTypeDef *husart, uint8_t *pRxData, uint16_t Size) in HAL_USART_Receive_IT() argument
1257 if (husart->State == HAL_USART_STATE_READY) in HAL_USART_Receive_IT()
1267 …if ((husart->Init.WordLength == USART_WORDLENGTH_9B) && (husart->Init.Parity == USART_PARITY_NONE)) in HAL_USART_Receive_IT()
1276 __HAL_LOCK(husart); in HAL_USART_Receive_IT()
1278 husart->pRxBuffPtr = pRxData; in HAL_USART_Receive_IT()
1279 husart->RxXferSize = Size; in HAL_USART_Receive_IT()
1280 husart->RxXferCount = Size; in HAL_USART_Receive_IT()
1281 husart->RxISR = NULL; in HAL_USART_Receive_IT()
1283 USART_MASK_COMPUTATION(husart); in HAL_USART_Receive_IT()
1285 husart->ErrorCode = HAL_USART_ERROR_NONE; in HAL_USART_Receive_IT()
1286 husart->State = HAL_USART_STATE_BUSY_RX; in HAL_USART_Receive_IT()
1289 SET_BIT(husart->Instance->CR3, USART_CR3_EIE); in HAL_USART_Receive_IT()
1292 if ((husart->FifoMode == USART_FIFOMODE_ENABLE) && (Size >= husart->NbRxDataToProcess)) in HAL_USART_Receive_IT()
1295 …if ((husart->Init.WordLength == USART_WORDLENGTH_9B) && (husart->Init.Parity == USART_PARITY_NONE)) in HAL_USART_Receive_IT()
1297 husart->RxISR = USART_RxISR_16BIT_FIFOEN; in HAL_USART_Receive_IT()
1301 husart->RxISR = USART_RxISR_8BIT_FIFOEN; in HAL_USART_Receive_IT()
1305 __HAL_UNLOCK(husart); in HAL_USART_Receive_IT()
1308 if (husart->Init.Parity != USART_PARITY_NONE) in HAL_USART_Receive_IT()
1310 SET_BIT(husart->Instance->CR1, USART_CR1_PEIE); in HAL_USART_Receive_IT()
1312 SET_BIT(husart->Instance->CR3, USART_CR3_RXFTIE); in HAL_USART_Receive_IT()
1317 …if ((husart->Init.WordLength == USART_WORDLENGTH_9B) && (husart->Init.Parity == USART_PARITY_NONE)) in HAL_USART_Receive_IT()
1319 husart->RxISR = USART_RxISR_16BIT; in HAL_USART_Receive_IT()
1323 husart->RxISR = USART_RxISR_8BIT; in HAL_USART_Receive_IT()
1327 __HAL_UNLOCK(husart); in HAL_USART_Receive_IT()
1330 if (husart->Init.Parity != USART_PARITY_NONE) in HAL_USART_Receive_IT()
1332 SET_BIT(husart->Instance->CR1, USART_CR1_PEIE | USART_CR1_RXNEIE_RXFNEIE); in HAL_USART_Receive_IT()
1336 SET_BIT(husart->Instance->CR1, USART_CR1_RXNEIE_RXFNEIE); in HAL_USART_Receive_IT()
1340 if (husart->SlaveMode == USART_SLAVEMODE_DISABLE) in HAL_USART_Receive_IT()
1346 if ((husart->FifoMode == USART_FIFOMODE_ENABLE) && (Size >= husart->NbRxDataToProcess)) in HAL_USART_Receive_IT()
1348 for (nb_dummy_data = husart->NbRxDataToProcess ; nb_dummy_data > 0U ; nb_dummy_data--) in HAL_USART_Receive_IT()
1350 husart->Instance->TDR = (USART_DUMMY_DATA & (uint16_t)0x00FF); in HAL_USART_Receive_IT()
1355 husart->Instance->TDR = (USART_DUMMY_DATA & (uint16_t)0x00FF); in HAL_USART_Receive_IT()
1383 HAL_StatusTypeDef HAL_USART_TransmitReceive_IT(USART_HandleTypeDef *husart, const uint8_t *pTxData,… in HAL_USART_TransmitReceive_IT() argument
1387 if (husart->State == HAL_USART_STATE_READY) in HAL_USART_TransmitReceive_IT()
1397 …if ((husart->Init.WordLength == USART_WORDLENGTH_9B) && (husart->Init.Parity == USART_PARITY_NONE)) in HAL_USART_TransmitReceive_IT()
1406 __HAL_LOCK(husart); in HAL_USART_TransmitReceive_IT()
1408 husart->pRxBuffPtr = pRxData; in HAL_USART_TransmitReceive_IT()
1409 husart->RxXferSize = Size; in HAL_USART_TransmitReceive_IT()
1410 husart->RxXferCount = Size; in HAL_USART_TransmitReceive_IT()
1411 husart->pTxBuffPtr = pTxData; in HAL_USART_TransmitReceive_IT()
1412 husart->TxXferSize = Size; in HAL_USART_TransmitReceive_IT()
1413 husart->TxXferCount = Size; in HAL_USART_TransmitReceive_IT()
1416 USART_MASK_COMPUTATION(husart); in HAL_USART_TransmitReceive_IT()
1418 husart->ErrorCode = HAL_USART_ERROR_NONE; in HAL_USART_TransmitReceive_IT()
1419 husart->State = HAL_USART_STATE_BUSY_TX_RX; in HAL_USART_TransmitReceive_IT()
1422 if ((husart->FifoMode == USART_FIFOMODE_ENABLE) && (Size >= husart->NbRxDataToProcess)) in HAL_USART_TransmitReceive_IT()
1425 …if ((husart->Init.WordLength == USART_WORDLENGTH_9B) && (husart->Init.Parity == USART_PARITY_NONE)) in HAL_USART_TransmitReceive_IT()
1427 husart->TxISR = USART_TxISR_16BIT_FIFOEN; in HAL_USART_TransmitReceive_IT()
1428 husart->RxISR = USART_RxISR_16BIT_FIFOEN; in HAL_USART_TransmitReceive_IT()
1432 husart->TxISR = USART_TxISR_8BIT_FIFOEN; in HAL_USART_TransmitReceive_IT()
1433 husart->RxISR = USART_RxISR_8BIT_FIFOEN; in HAL_USART_TransmitReceive_IT()
1437 __HAL_UNLOCK(husart); in HAL_USART_TransmitReceive_IT()
1440 SET_BIT(husart->Instance->CR3, USART_CR3_EIE); in HAL_USART_TransmitReceive_IT()
1442 if (husart->Init.Parity != USART_PARITY_NONE) in HAL_USART_TransmitReceive_IT()
1445 SET_BIT(husart->Instance->CR1, USART_CR1_PEIE); in HAL_USART_TransmitReceive_IT()
1449 SET_BIT(husart->Instance->CR3, (USART_CR3_TXFTIE | USART_CR3_RXFTIE)); in HAL_USART_TransmitReceive_IT()
1453 …if ((husart->Init.WordLength == USART_WORDLENGTH_9B) && (husart->Init.Parity == USART_PARITY_NONE)) in HAL_USART_TransmitReceive_IT()
1455 husart->TxISR = USART_TxISR_16BIT; in HAL_USART_TransmitReceive_IT()
1456 husart->RxISR = USART_RxISR_16BIT; in HAL_USART_TransmitReceive_IT()
1460 husart->TxISR = USART_TxISR_8BIT; in HAL_USART_TransmitReceive_IT()
1461 husart->RxISR = USART_RxISR_8BIT; in HAL_USART_TransmitReceive_IT()
1465 __HAL_UNLOCK(husart); in HAL_USART_TransmitReceive_IT()
1468 SET_BIT(husart->Instance->CR3, USART_CR3_EIE); in HAL_USART_TransmitReceive_IT()
1471 if (husart->Init.Parity != USART_PARITY_NONE) in HAL_USART_TransmitReceive_IT()
1473 SET_BIT(husart->Instance->CR1, USART_CR1_PEIE | USART_CR1_RXNEIE_RXFNEIE); in HAL_USART_TransmitReceive_IT()
1477 SET_BIT(husart->Instance->CR1, USART_CR1_RXNEIE_RXFNEIE); in HAL_USART_TransmitReceive_IT()
1481 SET_BIT(husart->Instance->CR1, USART_CR1_TXEIE_TXFNFIE); in HAL_USART_TransmitReceive_IT()
1507 HAL_StatusTypeDef HAL_USART_Transmit_DMA(USART_HandleTypeDef *husart, const uint8_t *pTxData, uint1… in HAL_USART_Transmit_DMA() argument
1512 if (husart->State == HAL_USART_STATE_READY) in HAL_USART_Transmit_DMA()
1522 …if ((husart->Init.WordLength == USART_WORDLENGTH_9B) && (husart->Init.Parity == USART_PARITY_NONE)) in HAL_USART_Transmit_DMA()
1531 __HAL_LOCK(husart); in HAL_USART_Transmit_DMA()
1533 husart->pTxBuffPtr = pTxData; in HAL_USART_Transmit_DMA()
1534 husart->TxXferSize = Size; in HAL_USART_Transmit_DMA()
1535 husart->TxXferCount = Size; in HAL_USART_Transmit_DMA()
1537 husart->ErrorCode = HAL_USART_ERROR_NONE; in HAL_USART_Transmit_DMA()
1538 husart->State = HAL_USART_STATE_BUSY_TX; in HAL_USART_Transmit_DMA()
1540 if (husart->hdmatx != NULL) in HAL_USART_Transmit_DMA()
1543 husart->hdmatx->XferCpltCallback = USART_DMATransmitCplt; in HAL_USART_Transmit_DMA()
1546 husart->hdmatx->XferHalfCpltCallback = USART_DMATxHalfCplt; in HAL_USART_Transmit_DMA()
1549 husart->hdmatx->XferErrorCallback = USART_DMAError; in HAL_USART_Transmit_DMA()
1553 …status = HAL_DMA_Start_IT(husart->hdmatx, *(const uint32_t *)tmp, (uint32_t)&husart->Instance->TDR… in HAL_USART_Transmit_DMA()
1559 __HAL_USART_CLEAR_FLAG(husart, USART_CLEAR_TCF); in HAL_USART_Transmit_DMA()
1562 __HAL_UNLOCK(husart); in HAL_USART_Transmit_DMA()
1566 SET_BIT(husart->Instance->CR3, USART_CR3_DMAT); in HAL_USART_Transmit_DMA()
1573 husart->ErrorCode = HAL_USART_ERROR_DMA; in HAL_USART_Transmit_DMA()
1576 __HAL_UNLOCK(husart); in HAL_USART_Transmit_DMA()
1579 husart->State = HAL_USART_STATE_READY; in HAL_USART_Transmit_DMA()
1608 HAL_StatusTypeDef HAL_USART_Receive_DMA(USART_HandleTypeDef *husart, uint8_t *pRxData, uint16_t Siz… in HAL_USART_Receive_DMA() argument
1614 if (husart->State == HAL_USART_STATE_READY) in HAL_USART_Receive_DMA()
1624 …if ((husart->Init.WordLength == USART_WORDLENGTH_9B) && (husart->Init.Parity == USART_PARITY_NONE)) in HAL_USART_Receive_DMA()
1633 __HAL_LOCK(husart); in HAL_USART_Receive_DMA()
1635 husart->pRxBuffPtr = pRxData; in HAL_USART_Receive_DMA()
1636 husart->RxXferSize = Size; in HAL_USART_Receive_DMA()
1637 husart->pTxBuffPtr = pRxData; in HAL_USART_Receive_DMA()
1638 husart->TxXferSize = Size; in HAL_USART_Receive_DMA()
1640 husart->ErrorCode = HAL_USART_ERROR_NONE; in HAL_USART_Receive_DMA()
1641 husart->State = HAL_USART_STATE_BUSY_RX; in HAL_USART_Receive_DMA()
1643 if (husart->hdmarx != NULL) in HAL_USART_Receive_DMA()
1646 husart->hdmarx->XferCpltCallback = USART_DMAReceiveCplt; in HAL_USART_Receive_DMA()
1649 husart->hdmarx->XferHalfCpltCallback = USART_DMARxHalfCplt; in HAL_USART_Receive_DMA()
1652 husart->hdmarx->XferErrorCallback = USART_DMAError; in HAL_USART_Receive_DMA()
1655 …status = HAL_DMA_Start_IT(husart->hdmarx, (uint32_t)&husart->Instance->RDR, *(uint32_t *)tmp, Size… in HAL_USART_Receive_DMA()
1659 (husart->SlaveMode == USART_SLAVEMODE_DISABLE)) in HAL_USART_Receive_DMA()
1666 if (husart->hdmatx != NULL) in HAL_USART_Receive_DMA()
1668 husart->hdmatx->XferErrorCallback = NULL; in HAL_USART_Receive_DMA()
1669 husart->hdmatx->XferHalfCpltCallback = NULL; in HAL_USART_Receive_DMA()
1670 husart->hdmatx->XferCpltCallback = NULL; in HAL_USART_Receive_DMA()
1671 …status = HAL_DMA_Start_IT(husart->hdmatx, *(uint32_t *)tmp, (uint32_t)&husart->Instance->TDR, Size… in HAL_USART_Receive_DMA()
1678 __HAL_UNLOCK(husart); in HAL_USART_Receive_DMA()
1680 if (husart->Init.Parity != USART_PARITY_NONE) in HAL_USART_Receive_DMA()
1683 SET_BIT(husart->Instance->CR1, USART_CR1_PEIE); in HAL_USART_Receive_DMA()
1687 SET_BIT(husart->Instance->CR3, USART_CR3_EIE); in HAL_USART_Receive_DMA()
1691 SET_BIT(husart->Instance->CR3, USART_CR3_DMAR); in HAL_USART_Receive_DMA()
1695 SET_BIT(husart->Instance->CR3, USART_CR3_DMAT); in HAL_USART_Receive_DMA()
1701 if (husart->hdmarx != NULL) in HAL_USART_Receive_DMA()
1703 status = HAL_DMA_Abort(husart->hdmarx); in HAL_USART_Receive_DMA()
1710 husart->ErrorCode = HAL_USART_ERROR_DMA; in HAL_USART_Receive_DMA()
1713 __HAL_UNLOCK(husart); in HAL_USART_Receive_DMA()
1716 husart->State = HAL_USART_STATE_READY; in HAL_USART_Receive_DMA()
1744 HAL_StatusTypeDef HAL_USART_TransmitReceive_DMA(USART_HandleTypeDef *husart, const uint8_t *pTxData… in HAL_USART_TransmitReceive_DMA() argument
1750 if (husart->State == HAL_USART_STATE_READY) in HAL_USART_TransmitReceive_DMA()
1760 …if ((husart->Init.WordLength == USART_WORDLENGTH_9B) && (husart->Init.Parity == USART_PARITY_NONE)) in HAL_USART_TransmitReceive_DMA()
1769 __HAL_LOCK(husart); in HAL_USART_TransmitReceive_DMA()
1771 husart->pRxBuffPtr = pRxData; in HAL_USART_TransmitReceive_DMA()
1772 husart->RxXferSize = Size; in HAL_USART_TransmitReceive_DMA()
1773 husart->pTxBuffPtr = pTxData; in HAL_USART_TransmitReceive_DMA()
1774 husart->TxXferSize = Size; in HAL_USART_TransmitReceive_DMA()
1776 husart->ErrorCode = HAL_USART_ERROR_NONE; in HAL_USART_TransmitReceive_DMA()
1777 husart->State = HAL_USART_STATE_BUSY_TX_RX; in HAL_USART_TransmitReceive_DMA()
1779 if ((husart->hdmarx != NULL) && (husart->hdmatx != NULL)) in HAL_USART_TransmitReceive_DMA()
1782 husart->hdmarx->XferCpltCallback = USART_DMAReceiveCplt; in HAL_USART_TransmitReceive_DMA()
1785 husart->hdmarx->XferHalfCpltCallback = USART_DMARxHalfCplt; in HAL_USART_TransmitReceive_DMA()
1788 husart->hdmatx->XferCpltCallback = USART_DMATransmitCplt; in HAL_USART_TransmitReceive_DMA()
1791 husart->hdmatx->XferHalfCpltCallback = USART_DMATxHalfCplt; in HAL_USART_TransmitReceive_DMA()
1794 husart->hdmatx->XferErrorCallback = USART_DMAError; in HAL_USART_TransmitReceive_DMA()
1797 husart->hdmarx->XferErrorCallback = USART_DMAError; in HAL_USART_TransmitReceive_DMA()
1801 …status = HAL_DMA_Start_IT(husart->hdmarx, (uint32_t)&husart->Instance->RDR, *(const uint32_t *)tmp… in HAL_USART_TransmitReceive_DMA()
1807 …status = HAL_DMA_Start_IT(husart->hdmatx, *(const uint32_t *)tmp, (uint32_t)&husart->Instance->TDR… in HAL_USART_TransmitReceive_DMA()
1818 __HAL_UNLOCK(husart); in HAL_USART_TransmitReceive_DMA()
1820 if (husart->Init.Parity != USART_PARITY_NONE) in HAL_USART_TransmitReceive_DMA()
1823 SET_BIT(husart->Instance->CR1, USART_CR1_PEIE); in HAL_USART_TransmitReceive_DMA()
1827 SET_BIT(husart->Instance->CR3, USART_CR3_EIE); in HAL_USART_TransmitReceive_DMA()
1830 __HAL_USART_CLEAR_FLAG(husart, USART_CLEAR_TCF); in HAL_USART_TransmitReceive_DMA()
1834 SET_BIT(husart->Instance->CR3, USART_CR3_DMAR); in HAL_USART_TransmitReceive_DMA()
1838 SET_BIT(husart->Instance->CR3, USART_CR3_DMAT); in HAL_USART_TransmitReceive_DMA()
1844 if (husart->hdmarx != NULL) in HAL_USART_TransmitReceive_DMA()
1846 status = HAL_DMA_Abort(husart->hdmarx); in HAL_USART_TransmitReceive_DMA()
1853 husart->ErrorCode = HAL_USART_ERROR_DMA; in HAL_USART_TransmitReceive_DMA()
1856 __HAL_UNLOCK(husart); in HAL_USART_TransmitReceive_DMA()
1859 husart->State = HAL_USART_STATE_READY; in HAL_USART_TransmitReceive_DMA()
1875 HAL_StatusTypeDef HAL_USART_DMAPause(USART_HandleTypeDef *husart) in HAL_USART_DMAPause() argument
1877 const HAL_USART_StateTypeDef state = husart->State; in HAL_USART_DMAPause()
1880 __HAL_LOCK(husart); in HAL_USART_DMAPause()
1882 if ((HAL_IS_BIT_SET(husart->Instance->CR3, USART_CR3_DMAT)) && in HAL_USART_DMAPause()
1886 CLEAR_BIT(husart->Instance->CR3, USART_CR3_DMAT); in HAL_USART_DMAPause()
1891 if (HAL_IS_BIT_SET(husart->Instance->CR3, USART_CR3_DMAT)) in HAL_USART_DMAPause()
1894 CLEAR_BIT(husart->Instance->CR3, USART_CR3_DMAT); in HAL_USART_DMAPause()
1896 if (HAL_IS_BIT_SET(husart->Instance->CR3, USART_CR3_DMAR)) in HAL_USART_DMAPause()
1899 CLEAR_BIT(husart->Instance->CR1, USART_CR1_PEIE); in HAL_USART_DMAPause()
1900 CLEAR_BIT(husart->Instance->CR3, USART_CR3_EIE); in HAL_USART_DMAPause()
1903 CLEAR_BIT(husart->Instance->CR3, USART_CR3_DMAR); in HAL_USART_DMAPause()
1912 __HAL_UNLOCK(husart); in HAL_USART_DMAPause()
1922 HAL_StatusTypeDef HAL_USART_DMAResume(USART_HandleTypeDef *husart) in HAL_USART_DMAResume() argument
1924 const HAL_USART_StateTypeDef state = husart->State; in HAL_USART_DMAResume()
1927 __HAL_LOCK(husart); in HAL_USART_DMAResume()
1932 SET_BIT(husart->Instance->CR3, USART_CR3_DMAT); in HAL_USART_DMAResume()
1938 __HAL_USART_CLEAR_FLAG(husart, USART_CLEAR_OREF); in HAL_USART_DMAResume()
1941 if (husart->Init.Parity != USART_PARITY_NONE) in HAL_USART_DMAResume()
1943 SET_BIT(husart->Instance->CR1, USART_CR1_PEIE); in HAL_USART_DMAResume()
1945 SET_BIT(husart->Instance->CR3, USART_CR3_EIE); in HAL_USART_DMAResume()
1948 SET_BIT(husart->Instance->CR3, USART_CR3_DMAR); in HAL_USART_DMAResume()
1951 SET_BIT(husart->Instance->CR3, USART_CR3_DMAT); in HAL_USART_DMAResume()
1959 __HAL_UNLOCK(husart); in HAL_USART_DMAResume()
1969 HAL_StatusTypeDef HAL_USART_DMAStop(USART_HandleTypeDef *husart) in HAL_USART_DMAStop() argument
1979 CLEAR_BIT(husart->Instance->CR3, USART_CR3_DMAT); in HAL_USART_DMAStop()
1980 CLEAR_BIT(husart->Instance->CR3, USART_CR3_DMAR); in HAL_USART_DMAStop()
1983 if (husart->hdmatx != NULL) in HAL_USART_DMAStop()
1985 if (HAL_DMA_Abort(husart->hdmatx) != HAL_OK) in HAL_USART_DMAStop()
1987 if (HAL_DMA_GetError(husart->hdmatx) == HAL_DMA_ERROR_TIMEOUT) in HAL_USART_DMAStop()
1990 husart->ErrorCode = HAL_USART_ERROR_DMA; in HAL_USART_DMAStop()
1997 if (husart->hdmarx != NULL) in HAL_USART_DMAStop()
1999 if (HAL_DMA_Abort(husart->hdmarx) != HAL_OK) in HAL_USART_DMAStop()
2001 if (HAL_DMA_GetError(husart->hdmarx) == HAL_DMA_ERROR_TIMEOUT) in HAL_USART_DMAStop()
2004 husart->ErrorCode = HAL_USART_ERROR_DMA; in HAL_USART_DMAStop()
2011 USART_EndTransfer(husart); in HAL_USART_DMAStop()
2012 husart->State = HAL_USART_STATE_READY; in HAL_USART_DMAStop()
2029 HAL_StatusTypeDef HAL_USART_Abort(USART_HandleTypeDef *husart) in HAL_USART_Abort() argument
2032 …CLEAR_BIT(husart->Instance->CR1, (USART_CR1_RXNEIE_RXFNEIE | USART_CR1_PEIE | USART_CR1_TXEIE_TXFN… in HAL_USART_Abort()
2034 CLEAR_BIT(husart->Instance->CR3, (USART_CR3_EIE | USART_CR3_RXFTIE | USART_CR3_TXFTIE)); in HAL_USART_Abort()
2037 if (HAL_IS_BIT_SET(husart->Instance->CR3, USART_CR3_DMAT)) in HAL_USART_Abort()
2040 CLEAR_BIT(husart->Instance->CR3, USART_CR3_DMAT); in HAL_USART_Abort()
2043 if (husart->hdmatx != NULL) in HAL_USART_Abort()
2047 husart->hdmatx->XferAbortCallback = NULL; in HAL_USART_Abort()
2049 if (HAL_DMA_Abort(husart->hdmatx) != HAL_OK) in HAL_USART_Abort()
2051 if (HAL_DMA_GetError(husart->hdmatx) == HAL_DMA_ERROR_TIMEOUT) in HAL_USART_Abort()
2054 husart->ErrorCode = HAL_USART_ERROR_DMA; in HAL_USART_Abort()
2063 if (HAL_IS_BIT_SET(husart->Instance->CR3, USART_CR3_DMAR)) in HAL_USART_Abort()
2066 CLEAR_BIT(husart->Instance->CR3, USART_CR3_DMAR); in HAL_USART_Abort()
2069 if (husart->hdmarx != NULL) in HAL_USART_Abort()
2073 husart->hdmarx->XferAbortCallback = NULL; in HAL_USART_Abort()
2075 if (HAL_DMA_Abort(husart->hdmarx) != HAL_OK) in HAL_USART_Abort()
2077 if (HAL_DMA_GetError(husart->hdmarx) == HAL_DMA_ERROR_TIMEOUT) in HAL_USART_Abort()
2080 husart->ErrorCode = HAL_USART_ERROR_DMA; in HAL_USART_Abort()
2089 husart->TxXferCount = 0U; in HAL_USART_Abort()
2090 husart->RxXferCount = 0U; in HAL_USART_Abort()
2093 …__HAL_USART_CLEAR_FLAG(husart, USART_CLEAR_OREF | USART_CLEAR_NEF | USART_CLEAR_PEF | USART_CLEAR_… in HAL_USART_Abort()
2096 if (husart->FifoMode == USART_FIFOMODE_ENABLE) in HAL_USART_Abort()
2098 __HAL_USART_SEND_REQ(husart, USART_TXDATA_FLUSH_REQUEST); in HAL_USART_Abort()
2102 __HAL_USART_SEND_REQ(husart, USART_RXDATA_FLUSH_REQUEST); in HAL_USART_Abort()
2105 husart->State = HAL_USART_STATE_READY; in HAL_USART_Abort()
2108 husart->ErrorCode = HAL_USART_ERROR_NONE; in HAL_USART_Abort()
2127 HAL_StatusTypeDef HAL_USART_Abort_IT(USART_HandleTypeDef *husart) in HAL_USART_Abort_IT() argument
2132 …CLEAR_BIT(husart->Instance->CR1, (USART_CR1_RXNEIE_RXFNEIE | USART_CR1_PEIE | USART_CR1_TXEIE_TXFN… in HAL_USART_Abort_IT()
2134 CLEAR_BIT(husart->Instance->CR3, (USART_CR3_EIE | USART_CR3_RXFTIE | USART_CR3_TXFTIE)); in HAL_USART_Abort_IT()
2139 if (husart->hdmatx != NULL) in HAL_USART_Abort_IT()
2143 if (HAL_IS_BIT_SET(husart->Instance->CR3, USART_CR3_DMAT)) in HAL_USART_Abort_IT()
2145 husart->hdmatx->XferAbortCallback = USART_DMATxAbortCallback; in HAL_USART_Abort_IT()
2149 husart->hdmatx->XferAbortCallback = NULL; in HAL_USART_Abort_IT()
2153 if (husart->hdmarx != NULL) in HAL_USART_Abort_IT()
2157 if (HAL_IS_BIT_SET(husart->Instance->CR3, USART_CR3_DMAR)) in HAL_USART_Abort_IT()
2159 husart->hdmarx->XferAbortCallback = USART_DMARxAbortCallback; in HAL_USART_Abort_IT()
2163 husart->hdmarx->XferAbortCallback = NULL; in HAL_USART_Abort_IT()
2168 if (HAL_IS_BIT_SET(husart->Instance->CR3, USART_CR3_DMAT)) in HAL_USART_Abort_IT()
2171 CLEAR_BIT(husart->Instance->CR3, USART_CR3_DMAT); in HAL_USART_Abort_IT()
2174 if (husart->hdmatx != NULL) in HAL_USART_Abort_IT()
2180 if (HAL_DMA_Abort_IT(husart->hdmatx) != HAL_OK) in HAL_USART_Abort_IT()
2182 husart->hdmatx->XferAbortCallback = NULL; in HAL_USART_Abort_IT()
2192 if (HAL_IS_BIT_SET(husart->Instance->CR3, USART_CR3_DMAR)) in HAL_USART_Abort_IT()
2195 CLEAR_BIT(husart->Instance->CR3, USART_CR3_DMAR); in HAL_USART_Abort_IT()
2198 if (husart->hdmarx != NULL) in HAL_USART_Abort_IT()
2204 if (HAL_DMA_Abort_IT(husart->hdmarx) != HAL_OK) in HAL_USART_Abort_IT()
2206 husart->hdmarx->XferAbortCallback = NULL; in HAL_USART_Abort_IT()
2220 husart->TxXferCount = 0U; in HAL_USART_Abort_IT()
2221 husart->RxXferCount = 0U; in HAL_USART_Abort_IT()
2224 husart->ErrorCode = HAL_USART_ERROR_NONE; in HAL_USART_Abort_IT()
2227 …__HAL_USART_CLEAR_FLAG(husart, USART_CLEAR_OREF | USART_CLEAR_NEF | USART_CLEAR_PEF | USART_CLEAR_… in HAL_USART_Abort_IT()
2230 if (husart->FifoMode == USART_FIFOMODE_ENABLE) in HAL_USART_Abort_IT()
2232 __HAL_USART_SEND_REQ(husart, USART_TXDATA_FLUSH_REQUEST); in HAL_USART_Abort_IT()
2236 __HAL_USART_SEND_REQ(husart, USART_RXDATA_FLUSH_REQUEST); in HAL_USART_Abort_IT()
2239 husart->State = HAL_USART_STATE_READY; in HAL_USART_Abort_IT()
2244 husart->AbortCpltCallback(husart); in HAL_USART_Abort_IT()
2247 HAL_USART_AbortCpltCallback(husart); in HAL_USART_Abort_IT()
2259 void HAL_USART_IRQHandler(USART_HandleTypeDef *husart) in HAL_USART_IRQHandler() argument
2261 uint32_t isrflags = READ_REG(husart->Instance->ISR); in HAL_USART_IRQHandler()
2262 uint32_t cr1its = READ_REG(husart->Instance->CR1); in HAL_USART_IRQHandler()
2263 uint32_t cr3its = READ_REG(husart->Instance->CR3); in HAL_USART_IRQHandler()
2278 if (husart->RxISR != NULL) in HAL_USART_IRQHandler()
2280 husart->RxISR(husart); in HAL_USART_IRQHandler()
2294 __HAL_USART_CLEAR_IT(husart, USART_CLEAR_PEF); in HAL_USART_IRQHandler()
2296 husart->ErrorCode |= HAL_USART_ERROR_PE; in HAL_USART_IRQHandler()
2302 __HAL_USART_CLEAR_IT(husart, USART_CLEAR_FEF); in HAL_USART_IRQHandler()
2304 husart->ErrorCode |= HAL_USART_ERROR_FE; in HAL_USART_IRQHandler()
2310 __HAL_USART_CLEAR_IT(husart, USART_CLEAR_NEF); in HAL_USART_IRQHandler()
2312 husart->ErrorCode |= HAL_USART_ERROR_NE; in HAL_USART_IRQHandler()
2320 __HAL_USART_CLEAR_IT(husart, USART_CLEAR_OREF); in HAL_USART_IRQHandler()
2322 husart->ErrorCode |= HAL_USART_ERROR_ORE; in HAL_USART_IRQHandler()
2328 __HAL_USART_CLEAR_IT(husart, USART_CLEAR_RTOF); in HAL_USART_IRQHandler()
2330 husart->ErrorCode |= HAL_USART_ERROR_RTO; in HAL_USART_IRQHandler()
2337 if (husart->State == HAL_USART_STATE_BUSY_RX) in HAL_USART_IRQHandler()
2339 __HAL_USART_CLEAR_UDRFLAG(husart); in HAL_USART_IRQHandler()
2344 __HAL_USART_CLEAR_UDRFLAG(husart); in HAL_USART_IRQHandler()
2345 husart->ErrorCode |= HAL_USART_ERROR_UDR; in HAL_USART_IRQHandler()
2350 if (husart->ErrorCode != HAL_USART_ERROR_NONE) in HAL_USART_IRQHandler()
2357 if (husart->RxISR != NULL) in HAL_USART_IRQHandler()
2359 husart->RxISR(husart); in HAL_USART_IRQHandler()
2365 errorcode = husart->ErrorCode & HAL_USART_ERROR_ORE; in HAL_USART_IRQHandler()
2366 if ((HAL_IS_BIT_SET(husart->Instance->CR3, USART_CR3_DMAR)) || in HAL_USART_IRQHandler()
2372 USART_EndTransfer(husart); in HAL_USART_IRQHandler()
2375 if (HAL_IS_BIT_SET(husart->Instance->CR3, USART_CR3_DMAR)) in HAL_USART_IRQHandler()
2378 CLEAR_BIT(husart->Instance->CR3, USART_CR3_DMAR | USART_CR3_DMAR); in HAL_USART_IRQHandler()
2381 if (husart->hdmatx != NULL) in HAL_USART_IRQHandler()
2385 husart->hdmatx->XferAbortCallback = NULL; in HAL_USART_IRQHandler()
2388 (void)HAL_DMA_Abort_IT(husart->hdmatx); in HAL_USART_IRQHandler()
2392 if (husart->hdmarx != NULL) in HAL_USART_IRQHandler()
2396 husart->hdmarx->XferAbortCallback = USART_DMAAbortOnError; in HAL_USART_IRQHandler()
2399 if (HAL_DMA_Abort_IT(husart->hdmarx) != HAL_OK) in HAL_USART_IRQHandler()
2402 husart->hdmarx->XferAbortCallback(husart->hdmarx); in HAL_USART_IRQHandler()
2410 husart->ErrorCallback(husart); in HAL_USART_IRQHandler()
2413 HAL_USART_ErrorCallback(husart); in HAL_USART_IRQHandler()
2422 husart->ErrorCallback(husart); in HAL_USART_IRQHandler()
2425 HAL_USART_ErrorCallback(husart); in HAL_USART_IRQHandler()
2435 husart->ErrorCallback(husart); in HAL_USART_IRQHandler()
2438 HAL_USART_ErrorCallback(husart); in HAL_USART_IRQHandler()
2440 husart->ErrorCode = HAL_USART_ERROR_NONE; in HAL_USART_IRQHandler()
2453 if (husart->TxISR != NULL) in HAL_USART_IRQHandler()
2455 husart->TxISR(husart); in HAL_USART_IRQHandler()
2463 USART_EndTransmit_IT(husart); in HAL_USART_IRQHandler()
2472 husart->TxFifoEmptyCallback(husart); in HAL_USART_IRQHandler()
2475 HAL_USARTEx_TxFifoEmptyCallback(husart); in HAL_USART_IRQHandler()
2485 husart->RxFifoFullCallback(husart); in HAL_USART_IRQHandler()
2488 HAL_USARTEx_RxFifoFullCallback(husart); in HAL_USART_IRQHandler()
2499 __weak void HAL_USART_TxCpltCallback(USART_HandleTypeDef *husart) in HAL_USART_TxCpltCallback() argument
2502 UNUSED(husart); in HAL_USART_TxCpltCallback()
2514 __weak void HAL_USART_TxHalfCpltCallback(USART_HandleTypeDef *husart) in HAL_USART_TxHalfCpltCallback() argument
2517 UNUSED(husart); in HAL_USART_TxHalfCpltCallback()
2529 __weak void HAL_USART_RxCpltCallback(USART_HandleTypeDef *husart) in HAL_USART_RxCpltCallback() argument
2532 UNUSED(husart); in HAL_USART_RxCpltCallback()
2544 __weak void HAL_USART_RxHalfCpltCallback(USART_HandleTypeDef *husart) in HAL_USART_RxHalfCpltCallback() argument
2547 UNUSED(husart); in HAL_USART_RxHalfCpltCallback()
2559 __weak void HAL_USART_TxRxCpltCallback(USART_HandleTypeDef *husart) in HAL_USART_TxRxCpltCallback() argument
2562 UNUSED(husart); in HAL_USART_TxRxCpltCallback()
2574 __weak void HAL_USART_ErrorCallback(USART_HandleTypeDef *husart) in HAL_USART_ErrorCallback() argument
2577 UNUSED(husart); in HAL_USART_ErrorCallback()
2589 __weak void HAL_USART_AbortCpltCallback(USART_HandleTypeDef *husart) in HAL_USART_AbortCpltCallback() argument
2592 UNUSED(husart); in HAL_USART_AbortCpltCallback()
2626 HAL_USART_StateTypeDef HAL_USART_GetState(const USART_HandleTypeDef *husart) in HAL_USART_GetState() argument
2628 return husart->State; in HAL_USART_GetState()
2637 uint32_t HAL_USART_GetError(const USART_HandleTypeDef *husart) in HAL_USART_GetError() argument
2639 return husart->ErrorCode; in HAL_USART_GetError()
2660 void USART_InitCallbacksToDefault(USART_HandleTypeDef *husart) in USART_InitCallbacksToDefault() argument
2663 …husart->TxHalfCpltCallback = HAL_USART_TxHalfCpltCallback; /* Legacy weak TxHalfCplt… in USART_InitCallbacksToDefault()
2664 …husart->TxCpltCallback = HAL_USART_TxCpltCallback; /* Legacy weak TxCpltCall… in USART_InitCallbacksToDefault()
2665 …husart->RxHalfCpltCallback = HAL_USART_RxHalfCpltCallback; /* Legacy weak RxHalfCplt… in USART_InitCallbacksToDefault()
2666 …husart->RxCpltCallback = HAL_USART_RxCpltCallback; /* Legacy weak RxCpltCall… in USART_InitCallbacksToDefault()
2667 …husart->TxRxCpltCallback = HAL_USART_TxRxCpltCallback; /* Legacy weak TxRxCpltCa… in USART_InitCallbacksToDefault()
2668 …husart->ErrorCallback = HAL_USART_ErrorCallback; /* Legacy weak ErrorCallb… in USART_InitCallbacksToDefault()
2669 …husart->AbortCpltCallback = HAL_USART_AbortCpltCallback; /* Legacy weak AbortCpltC… in USART_InitCallbacksToDefault()
2670 …husart->RxFifoFullCallback = HAL_USARTEx_RxFifoFullCallback; /* Legacy weak RxFifoFull… in USART_InitCallbacksToDefault()
2671 …husart->TxFifoEmptyCallback = HAL_USARTEx_TxFifoEmptyCallback; /* Legacy weak TxFifoEmpt… in USART_InitCallbacksToDefault()
2680 static void USART_EndTransfer(USART_HandleTypeDef *husart) in USART_EndTransfer() argument
2683 …CLEAR_BIT(husart->Instance->CR1, (USART_CR1_RXNEIE_RXFNEIE | USART_CR1_PEIE | USART_CR1_TXEIE_TXFN… in USART_EndTransfer()
2685 CLEAR_BIT(husart->Instance->CR3, (USART_CR3_EIE | USART_CR3_RXFTIE | USART_CR3_TXFTIE)); in USART_EndTransfer()
2688 husart->State = HAL_USART_STATE_READY; in USART_EndTransfer()
2698 USART_HandleTypeDef *husart = (USART_HandleTypeDef *)(hdma->Parent); in USART_DMATransmitCplt() local
2703 husart->TxXferCount = 0U; in USART_DMATransmitCplt()
2705 if (husart->State == HAL_USART_STATE_BUSY_TX) in USART_DMATransmitCplt()
2709 CLEAR_BIT(husart->Instance->CR3, USART_CR3_DMAT); in USART_DMATransmitCplt()
2712 __HAL_USART_ENABLE_IT(husart, USART_IT_TC); in USART_DMATransmitCplt()
2718 if (husart->State == HAL_USART_STATE_BUSY_TX) in USART_DMATransmitCplt()
2722 husart->TxCpltCallback(husart); in USART_DMATransmitCplt()
2725 HAL_USART_TxCpltCallback(husart); in USART_DMATransmitCplt()
2738 USART_HandleTypeDef *husart = (USART_HandleTypeDef *)(hdma->Parent); in USART_DMATxHalfCplt() local
2742 husart->TxHalfCpltCallback(husart); in USART_DMATxHalfCplt()
2745 HAL_USART_TxHalfCpltCallback(husart); in USART_DMATxHalfCplt()
2756 USART_HandleTypeDef *husart = (USART_HandleTypeDef *)(hdma->Parent); in USART_DMAReceiveCplt() local
2761 husart->RxXferCount = 0U; in USART_DMAReceiveCplt()
2764 CLEAR_BIT(husart->Instance->CR1, USART_CR1_PEIE); in USART_DMAReceiveCplt()
2765 CLEAR_BIT(husart->Instance->CR3, USART_CR3_EIE); in USART_DMAReceiveCplt()
2769 CLEAR_BIT(husart->Instance->CR3, USART_CR3_DMAR); in USART_DMAReceiveCplt()
2772 CLEAR_BIT(husart->Instance->CR3, USART_CR3_DMAT); in USART_DMAReceiveCplt()
2774 if (husart->State == HAL_USART_STATE_BUSY_RX) in USART_DMAReceiveCplt()
2778 husart->RxCpltCallback(husart); in USART_DMAReceiveCplt()
2781 HAL_USART_RxCpltCallback(husart); in USART_DMAReceiveCplt()
2789 husart->TxRxCpltCallback(husart); in USART_DMAReceiveCplt()
2792 HAL_USART_TxRxCpltCallback(husart); in USART_DMAReceiveCplt()
2795 husart->State = HAL_USART_STATE_READY; in USART_DMAReceiveCplt()
2800 if (husart->State == HAL_USART_STATE_BUSY_RX) in USART_DMAReceiveCplt()
2804 husart->RxCpltCallback(husart); in USART_DMAReceiveCplt()
2807 HAL_USART_RxCpltCallback(husart); in USART_DMAReceiveCplt()
2815 husart->TxRxCpltCallback(husart); in USART_DMAReceiveCplt()
2818 HAL_USART_TxRxCpltCallback(husart); in USART_DMAReceiveCplt()
2831 USART_HandleTypeDef *husart = (USART_HandleTypeDef *)(hdma->Parent); in USART_DMARxHalfCplt() local
2835 husart->RxHalfCpltCallback(husart); in USART_DMARxHalfCplt()
2838 HAL_USART_RxHalfCpltCallback(husart); in USART_DMARxHalfCplt()
2849 USART_HandleTypeDef *husart = (USART_HandleTypeDef *)(hdma->Parent); in USART_DMAError() local
2851 husart->RxXferCount = 0U; in USART_DMAError()
2852 husart->TxXferCount = 0U; in USART_DMAError()
2853 USART_EndTransfer(husart); in USART_DMAError()
2855 husart->ErrorCode |= HAL_USART_ERROR_DMA; in USART_DMAError()
2856 husart->State = HAL_USART_STATE_READY; in USART_DMAError()
2860 husart->ErrorCallback(husart); in USART_DMAError()
2863 HAL_USART_ErrorCallback(husart); in USART_DMAError()
2875 USART_HandleTypeDef *husart = (USART_HandleTypeDef *)(hdma->Parent); in USART_DMAAbortOnError() local
2876 husart->RxXferCount = 0U; in USART_DMAAbortOnError()
2877 husart->TxXferCount = 0U; in USART_DMAAbortOnError()
2881 husart->ErrorCallback(husart); in USART_DMAAbortOnError()
2884 HAL_USART_ErrorCallback(husart); in USART_DMAAbortOnError()
2898 USART_HandleTypeDef *husart = (USART_HandleTypeDef *)(hdma->Parent); in USART_DMATxAbortCallback() local
2900 husart->hdmatx->XferAbortCallback = NULL; in USART_DMATxAbortCallback()
2903 if (husart->hdmarx != NULL) in USART_DMATxAbortCallback()
2905 if (husart->hdmarx->XferAbortCallback != NULL) in USART_DMATxAbortCallback()
2912 husart->TxXferCount = 0U; in USART_DMATxAbortCallback()
2913 husart->RxXferCount = 0U; in USART_DMATxAbortCallback()
2916 husart->ErrorCode = HAL_USART_ERROR_NONE; in USART_DMATxAbortCallback()
2919 …__HAL_USART_CLEAR_FLAG(husart, USART_CLEAR_OREF | USART_CLEAR_NEF | USART_CLEAR_PEF | USART_CLEAR_… in USART_DMATxAbortCallback()
2922 husart->State = HAL_USART_STATE_READY; in USART_DMATxAbortCallback()
2927 husart->AbortCpltCallback(husart); in USART_DMATxAbortCallback()
2930 HAL_USART_AbortCpltCallback(husart); in USART_DMATxAbortCallback()
2946 USART_HandleTypeDef *husart = (USART_HandleTypeDef *)(hdma->Parent); in USART_DMARxAbortCallback() local
2948 husart->hdmarx->XferAbortCallback = NULL; in USART_DMARxAbortCallback()
2951 if (husart->hdmatx != NULL) in USART_DMARxAbortCallback()
2953 if (husart->hdmatx->XferAbortCallback != NULL) in USART_DMARxAbortCallback()
2960 husart->TxXferCount = 0U; in USART_DMARxAbortCallback()
2961 husart->RxXferCount = 0U; in USART_DMARxAbortCallback()
2964 husart->ErrorCode = HAL_USART_ERROR_NONE; in USART_DMARxAbortCallback()
2967 …__HAL_USART_CLEAR_FLAG(husart, USART_CLEAR_OREF | USART_CLEAR_NEF | USART_CLEAR_PEF | USART_CLEAR_… in USART_DMARxAbortCallback()
2970 husart->State = HAL_USART_STATE_READY; in USART_DMARxAbortCallback()
2975 husart->AbortCpltCallback(husart); in USART_DMARxAbortCallback()
2978 HAL_USART_AbortCpltCallback(husart); in USART_DMARxAbortCallback()
2993 static HAL_StatusTypeDef USART_WaitOnFlagUntilTimeout(USART_HandleTypeDef *husart, uint32_t Flag, F… in USART_WaitOnFlagUntilTimeout() argument
2997 while ((__HAL_USART_GET_FLAG(husart, Flag) ? SET : RESET) == Status) in USART_WaitOnFlagUntilTimeout()
3004 husart->State = HAL_USART_STATE_READY; in USART_WaitOnFlagUntilTimeout()
3007 __HAL_UNLOCK(husart); in USART_WaitOnFlagUntilTimeout()
3021 static HAL_StatusTypeDef USART_SetConfig(USART_HandleTypeDef *husart) in USART_SetConfig() argument
3031 assert_param(IS_USART_POLARITY(husart->Init.CLKPolarity)); in USART_SetConfig()
3032 assert_param(IS_USART_PHASE(husart->Init.CLKPhase)); in USART_SetConfig()
3033 assert_param(IS_USART_LASTBIT(husart->Init.CLKLastBit)); in USART_SetConfig()
3034 assert_param(IS_USART_BAUDRATE(husart->Init.BaudRate)); in USART_SetConfig()
3035 assert_param(IS_USART_WORD_LENGTH(husart->Init.WordLength)); in USART_SetConfig()
3036 assert_param(IS_USART_STOPBITS(husart->Init.StopBits)); in USART_SetConfig()
3037 assert_param(IS_USART_PARITY(husart->Init.Parity)); in USART_SetConfig()
3038 assert_param(IS_USART_MODE(husart->Init.Mode)); in USART_SetConfig()
3039 assert_param(IS_USART_PRESCALER(husart->Init.ClockPrescaler)); in USART_SetConfig()
3048 …tmpreg = (uint32_t)husart->Init.WordLength | husart->Init.Parity | husart->Init.Mode | USART_CR1_O… in USART_SetConfig()
3049 MODIFY_REG(husart->Instance->CR1, USART_CR1_FIELDS, tmpreg); in USART_SetConfig()
3058 tmpreg |= (uint32_t)husart->Init.CLKLastBit; in USART_SetConfig()
3059 tmpreg |= ((uint32_t)husart->Init.CLKPolarity | (uint32_t)husart->Init.CLKPhase); in USART_SetConfig()
3060 tmpreg |= (uint32_t)husart->Init.StopBits; in USART_SetConfig()
3061 MODIFY_REG(husart->Instance->CR2, USART_CR2_FIELDS, tmpreg); in USART_SetConfig()
3066 MODIFY_REG(husart->Instance->PRESC, USART_PRESC_PRESCALER, husart->Init.ClockPrescaler); in USART_SetConfig()
3070 USART_GETCLOCKSOURCE(husart, clocksource); in USART_SetConfig()
3076 …usartdiv = (uint32_t)(USART_DIV_SAMPLING8(pclk, husart->Init.BaudRate, husart->Init.ClockPrescaler… in USART_SetConfig()
3079 …usartdiv = (uint32_t)(USART_DIV_SAMPLING8(HSI_VALUE, husart->Init.BaudRate, husart->Init.ClockPres… in USART_SetConfig()
3083 …usartdiv = (uint32_t)(USART_DIV_SAMPLING8(pclk, husart->Init.BaudRate, husart->Init.ClockPrescaler… in USART_SetConfig()
3086 …usartdiv = (uint32_t)(USART_DIV_SAMPLING8(LSE_VALUE, husart->Init.BaudRate, husart->Init.ClockPres… in USART_SetConfig()
3098 husart->Instance->BRR = brrtemp; in USART_SetConfig()
3106 husart->NbTxDataToProcess = 1U; in USART_SetConfig()
3107 husart->NbRxDataToProcess = 1U; in USART_SetConfig()
3110 husart->RxISR = NULL; in USART_SetConfig()
3111 husart->TxISR = NULL; in USART_SetConfig()
3121 static HAL_StatusTypeDef USART_CheckIdleState(USART_HandleTypeDef *husart) in USART_CheckIdleState() argument
3126 husart->ErrorCode = HAL_USART_ERROR_NONE; in USART_CheckIdleState()
3132 if ((husart->Instance->CR1 & USART_CR1_TE) == USART_CR1_TE) in USART_CheckIdleState()
3135 …if (USART_WaitOnFlagUntilTimeout(husart, USART_ISR_TEACK, RESET, tickstart, USART_TEACK_REACK_TIME… in USART_CheckIdleState()
3142 if ((husart->Instance->CR1 & USART_CR1_RE) == USART_CR1_RE) in USART_CheckIdleState()
3145 …if (USART_WaitOnFlagUntilTimeout(husart, USART_ISR_REACK, RESET, tickstart, USART_TEACK_REACK_TIME… in USART_CheckIdleState()
3153 husart->State = HAL_USART_STATE_READY; in USART_CheckIdleState()
3156 __HAL_UNLOCK(husart); in USART_CheckIdleState()
3171 static void USART_TxISR_8BIT(USART_HandleTypeDef *husart) in USART_TxISR_8BIT() argument
3173 const HAL_USART_StateTypeDef state = husart->State; in USART_TxISR_8BIT()
3179 if (husart->TxXferCount == 0U) in USART_TxISR_8BIT()
3182 __HAL_USART_DISABLE_IT(husart, USART_IT_TXE); in USART_TxISR_8BIT()
3185 __HAL_USART_ENABLE_IT(husart, USART_IT_TC); in USART_TxISR_8BIT()
3189 husart->Instance->TDR = (uint8_t)(*husart->pTxBuffPtr & (uint8_t)0xFF); in USART_TxISR_8BIT()
3190 husart->pTxBuffPtr++; in USART_TxISR_8BIT()
3191 husart->TxXferCount--; in USART_TxISR_8BIT()
3206 static void USART_TxISR_16BIT(USART_HandleTypeDef *husart) in USART_TxISR_16BIT() argument
3208 const HAL_USART_StateTypeDef state = husart->State; in USART_TxISR_16BIT()
3214 if (husart->TxXferCount == 0U) in USART_TxISR_16BIT()
3217 __HAL_USART_DISABLE_IT(husart, USART_IT_TXE); in USART_TxISR_16BIT()
3220 __HAL_USART_ENABLE_IT(husart, USART_IT_TC); in USART_TxISR_16BIT()
3224 tmp = (const uint16_t *) husart->pTxBuffPtr; in USART_TxISR_16BIT()
3225 husart->Instance->TDR = (uint16_t)(*tmp & 0x01FFU); in USART_TxISR_16BIT()
3226 husart->pTxBuffPtr += 2U; in USART_TxISR_16BIT()
3227 husart->TxXferCount--; in USART_TxISR_16BIT()
3242 static void USART_TxISR_8BIT_FIFOEN(USART_HandleTypeDef *husart) in USART_TxISR_8BIT_FIFOEN() argument
3244 const HAL_USART_StateTypeDef state = husart->State; in USART_TxISR_8BIT_FIFOEN()
3251 for (nb_tx_data = husart->NbTxDataToProcess ; nb_tx_data > 0U ; nb_tx_data--) in USART_TxISR_8BIT_FIFOEN()
3253 if (husart->TxXferCount == 0U) in USART_TxISR_8BIT_FIFOEN()
3256 __HAL_USART_DISABLE_IT(husart, USART_IT_TXFT); in USART_TxISR_8BIT_FIFOEN()
3259 __HAL_USART_ENABLE_IT(husart, USART_IT_TC); in USART_TxISR_8BIT_FIFOEN()
3263 else if (__HAL_USART_GET_FLAG(husart, USART_FLAG_TXFNF) == SET) in USART_TxISR_8BIT_FIFOEN()
3265 husart->Instance->TDR = (uint8_t)(*husart->pTxBuffPtr & (uint8_t)0xFF); in USART_TxISR_8BIT_FIFOEN()
3266 husart->pTxBuffPtr++; in USART_TxISR_8BIT_FIFOEN()
3267 husart->TxXferCount--; in USART_TxISR_8BIT_FIFOEN()
3287 static void USART_TxISR_16BIT_FIFOEN(USART_HandleTypeDef *husart) in USART_TxISR_16BIT_FIFOEN() argument
3289 const HAL_USART_StateTypeDef state = husart->State; in USART_TxISR_16BIT_FIFOEN()
3297 for (nb_tx_data = husart->NbTxDataToProcess ; nb_tx_data > 0U ; nb_tx_data--) in USART_TxISR_16BIT_FIFOEN()
3299 if (husart->TxXferCount == 0U) in USART_TxISR_16BIT_FIFOEN()
3302 __HAL_USART_DISABLE_IT(husart, USART_IT_TXFT); in USART_TxISR_16BIT_FIFOEN()
3305 __HAL_USART_ENABLE_IT(husart, USART_IT_TC); in USART_TxISR_16BIT_FIFOEN()
3309 else if (__HAL_USART_GET_FLAG(husart, USART_FLAG_TXFNF) == SET) in USART_TxISR_16BIT_FIFOEN()
3311 tmp = (const uint16_t *) husart->pTxBuffPtr; in USART_TxISR_16BIT_FIFOEN()
3312 husart->Instance->TDR = (uint16_t)(*tmp & 0x01FFU); in USART_TxISR_16BIT_FIFOEN()
3313 husart->pTxBuffPtr += 2U; in USART_TxISR_16BIT_FIFOEN()
3314 husart->TxXferCount--; in USART_TxISR_16BIT_FIFOEN()
3330 static void USART_EndTransmit_IT(USART_HandleTypeDef *husart) in USART_EndTransmit_IT() argument
3333 __HAL_USART_DISABLE_IT(husart, USART_IT_TC); in USART_EndTransmit_IT()
3336 __HAL_USART_DISABLE_IT(husart, USART_IT_ERR); in USART_EndTransmit_IT()
3339 husart->TxISR = NULL; in USART_EndTransmit_IT()
3341 if (husart->State == HAL_USART_STATE_BUSY_TX) in USART_EndTransmit_IT()
3344 __HAL_USART_CLEAR_OREFLAG(husart); in USART_EndTransmit_IT()
3345 __HAL_USART_SEND_REQ(husart, USART_RXDATA_FLUSH_REQUEST); in USART_EndTransmit_IT()
3348 husart->State = HAL_USART_STATE_READY; in USART_EndTransmit_IT()
3352 husart->TxCpltCallback(husart); in USART_EndTransmit_IT()
3355 HAL_USART_TxCpltCallback(husart); in USART_EndTransmit_IT()
3358 else if (husart->RxXferCount == 0U) in USART_EndTransmit_IT()
3361 husart->State = HAL_USART_STATE_READY; in USART_EndTransmit_IT()
3365 husart->TxRxCpltCallback(husart); in USART_EndTransmit_IT()
3368 HAL_USART_TxRxCpltCallback(husart); in USART_EndTransmit_IT()
3387 static void USART_RxISR_8BIT(USART_HandleTypeDef *husart) in USART_RxISR_8BIT() argument
3389 const HAL_USART_StateTypeDef state = husart->State; in USART_RxISR_8BIT()
3391 uint16_t uhMask = husart->Mask; in USART_RxISR_8BIT()
3397 *husart->pRxBuffPtr = (uint8_t)(husart->Instance->RDR & (uint8_t)uhMask); in USART_RxISR_8BIT()
3398 husart->pRxBuffPtr++; in USART_RxISR_8BIT()
3399 husart->RxXferCount--; in USART_RxISR_8BIT()
3401 if (husart->RxXferCount == 0U) in USART_RxISR_8BIT()
3404 CLEAR_BIT(husart->Instance->CR1, (USART_CR1_RXNEIE_RXFNEIE | USART_CR1_PEIE)); in USART_RxISR_8BIT()
3407 CLEAR_BIT(husart->Instance->CR3, USART_CR3_EIE); in USART_RxISR_8BIT()
3410 husart->RxISR = NULL; in USART_RxISR_8BIT()
3413 txftie = READ_BIT(husart->Instance->CR3, USART_CR3_TXFTIE); in USART_RxISR_8BIT()
3414 txdatacount = husart->TxXferCount; in USART_RxISR_8BIT()
3419 if (husart->SlaveMode == USART_SLAVEMODE_ENABLE) in USART_RxISR_8BIT()
3421 __HAL_USART_CLEAR_UDRFLAG(husart); in USART_RxISR_8BIT()
3422 __HAL_USART_SEND_REQ(husart, USART_TXDATA_FLUSH_REQUEST); in USART_RxISR_8BIT()
3426 husart->State = HAL_USART_STATE_READY; in USART_RxISR_8BIT()
3430 husart->RxCpltCallback(husart); in USART_RxISR_8BIT()
3433 HAL_USART_RxCpltCallback(husart); in USART_RxISR_8BIT()
3436 else if ((READ_BIT(husart->Instance->CR1, USART_CR1_TCIE) != USART_CR1_TCIE) && in USART_RxISR_8BIT()
3441 husart->State = HAL_USART_STATE_READY; in USART_RxISR_8BIT()
3445 husart->TxRxCpltCallback(husart); in USART_RxISR_8BIT()
3448 HAL_USART_TxRxCpltCallback(husart); in USART_RxISR_8BIT()
3457 (husart->SlaveMode == USART_SLAVEMODE_DISABLE)) in USART_RxISR_8BIT()
3460 husart->Instance->TDR = (USART_DUMMY_DATA & (uint16_t)0x00FF); in USART_RxISR_8BIT()
3478 static void USART_RxISR_16BIT(USART_HandleTypeDef *husart) in USART_RxISR_16BIT() argument
3480 const HAL_USART_StateTypeDef state = husart->State; in USART_RxISR_16BIT()
3483 uint16_t uhMask = husart->Mask; in USART_RxISR_16BIT()
3489 tmp = (uint16_t *) husart->pRxBuffPtr; in USART_RxISR_16BIT()
3490 *tmp = (uint16_t)(husart->Instance->RDR & uhMask); in USART_RxISR_16BIT()
3491 husart->pRxBuffPtr += 2U; in USART_RxISR_16BIT()
3492 husart->RxXferCount--; in USART_RxISR_16BIT()
3494 if (husart->RxXferCount == 0U) in USART_RxISR_16BIT()
3497 CLEAR_BIT(husart->Instance->CR1, (USART_CR1_RXNEIE_RXFNEIE | USART_CR1_PEIE)); in USART_RxISR_16BIT()
3500 CLEAR_BIT(husart->Instance->CR3, USART_CR3_EIE); in USART_RxISR_16BIT()
3503 husart->RxISR = NULL; in USART_RxISR_16BIT()
3506 txftie = READ_BIT(husart->Instance->CR3, USART_CR3_TXFTIE); in USART_RxISR_16BIT()
3507 txdatacount = husart->TxXferCount; in USART_RxISR_16BIT()
3512 if (husart->SlaveMode == USART_SLAVEMODE_ENABLE) in USART_RxISR_16BIT()
3514 __HAL_USART_CLEAR_UDRFLAG(husart); in USART_RxISR_16BIT()
3515 __HAL_USART_SEND_REQ(husart, USART_TXDATA_FLUSH_REQUEST); in USART_RxISR_16BIT()
3519 husart->State = HAL_USART_STATE_READY; in USART_RxISR_16BIT()
3523 husart->RxCpltCallback(husart); in USART_RxISR_16BIT()
3526 HAL_USART_RxCpltCallback(husart); in USART_RxISR_16BIT()
3529 else if ((READ_BIT(husart->Instance->CR1, USART_CR1_TCIE) != USART_CR1_TCIE) && in USART_RxISR_16BIT()
3534 husart->State = HAL_USART_STATE_READY; in USART_RxISR_16BIT()
3538 husart->TxRxCpltCallback(husart); in USART_RxISR_16BIT()
3541 HAL_USART_TxRxCpltCallback(husart); in USART_RxISR_16BIT()
3550 (husart->SlaveMode == USART_SLAVEMODE_DISABLE)) in USART_RxISR_16BIT()
3553 husart->Instance->TDR = (USART_DUMMY_DATA & (uint16_t)0x00FF); in USART_RxISR_16BIT()
3571 static void USART_RxISR_8BIT_FIFOEN(USART_HandleTypeDef *husart) in USART_RxISR_8BIT_FIFOEN() argument
3573 HAL_USART_StateTypeDef state = husart->State; in USART_RxISR_8BIT_FIFOEN()
3576 uint16_t uhMask = husart->Mask; in USART_RxISR_8BIT_FIFOEN()
3584 for (nb_rx_data = husart->NbRxDataToProcess ; nb_rx_data > 0U ; nb_rx_data--) in USART_RxISR_8BIT_FIFOEN()
3586 if (__HAL_USART_GET_FLAG(husart, USART_FLAG_RXFNE) == SET) in USART_RxISR_8BIT_FIFOEN()
3588 *husart->pRxBuffPtr = (uint8_t)(husart->Instance->RDR & (uint8_t)(uhMask & 0xFFU)); in USART_RxISR_8BIT_FIFOEN()
3589 husart->pRxBuffPtr++; in USART_RxISR_8BIT_FIFOEN()
3590 husart->RxXferCount--; in USART_RxISR_8BIT_FIFOEN()
3592 if (husart->RxXferCount == 0U) in USART_RxISR_8BIT_FIFOEN()
3595 CLEAR_BIT(husart->Instance->CR1, USART_CR1_PEIE); in USART_RxISR_8BIT_FIFOEN()
3599 CLEAR_BIT(husart->Instance->CR3, (USART_CR3_EIE | USART_CR3_RXFTIE)); in USART_RxISR_8BIT_FIFOEN()
3602 husart->RxISR = NULL; in USART_RxISR_8BIT_FIFOEN()
3605 txftie = READ_BIT(husart->Instance->CR3, USART_CR3_TXFTIE); in USART_RxISR_8BIT_FIFOEN()
3606 txdatacount = husart->TxXferCount; in USART_RxISR_8BIT_FIFOEN()
3611 if (husart->SlaveMode == USART_SLAVEMODE_ENABLE) in USART_RxISR_8BIT_FIFOEN()
3613 __HAL_USART_CLEAR_UDRFLAG(husart); in USART_RxISR_8BIT_FIFOEN()
3614 __HAL_USART_SEND_REQ(husart, USART_TXDATA_FLUSH_REQUEST); in USART_RxISR_8BIT_FIFOEN()
3618 husart->State = HAL_USART_STATE_READY; in USART_RxISR_8BIT_FIFOEN()
3623 husart->RxCpltCallback(husart); in USART_RxISR_8BIT_FIFOEN()
3626 HAL_USART_RxCpltCallback(husart); in USART_RxISR_8BIT_FIFOEN()
3629 else if ((READ_BIT(husart->Instance->CR1, USART_CR1_TCIE) != USART_CR1_TCIE) && in USART_RxISR_8BIT_FIFOEN()
3634 husart->State = HAL_USART_STATE_READY; in USART_RxISR_8BIT_FIFOEN()
3639 husart->TxRxCpltCallback(husart); in USART_RxISR_8BIT_FIFOEN()
3642 HAL_USART_TxRxCpltCallback(husart); in USART_RxISR_8BIT_FIFOEN()
3651 (husart->SlaveMode == USART_SLAVEMODE_DISABLE)) in USART_RxISR_8BIT_FIFOEN()
3654 husart->Instance->TDR = (USART_DUMMY_DATA & (uint16_t)0x00FF); in USART_RxISR_8BIT_FIFOEN()
3667 rxdatacount = husart->RxXferCount; in USART_RxISR_8BIT_FIFOEN()
3668 if (((rxdatacount != 0U)) && (rxdatacount < husart->NbRxDataToProcess)) in USART_RxISR_8BIT_FIFOEN()
3671 CLEAR_BIT(husart->Instance->CR3, USART_CR3_RXFTIE); in USART_RxISR_8BIT_FIFOEN()
3674 husart->RxISR = USART_RxISR_8BIT; in USART_RxISR_8BIT_FIFOEN()
3677 SET_BIT(husart->Instance->CR1, USART_CR1_RXNEIE_RXFNEIE); in USART_RxISR_8BIT_FIFOEN()
3679 if ((husart->TxXferCount == 0U) && in USART_RxISR_8BIT_FIFOEN()
3681 (husart->SlaveMode == USART_SLAVEMODE_DISABLE)) in USART_RxISR_8BIT_FIFOEN()
3684 husart->Instance->TDR = (USART_DUMMY_DATA & (uint16_t)0x00FF); in USART_RxISR_8BIT_FIFOEN()
3691 __HAL_USART_SEND_REQ(husart, USART_RXDATA_FLUSH_REQUEST); in USART_RxISR_8BIT_FIFOEN()
3704 static void USART_RxISR_16BIT_FIFOEN(USART_HandleTypeDef *husart) in USART_RxISR_16BIT_FIFOEN() argument
3706 HAL_USART_StateTypeDef state = husart->State; in USART_RxISR_16BIT_FIFOEN()
3710 uint16_t uhMask = husart->Mask; in USART_RxISR_16BIT_FIFOEN()
3718 for (nb_rx_data = husart->NbRxDataToProcess ; nb_rx_data > 0U ; nb_rx_data--) in USART_RxISR_16BIT_FIFOEN()
3720 if (__HAL_USART_GET_FLAG(husart, USART_FLAG_RXFNE) == SET) in USART_RxISR_16BIT_FIFOEN()
3722 tmp = (uint16_t *) husart->pRxBuffPtr; in USART_RxISR_16BIT_FIFOEN()
3723 *tmp = (uint16_t)(husart->Instance->RDR & uhMask); in USART_RxISR_16BIT_FIFOEN()
3724 husart->pRxBuffPtr += 2U; in USART_RxISR_16BIT_FIFOEN()
3725 husart->RxXferCount--; in USART_RxISR_16BIT_FIFOEN()
3727 if (husart->RxXferCount == 0U) in USART_RxISR_16BIT_FIFOEN()
3730 CLEAR_BIT(husart->Instance->CR1, USART_CR1_PEIE); in USART_RxISR_16BIT_FIFOEN()
3734 CLEAR_BIT(husart->Instance->CR3, (USART_CR3_EIE | USART_CR3_RXFTIE)); in USART_RxISR_16BIT_FIFOEN()
3737 husart->RxISR = NULL; in USART_RxISR_16BIT_FIFOEN()
3740 txftie = READ_BIT(husart->Instance->CR3, USART_CR3_TXFTIE); in USART_RxISR_16BIT_FIFOEN()
3741 txdatacount = husart->TxXferCount; in USART_RxISR_16BIT_FIFOEN()
3746 if (husart->SlaveMode == USART_SLAVEMODE_ENABLE) in USART_RxISR_16BIT_FIFOEN()
3748 __HAL_USART_CLEAR_UDRFLAG(husart); in USART_RxISR_16BIT_FIFOEN()
3749 __HAL_USART_SEND_REQ(husart, USART_TXDATA_FLUSH_REQUEST); in USART_RxISR_16BIT_FIFOEN()
3753 husart->State = HAL_USART_STATE_READY; in USART_RxISR_16BIT_FIFOEN()
3758 husart->RxCpltCallback(husart); in USART_RxISR_16BIT_FIFOEN()
3761 HAL_USART_RxCpltCallback(husart); in USART_RxISR_16BIT_FIFOEN()
3764 else if ((READ_BIT(husart->Instance->CR1, USART_CR1_TCIE) != USART_CR1_TCIE) && in USART_RxISR_16BIT_FIFOEN()
3769 husart->State = HAL_USART_STATE_READY; in USART_RxISR_16BIT_FIFOEN()
3774 husart->TxRxCpltCallback(husart); in USART_RxISR_16BIT_FIFOEN()
3777 HAL_USART_TxRxCpltCallback(husart); in USART_RxISR_16BIT_FIFOEN()
3786 (husart->SlaveMode == USART_SLAVEMODE_DISABLE)) in USART_RxISR_16BIT_FIFOEN()
3789 husart->Instance->TDR = (USART_DUMMY_DATA & (uint16_t)0x00FF); in USART_RxISR_16BIT_FIFOEN()
3802 rxdatacount = husart->RxXferCount; in USART_RxISR_16BIT_FIFOEN()
3803 if (((rxdatacount != 0U)) && (rxdatacount < husart->NbRxDataToProcess)) in USART_RxISR_16BIT_FIFOEN()
3806 CLEAR_BIT(husart->Instance->CR3, USART_CR3_RXFTIE); in USART_RxISR_16BIT_FIFOEN()
3809 husart->RxISR = USART_RxISR_16BIT; in USART_RxISR_16BIT_FIFOEN()
3812 SET_BIT(husart->Instance->CR1, USART_CR1_RXNEIE_RXFNEIE); in USART_RxISR_16BIT_FIFOEN()
3814 if ((husart->TxXferCount == 0U) && in USART_RxISR_16BIT_FIFOEN()
3816 (husart->SlaveMode == USART_SLAVEMODE_DISABLE)) in USART_RxISR_16BIT_FIFOEN()
3819 husart->Instance->TDR = (USART_DUMMY_DATA & (uint16_t)0x00FF); in USART_RxISR_16BIT_FIFOEN()
3826 __HAL_USART_SEND_REQ(husart, USART_RXDATA_FLUSH_REQUEST); in USART_RxISR_16BIT_FIFOEN()