STM32-HAL library-UART learning

 

Library Functions

  Send data in blocking mode

    HAL_StatusTypeDef   HAL_UART_Transmit(UART_HandleTypeDef *huart, uint8_t *pData, uint16_t Size, uint32_t Timeout)

  Receive data in blocking mode

    HAL_StatusTypeDef   HAL_UART_Receive(UART_HandleTypeDef *huart, uint8_t *pData, uint16_t Size, uint32_t Timeout)

  Send data in non-blocking mode

    HAL_StatusTypeDef   HAL_UART_Transmit_IT(UART_HandleTypeDef *huart, uint8_t *pData, uint16_t Size)

  Receive data in non-blocking mode

    HAL_StatusTypeDef   HAL_UART_Receive_IT(UART_HandleTypeDef *huart, uint8_t *pData, uint16_t Size)

  Send data in DMA mode

    HAL_StatusTypeDef   HAL_UART_Transmit_DMA(UART_HandleTypeDef *huart, uint8_t *pData, uint16_t Size)

  Receive data in DMA mode

    HAL_StatusTypeDef   HAL_UART_Receive_DMA(UART_HandleTypeDef *huart, uint8_t *pData, uint16_t Size)

application

  The following uses UART1 as an example

  printf redirect

    int fputc(int ch, FILE *f)

    {

      uint8_t   temp[1] = {ch};

      HAL_UART_Transmit(&huart1, temp, 1, 2);

      return ch;

    }

  Non-blocking mode

    Need to open serial interrupt in STM32CubeMX (USART1-> NVIC Settings-> USART1 global interrupt-> Enable)

    Set buffer in USER CODE BEGIN PV

      uint8_t aRxBuffer [1]; // used to receive data sent by serial port

    Open serial interrupt in USER CODE BEGIN 2

      HAL_UART_Receive_IT (& huart1, aRxBuffer, 1); // Receive the data from serial port 1, store it in the buffer, the receive length is 1

    Set callback function in USER CODE BEGIN 4

      void HAL_UART_RxCpltCallback(UART_HandleTypeDef *huart)

      {

        if (huart-> Instance == USART1) // determine which serial port triggered the interrupt

        {// Callback application code}

       }

    

 

Guess you like

Origin www.cnblogs.com/qu-yang/p/12676103.html