Skip to content

Commit 8e15a6c

Browse files
author
Erwan GOURIOU
committed
[STM32F4][V1.11.0] Update serial_api.c to support new UART_HandleTypeDef
Following cube update, there has been changes in cube HAL that impact the serial_api.c layer. The global state has been moved to separate global/tx and rx states, so we can now differentiate both.
1 parent 8955b66 commit 8e15a6c

File tree

1 file changed

+7
-26
lines changed

1 file changed

+7
-26
lines changed

hal/targets/hal/TARGET_STM/TARGET_STM32F4/serial_api.c

Lines changed: 7 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -1082,15 +1082,8 @@ static void h_UART_DMAReceiveCplt(DMA_HandleTypeDef *hdma)
10821082
in the UART CR3 register */
10831083
huart->Instance->CR3 &= (uint32_t)~((uint32_t)USART_CR3_DMAR);
10841084

1085-
/* Check if a transmit process is ongoing or not */
1086-
if(huart->State == HAL_UART_STATE_BUSY_TX_RX)
1087-
{
1088-
huart->State = HAL_UART_STATE_BUSY_TX;
1089-
}
1090-
else
1091-
{
1092-
huart->State = HAL_UART_STATE_READY;
1093-
}
1085+
/* Update Rx state*/
1086+
huart->RxState = HAL_UART_STATE_READY;
10941087
}
10951088
HAL_UART_RxCpltCallback(huart);
10961089
}
@@ -1104,7 +1097,7 @@ static void h_UART_DMAError(DMA_HandleTypeDef *hdma)
11041097
UART_HandleTypeDef* huart = ( UART_HandleTypeDef* )((DMA_HandleTypeDef* )hdma)->Parent;
11051098
huart->RxXferCount = 0;
11061099
huart->TxXferCount = 0;
1107-
huart->State= HAL_UART_STATE_READY;
1100+
huart->gState= HAL_UART_STATE_READY;
11081101
huart->ErrorCode |= HAL_UART_ERROR_DMA;
11091102
HAL_UART_ErrorCallback(huart);
11101103
}
@@ -1124,7 +1117,7 @@ static HAL_StatusTypeDef MBED_UART_Receive_DMA(UART_HandleTypeDef *huart, uint8_
11241117
uint32_t *tmp;
11251118
uint32_t tmp1 = 0;
11261119

1127-
tmp1 = huart->State;
1120+
tmp1 = HAL_UART_GetState(huart);
11281121
if((tmp1 == HAL_UART_STATE_READY) || (tmp1 == HAL_UART_STATE_BUSY_TX)) {
11291122
if((pData == NULL ) || (Size == 0)) {
11301123
return HAL_ERROR;
@@ -1138,11 +1131,7 @@ static HAL_StatusTypeDef MBED_UART_Receive_DMA(UART_HandleTypeDef *huart, uint8_
11381131

11391132
huart->ErrorCode = HAL_UART_ERROR_NONE;
11401133
/* Check if a transmit process is ongoing or not */
1141-
if(huart->State == HAL_UART_STATE_BUSY_TX) {
1142-
huart->State = HAL_UART_STATE_BUSY_TX_RX;
1143-
} else {
1144-
huart->State = HAL_UART_STATE_BUSY_RX;
1145-
}
1134+
huart->RxState = HAL_UART_STATE_BUSY_RX;
11461135

11471136
/* Set the UART DMA transfer complete callback */
11481137
huart->hdmarx->XferCpltCallback = h_UART_DMAReceiveCplt;
@@ -1517,11 +1506,7 @@ void serial_tx_abort_asynch(serial_t *obj)
15171506
// reset states
15181507
handle->TxXferCount = 0;
15191508
// update handle state
1520-
if (handle->State == HAL_UART_STATE_BUSY_TX_RX) {
1521-
handle->State = HAL_UART_STATE_BUSY_RX;
1522-
} else {
1523-
handle->State = HAL_UART_STATE_READY;
1524-
}
1509+
handle->gState = HAL_UART_STATE_READY;
15251510
}
15261511

15271512
/** Abort the ongoing RX transaction It disables the enabled interrupt for RX and
@@ -1538,11 +1523,7 @@ void serial_rx_abort_asynch(serial_t *obj)
15381523
// reset states
15391524
handle->RxXferCount = 0;
15401525
// update handle state
1541-
if (handle->State == HAL_UART_STATE_BUSY_TX_RX) {
1542-
handle->State = HAL_UART_STATE_BUSY_TX;
1543-
} else {
1544-
handle->State = HAL_UART_STATE_READY;
1545-
}
1526+
handle->gState = HAL_UART_STATE_READY;
15461527
}
15471528

15481529
#endif

0 commit comments

Comments
 (0)