Exemplo n.º 1
0
void UART_ProcessStatus(UART_HandleTypeDef* pUart) {
    /* UART parity error interrupt occurred ------------------------------------*/
    if ((__HAL_UART_GET_IT(pUart, UART_IT_PE) != RESET) &&
        (__HAL_UART_GET_IT_SOURCE(pUart, UART_IT_PE) != RESET))
    {
        __HAL_UART_CLEAR_IT(pUart, UART_CLEAR_PEF);
        pUart->ErrorCode |= HAL_UART_ERROR_PE;
    }
    /* UART frame error interrupt occurred --------------------------------------*/
    if ((__HAL_UART_GET_IT(pUart, UART_IT_FE) != RESET) &&
        (__HAL_UART_GET_IT_SOURCE(pUart, UART_IT_ERR) != RESET))
    {
        __HAL_UART_CLEAR_IT(pUart, UART_CLEAR_FEF);
        pUart->ErrorCode |= HAL_UART_ERROR_FE;
    }
    /* UART noise error interrupt occurred --------------------------------------*/
    if ((__HAL_UART_GET_IT(pUart, UART_IT_NE) != RESET) &&
        (__HAL_UART_GET_IT_SOURCE(pUart, UART_IT_ERR) != RESET))
    {
        __HAL_UART_CLEAR_IT(pUart, UART_CLEAR_NEF);
        pUart->ErrorCode |= HAL_UART_ERROR_NE;
    }
    /* UART Over-Run interrupt occurred -----------------------------------------*/
    if ((__HAL_UART_GET_IT(pUart, UART_IT_ORE) != RESET) &&
        (__HAL_UART_GET_IT_SOURCE(pUart, UART_IT_ERR) != RESET))
    {
        __HAL_UART_CLEAR_IT(pUart, UART_CLEAR_OREF);
        pUart->ErrorCode |= HAL_UART_ERROR_ORE;
    }

    /* Call UART Error Call back function if need be --------------------------*/
    if (pUart->ErrorCode != HAL_UART_ERROR_NONE)
    {
        HAL_UART_ErrorCallback(pUart);
    }

    /* UART Wake Up interrupt occurred ------------------------------------------*/
    if ((__HAL_UART_GET_IT(pUart, UART_IT_WUF) != RESET) &&
        (__HAL_UART_GET_IT_SOURCE(pUart, UART_IT_WUF) != RESET))
    {
        __HAL_UART_CLEAR_IT(pUart, UART_CLEAR_WUF);
        HAL_UARTEx_WakeupCallback(pUart);
    }
}
Exemplo n.º 2
0
/**
  * @brief Handle UART interrupt request.
  * @param huart: UART handle.
  * @retval None
  */
void HAL_UART_IRQHandler(UART_HandleTypeDef *huart)
{
  /* UART parity error interrupt occurred -------------------------------------*/
  if((__HAL_UART_GET_IT(huart, UART_IT_PE) != RESET) && (__HAL_UART_GET_IT_SOURCE(huart, UART_IT_PE) != RESET))
  {
    __HAL_UART_CLEAR_IT(huart, UART_CLEAR_PEF);

    huart->ErrorCode |= HAL_UART_ERROR_PE;
    /* Set the UART state ready to be able to start again the process */
    huart->State = HAL_UART_STATE_READY;
  }

  /* UART frame error interrupt occurred --------------------------------------*/
  if((__HAL_UART_GET_IT(huart, UART_IT_FE) != RESET) && (__HAL_UART_GET_IT_SOURCE(huart, UART_IT_ERR) != RESET))
  {
    __HAL_UART_CLEAR_IT(huart, UART_CLEAR_FEF);

    huart->ErrorCode |= HAL_UART_ERROR_FE;
    /* Set the UART state ready to be able to start again the process */
    huart->State = HAL_UART_STATE_READY;
  }

  /* UART noise error interrupt occurred --------------------------------------*/
  if((__HAL_UART_GET_IT(huart, UART_IT_NE) != RESET) && (__HAL_UART_GET_IT_SOURCE(huart, UART_IT_ERR) != RESET))
  {
    __HAL_UART_CLEAR_IT(huart, UART_CLEAR_NEF);

    huart->ErrorCode |= HAL_UART_ERROR_NE;
    /* Set the UART state ready to be able to start again the process */
    huart->State = HAL_UART_STATE_READY;
  }

  /* UART Over-Run interrupt occurred -----------------------------------------*/
  if((__HAL_UART_GET_IT(huart, UART_IT_ORE) != RESET) && (__HAL_UART_GET_IT_SOURCE(huart, UART_IT_ERR) != RESET))
  {
    __HAL_UART_CLEAR_IT(huart, UART_CLEAR_OREF);

    huart->ErrorCode |= HAL_UART_ERROR_ORE;
    /* Set the UART state ready to be able to start again the process */
    huart->State = HAL_UART_STATE_READY;
  }

   /* Call UART Error Call back function if need be --------------------------*/
  if(huart->ErrorCode != HAL_UART_ERROR_NONE)
  {
    HAL_UART_ErrorCallback(huart);
  }

#if !defined(STM32F030x6) && !defined(STM32F030x8)&& !defined(STM32F070xB)&& !defined(STM32F070x6)&& !defined(STM32F030xC)
  /* UART wakeup from Stop mode interrupt occurred -------------------------------------*/
  if((__HAL_UART_GET_IT(huart, UART_IT_WUF) != RESET) && (__HAL_UART_GET_IT_SOURCE(huart, UART_IT_WUF) != RESET))
  {
    __HAL_UART_CLEAR_IT(huart, UART_CLEAR_WUF);
    /* Set the UART state ready to be able to start again the process */
    huart->State = HAL_UART_STATE_READY;
    HAL_UARTEx_WakeupCallback(huart);
  }
#endif /* !defined(STM32F030x6) && !defined(STM32F030x8)&& !defined(STM32F070xB)&& !defined(STM32F070x6)&& !defined(STM32F030xC) */

  /* UART in mode Receiver ---------------------------------------------------*/
  if((__HAL_UART_GET_IT(huart, UART_IT_RXNE) != RESET) && (__HAL_UART_GET_IT_SOURCE(huart, UART_IT_RXNE) != RESET))
  {
    UART_Receive_IT(huart);
    /* Clear RXNE interrupt flag */
    __HAL_UART_SEND_REQ(huart, UART_RXDATA_FLUSH_REQUEST);
  }


  /* UART in mode Transmitter ------------------------------------------------*/
 if((__HAL_UART_GET_IT(huart, UART_IT_TXE) != RESET) &&(__HAL_UART_GET_IT_SOURCE(huart, UART_IT_TXE) != RESET))
  {
    UART_Transmit_IT(huart);
  }

  /* UART in mode Transmitter (transmission end) -----------------------------*/
 if((__HAL_UART_GET_IT(huart, UART_IT_TC) != RESET) &&(__HAL_UART_GET_IT_SOURCE(huart, UART_IT_TC) != RESET))
  {
    UART_EndTransmit_IT(huart);
  }

}