mbed official / mbed-dev

Dependents:   Nucleo_Hello_Encoder BLE_iBeaconScan AM1805_DEMO DISCO-F429ZI_ExportTemplate1 ... more

Revision:
182:a56a73fd2a6f
Parent:
167:e84263d55307
diff -r 57724642e740 -r a56a73fd2a6f targets/TARGET_STM/TARGET_STM32F4/device/stm32f4xx_hal_usart.c
--- a/targets/TARGET_STM/TARGET_STM32F4/device/stm32f4xx_hal_usart.c	Fri Feb 16 16:09:33 2018 +0000
+++ b/targets/TARGET_STM/TARGET_STM32F4/device/stm32f4xx_hal_usart.c	Tue Mar 20 16:56:18 2018 +0000
@@ -2,8 +2,6 @@
   ******************************************************************************
   * @file    stm32f4xx_hal_usart.c
   * @author  MCD Application Team
-  * @version V1.7.1
-  * @date    14-April-2017
   * @brief   USART HAL module driver.
   *          This file provides firmware functions to manage the following
   *          functionalities of the Universal Synchronous Asynchronous Receiver Transmitter (USART) peripheral:
@@ -221,7 +219,7 @@
 /**
   * @brief  Initializes the USART mode according to the specified
   *         parameters in the USART_InitTypeDef and create the associated handle.
-  * @param  husart: pointer to a USART_HandleTypeDef structure that contains
+  * @param  husart pointer to a USART_HandleTypeDef structure that contains
   *                the configuration information for the specified USART module.
   * @retval HAL status
   */
@@ -267,7 +265,7 @@
 
 /**
   * @brief  DeInitializes the USART peripheral.
-  * @param  husart: pointer to a USART_HandleTypeDef structure that contains
+  * @param  husart pointer to a USART_HandleTypeDef structure that contains
   *                the configuration information for the specified USART module.
   * @retval HAL status
   */
@@ -301,7 +299,7 @@
 
 /**
   * @brief  USART MSP Init.
-  * @param  husart: pointer to a USART_HandleTypeDef structure that contains
+  * @param  husart pointer to a USART_HandleTypeDef structure that contains
   *                the configuration information for the specified USART module.
   * @retval None
   */
@@ -316,7 +314,7 @@
 
 /**
   * @brief  USART MSP DeInit.
-  * @param  husart: pointer to a USART_HandleTypeDef structure that contains
+  * @param  husart pointer to a USART_HandleTypeDef structure that contains
   *                the configuration information for the specified USART module.
   * @retval None
   */
@@ -396,11 +394,11 @@
 
 /**
   * @brief  Simplex Send an amount of data in blocking mode.
-  * @param  husart: pointer to a USART_HandleTypeDef structure that contains
+  * @param  husart pointer to a USART_HandleTypeDef structure that contains
   *                the configuration information for the specified USART module.
-  * @param  pTxData: Pointer to data buffer
-  * @param  Size: Amount of data to be sent
-  * @param  Timeout: Timeout duration
+  * @param  pTxData Pointer to data buffer
+  * @param  Size Amount of data to be sent
+  * @param  Timeout Timeout duration
   * @retval HAL status
   */
 HAL_StatusTypeDef HAL_USART_Transmit(USART_HandleTypeDef *husart, uint8_t *pTxData, uint16_t Size, uint32_t Timeout)
@@ -477,11 +475,11 @@
 
 /**
   * @brief  Full-Duplex Receive an amount of data in blocking mode.
-  * @param  husart: pointer to a USART_HandleTypeDef structure that contains
+  * @param  husart pointer to a USART_HandleTypeDef structure that contains
   *                the configuration information for the specified USART module.
-  * @param  pRxData: Pointer to data buffer
-  * @param  Size: Amount of data to be received
-  * @param  Timeout: Timeout duration
+  * @param  pRxData Pointer to data buffer
+  * @param  Size Amount of data to be received
+  * @param  Timeout Timeout duration
   * @retval HAL status
   */
 HAL_StatusTypeDef HAL_USART_Receive(USART_HandleTypeDef *husart, uint8_t *pRxData, uint16_t Size, uint32_t Timeout)
@@ -582,12 +580,12 @@
 
 /**
   * @brief  Full-Duplex Send receive an amount of data in full-duplex mode (blocking mode).
-  * @param  husart: pointer to a USART_HandleTypeDef structure that contains
+  * @param  husart pointer to a USART_HandleTypeDef structure that contains
   *                the configuration information for the specified USART module.
-  * @param  pTxData: Pointer to data transmitted buffer
-  * @param  pRxData: Pointer to data received buffer
-  * @param  Size: Amount of data to be sent
-   * @param  Timeout: Timeout duration
+  * @param  pTxData Pointer to data transmitted buffer
+  * @param  pRxData Pointer to data received buffer
+  * @param  Size Amount of data to be sent
+   * @param  Timeout Timeout duration
   * @retval HAL status
   */
 HAL_StatusTypeDef HAL_USART_TransmitReceive(USART_HandleTypeDef *husart, uint8_t *pTxData, uint8_t *pRxData, uint16_t Size, uint32_t Timeout)
@@ -697,10 +695,10 @@
 
 /**
   * @brief  Simplex Send an amount of data in non-blocking mode.
-  * @param  husart: pointer to a USART_HandleTypeDef structure that contains
+  * @param  husart pointer to a USART_HandleTypeDef structure that contains
   *                the configuration information for the specified USART module.
-  * @param  pTxData: Pointer to data buffer
-  * @param  Size: Amount of data to be sent
+  * @param  pTxData Pointer to data buffer
+  * @param  Size Amount of data to be sent
   * @retval HAL status
   * @note   The USART errors are not managed to avoid the overrun error.
   */
@@ -747,10 +745,10 @@
 
 /**
   * @brief  Simplex Receive an amount of data in non-blocking mode.
-  * @param  husart: pointer to a USART_HandleTypeDef structure that contains
+  * @param  husart pointer to a USART_HandleTypeDef structure that contains
   *                the configuration information for the specified USART module.
-  * @param  pRxData: Pointer to data buffer
-  * @param  Size: Amount of data to be received
+  * @param  pRxData Pointer to data buffer
+  * @param  Size Amount of data to be received
   * @retval HAL status
   */
 HAL_StatusTypeDef HAL_USART_Receive_IT(USART_HandleTypeDef *husart, uint8_t *pRxData, uint16_t Size)
@@ -793,11 +791,11 @@
 
 /**
   * @brief  Full-Duplex Send receive an amount of data in full-duplex mode (non-blocking).
-  * @param  husart: pointer to a USART_HandleTypeDef structure that contains
+  * @param  husart pointer to a USART_HandleTypeDef structure that contains
   *                the configuration information for the specified USART module.
-  * @param  pTxData: Pointer to data transmitted buffer
-  * @param  pRxData: Pointer to data received buffer
-  * @param  Size: Amount of data to be received
+  * @param  pTxData Pointer to data transmitted buffer
+  * @param  pRxData Pointer to data received buffer
+  * @param  Size Amount of data to be received
   * @retval HAL status
   */
 HAL_StatusTypeDef HAL_USART_TransmitReceive_IT(USART_HandleTypeDef *husart, uint8_t *pTxData, uint8_t *pRxData,  uint16_t Size)
@@ -846,10 +844,10 @@
 
 /**
   * @brief  Simplex Send an amount of data in non-blocking mode.
-  * @param  husart: pointer to a USART_HandleTypeDef structure that contains
+  * @param  husart pointer to a USART_HandleTypeDef structure that contains
   *                the configuration information for the specified USART module.
-  * @param  pTxData: Pointer to data buffer
-  * @param  Size: Amount of data to be sent
+  * @param  pTxData Pointer to data buffer
+  * @param  Size Amount of data to be sent
   * @retval HAL status
   */
 HAL_StatusTypeDef HAL_USART_Transmit_DMA(USART_HandleTypeDef *husart, uint8_t *pTxData, uint16_t Size)
@@ -908,10 +906,10 @@
 
 /**
   * @brief  Full-Duplex Receive an amount of data in non-blocking mode.
-  * @param  husart: pointer to a USART_HandleTypeDef structure that contains
+  * @param  husart pointer to a USART_HandleTypeDef structure that contains
   *                the configuration information for the specified USART module.
-  * @param  pRxData: Pointer to data buffer
-  * @param  Size: Amount of data to be received
+  * @param  pRxData Pointer to data buffer
+  * @param  Size Amount of data to be received
   * @retval HAL status
   * @note   The USART DMA transmit stream must be configured in order to generate the clock for the slave.
   * @note   When the USART parity is enabled (PCE = 1) the data received contain the parity bit.
@@ -1000,11 +998,11 @@
 
 /**
   * @brief  Full-Duplex Transmit Receive an amount of data in non-blocking mode.
-  * @param  husart: pointer to a USART_HandleTypeDef structure that contains
+  * @param  husart pointer to a USART_HandleTypeDef structure that contains
   *                the configuration information for the specified USART module.
-  * @param  pTxData: Pointer to data transmitted buffer
-  * @param  pRxData: Pointer to data received buffer
-  * @param  Size: Amount of data to be received
+  * @param  pTxData Pointer to data transmitted buffer
+  * @param  pRxData Pointer to data received buffer
+  * @param  Size Amount of data to be received
   * @note   When the USART parity is enabled (PCE = 1) the data received contain the parity bit.
   * @retval HAL status
   */
@@ -1091,7 +1089,7 @@
 
 /**
   * @brief Pauses the DMA Transfer.
-  * @param  husart: pointer to a USART_HandleTypeDef structure that contains
+  * @param  husart pointer to a USART_HandleTypeDef structure that contains
   *                the configuration information for the specified USART module.
   * @retval HAL status
   */
@@ -1111,7 +1109,7 @@
 
 /**
   * @brief Resumes the DMA Transfer.
-  * @param  husart: pointer to a USART_HandleTypeDef structure that contains
+  * @param  husart pointer to a USART_HandleTypeDef structure that contains
   *                the configuration information for the specified USART module.
   * @retval HAL status
   */
@@ -1131,7 +1129,7 @@
 
 /**
   * @brief Stops the DMA Transfer.
-  * @param  husart: pointer to a USART_HandleTypeDef structure that contains
+  * @param  husart pointer to a USART_HandleTypeDef structure that contains
   *                the configuration information for the specified USART module.
   * @retval HAL status
   */
@@ -1367,7 +1365,7 @@
 
 /**
   * @brief  This function handles USART interrupt request.
-  * @param  husart: pointer to a USART_HandleTypeDef structure that contains
+  * @param  husart pointer to a USART_HandleTypeDef structure that contains
   *                the configuration information for the specified USART module.
   * @retval None
   */
@@ -1511,7 +1509,7 @@
 
 /**
   * @brief  Tx Transfer completed callbacks.
-  * @param  husart: pointer to a USART_HandleTypeDef structure that contains
+  * @param  husart pointer to a USART_HandleTypeDef structure that contains
   *                the configuration information for the specified USART module.
   * @retval None
   */
@@ -1526,7 +1524,7 @@
 
 /**
   * @brief  Tx Half Transfer completed callbacks.
-  * @param  husart: pointer to a USART_HandleTypeDef structure that contains
+  * @param  husart pointer to a USART_HandleTypeDef structure that contains
   *                the configuration information for the specified USART module.
   * @retval None
   */
@@ -1541,7 +1539,7 @@
 
 /**
   * @brief  Rx Transfer completed callbacks.
-  * @param  husart: pointer to a USART_HandleTypeDef structure that contains
+  * @param  husart pointer to a USART_HandleTypeDef structure that contains
   *                the configuration information for the specified USART module.
   * @retval None
   */
@@ -1556,7 +1554,7 @@
 
 /**
   * @brief  Rx Half Transfer completed callbacks.
-  * @param  husart: pointer to a USART_HandleTypeDef structure that contains
+  * @param  husart pointer to a USART_HandleTypeDef structure that contains
   *                the configuration information for the specified USART module.
   * @retval None
   */
@@ -1571,7 +1569,7 @@
 
 /**
   * @brief  Tx/Rx Transfers completed callback for the non-blocking process.
-  * @param  husart: pointer to a USART_HandleTypeDef structure that contains
+  * @param  husart pointer to a USART_HandleTypeDef structure that contains
   *                the configuration information for the specified USART module.
   * @retval None
   */
@@ -1586,7 +1584,7 @@
 
 /**
   * @brief  USART error callbacks.
-  * @param  husart: pointer to a USART_HandleTypeDef structure that contains
+  * @param  husart pointer to a USART_HandleTypeDef structure that contains
   *                the configuration information for the specified USART module.
   * @retval None
   */
@@ -1639,7 +1637,7 @@
 
 /**
   * @brief  Returns the USART state.
-  * @param  husart: pointer to a USART_HandleTypeDef structure that contains
+  * @param  husart pointer to a USART_HandleTypeDef structure that contains
   *                the configuration information for the specified USART module.
   * @retval HAL state
   */
@@ -1650,7 +1648,7 @@
 
 /**
   * @brief  Return the USART error code
-  * @param  husart : pointer to a USART_HandleTypeDef structure that contains
+  * @param  husart  pointer to a USART_HandleTypeDef structure that contains
   *              the configuration information for the specified USART.
   * @retval USART Error Code
   */
@@ -1665,7 +1663,7 @@
 
 /**
   * @brief  DMA USART transmit process complete callback.
-  * @param  hdma: DMA handle
+  * @param  hdma DMA handle
   * @retval None
   */
 static void USART_DMATransmitCplt(DMA_HandleTypeDef *hdma)
@@ -1697,7 +1695,7 @@
 
 /**
   * @brief DMA USART transmit process half complete callback
-  * @param  hdma: pointer to a DMA_HandleTypeDef structure that contains
+  * @param  hdma pointer to a DMA_HandleTypeDef structure that contains
   *                the configuration information for the specified DMA module.
   * @retval None
   */
@@ -1710,7 +1708,7 @@
 
 /**
   * @brief  DMA USART receive process complete callback.
-  * @param  hdma: DMA handle
+  * @param  hdma DMA handle
   * @retval None
   */
 static void USART_DMAReceiveCplt(DMA_HandleTypeDef *hdma)
@@ -1725,24 +1723,21 @@
     CLEAR_BIT(husart->Instance->CR1, USART_CR1_PEIE);
     CLEAR_BIT(husart->Instance->CR3, USART_CR3_EIE);
 
+    /* Disable the DMA transfer for the Transmit/receiver request by clearing the DMAT/DMAR bit
+       in the USART CR3 register */
+    CLEAR_BIT(husart->Instance->CR3, USART_CR3_DMAR);
+    CLEAR_BIT(husart->Instance->CR3, USART_CR3_DMAT);
+
+    husart->State= HAL_USART_STATE_READY;
+
+    /* The USART state is HAL_USART_STATE_BUSY_RX */
     if(husart->State == HAL_USART_STATE_BUSY_RX)
     {
-      /* Disable the DMA transfer for the Transmit/receiver requests by setting the DMAT/DMAR bit
-         in the USART CR3 register */
-      CLEAR_BIT(husart->Instance->CR3, USART_CR3_DMAR);
-
-      husart->State= HAL_USART_STATE_READY;
       HAL_USART_RxCpltCallback(husart);
     }
     /* The USART state is HAL_USART_STATE_BUSY_TX_RX */
     else
     {
-      /* Disable the DMA transfer for the Transmit/receiver requests by setting the DMAT/DMAR bit
-         in the USART CR3 register */
-      CLEAR_BIT(husart->Instance->CR3, USART_CR3_DMAR);
-      CLEAR_BIT(husart->Instance->CR3, USART_CR3_DMAT);
-
-      husart->State= HAL_USART_STATE_READY;
       HAL_USART_TxRxCpltCallback(husart);
     }
   }
@@ -1763,7 +1758,7 @@
 
 /**
   * @brief DMA USART receive process half complete callback
-  * @param  hdma: pointer to a DMA_HandleTypeDef structure that contains
+  * @param  hdma pointer to a DMA_HandleTypeDef structure that contains
   *                the configuration information for the specified DMA module.
   * @retval None
   */
@@ -1776,7 +1771,7 @@
 
 /**
   * @brief  DMA USART communication error callback.
-  * @param  hdma: DMA handle
+  * @param  hdma DMA handle
   * @retval None
   */
 static void USART_DMAError(DMA_HandleTypeDef *hdma)
@@ -1808,12 +1803,12 @@
 
 /**
   * @brief  This function handles USART Communication Timeout.
-  * @param  husart: pointer to a USART_HandleTypeDef structure that contains
+  * @param  husart pointer to a USART_HandleTypeDef structure that contains
   *                 the configuration information for the specified USART module.
-  * @param  Flag: specifies the USART flag to check.
-  * @param  Status: The new Flag status (SET or RESET).
-  * @param  Tickstart: Tick start value.
-  * @param  Timeout: Timeout duration.
+  * @param  Flag specifies the USART flag to check.
+  * @param  Status The new Flag status (SET or RESET).
+  * @param  Tickstart Tick start value.
+  * @param  Timeout Timeout duration.
   * @retval HAL status
   */
 static HAL_StatusTypeDef USART_WaitOnFlagUntilTimeout(USART_HandleTypeDef *husart, uint32_t Flag, FlagStatus Status, uint32_t Tickstart, uint32_t Timeout)
@@ -1852,7 +1847,7 @@
 
 /**
   * @brief  End ongoing Tx transfer on USART peripheral (following error detection or Transmit completion).
-  * @param  husart: USART handle.
+  * @param  husart USART handle.
   * @retval None
   */
 static void USART_EndTxTransfer(USART_HandleTypeDef *husart)
@@ -1866,7 +1861,7 @@
 
 /**
   * @brief  End ongoing Rx transfer on USART peripheral (following error detection or Reception completion).
-  * @param  husart: USART handle.
+  * @param  husart USART handle.
   * @retval None
   */
 static void USART_EndRxTransfer(USART_HandleTypeDef *husart)
@@ -1970,7 +1965,7 @@
 
 /**
   * @brief  Simplex Send an amount of data in non-blocking mode.
-  * @param  husart: pointer to a USART_HandleTypeDef structure that contains
+  * @param  husart pointer to a USART_HandleTypeDef structure that contains
   *                the configuration information for the specified USART module.
   * @retval HAL status
   * @note   The USART errors are not managed to avoid the overrun error.
@@ -2017,7 +2012,7 @@
 
 /**
   * @brief  Wraps up transmission in non blocking mode.
-  * @param  husart: pointer to a USART_HandleTypeDef structure that contains
+  * @param  husart pointer to a USART_HandleTypeDef structure that contains
   *                the configuration information for the specified USART module.
   * @retval HAL status
   */
@@ -2038,7 +2033,7 @@
 
 /**
   * @brief  Simplex Receive an amount of data in non-blocking mode.
-  * @param  husart: pointer to a USART_HandleTypeDef structure that contains
+  * @param  husart pointer to a USART_HandleTypeDef structure that contains
   *                the configuration information for the specified USART module.
   * @retval HAL status
   */
@@ -2110,7 +2105,7 @@
 
 /**
   * @brief  Full-Duplex Send receive an amount of data in full-duplex mode (non-blocking).
-  * @param  husart: pointer to a USART_HandleTypeDef structure that contains
+  * @param  husart pointer to a USART_HandleTypeDef structure that contains
   *                the configuration information for the specified USART module.
   * @retval HAL status
   */
@@ -2213,7 +2208,7 @@
 
 /**
   * @brief  Configures the USART pferipheral.
-  * @param  husart: pointer to a USART_HandleTypeDef structure that contains
+  * @param  husart pointer to a USART_HandleTypeDef structure that contains
   *                the configuration information for the specified USART module.
   * @retval None
   */