HAL UART Generic Driver. Функции управления UART.

 


 

HAL_UART_Init

HAL_StatusTypeDef HAL_UART_Init (UART_HandleTypeDef * huart)

Устанавливает конфигурацию UART согласно параметрам, заданным в структуре типа UART_HandleTypeDef.

  • huart – указатель на структуру параметров конфигурации типа UART_HandleTypeDef.

Возвращает результат выполнения, тип HAL_StatusTypeDef:

  • HAL_OK – при успешном выполнении;
  • HAL_ERROR – при ошибке (неправильные аргументы).

Структура параметров конфигурации.

typedef struct
{
USART_TypeDef  *Instance;        // базовый адрес регистров UART
UART_InitTypeDef  Init;             // структура основных параметров UART
uint8_t  *pTxBuffPtr;      // указатель на передающий буфер
uint16_t  TxXferSize;       // количество передаваемых данных
__IO uint16_t  TxXferCount;      // счетчик передаваемых данных
uint8_t  *pRxBuffPtr;      // указатель на приемный буфер
uint16_t  RxXferSize;       // количество принимаемых данных
__IO uint16_t  RxXferCount;      // счетчик полученных данных
DMA_HandleTypeDef  *hdmatx;      // структура параметров DMA для передачи
DMA_HandleTypeDef  *hdmarx;      // структура параметров DMA для приема
HAL_LockTypeDef  Lock;   // блокировка объекта
__IO HAL_UART_StateTypeDef    gState;         // состояние UART
__IO HAL_UART_StateTypeDef    RxState;         // состояние UART
__IO uint32_t                 ErrorCode;        // коды ошибок
}UART_HandleTypeDef;

  • Instance – базовый адрес регистров UART.
  • Init – структура основных параметров UART. Описана ниже.
  • pTxBuffPtr – указатель на буфер передатчика.
  • TxXferSize – количество данных, которое необходимо передать.
  • TxXferCount – счетчик передаваемых данных.
  • pRxBuffPtr – указатель на буфер приемника.
  • RxXferSize – количество данных, которое необходимо принять.
  • RxXferCount – счетчик полученных данных.
  • hdmatx – структура параметров канала ПДП (DMA), который используется для передачи.
  • hdmarx -  – структура параметров канала ПДП (DMA), который используется для приема.
  • Lock - – блокировка объекта. Сообщает системе о том, что UART уже используется. Применяется для предотвращения случайного доступа к занятому ресурсу.
  • gState – структура типа HAL_UART_StateTypeDef. Показывает состояние UART, связанное с прерываниями и передатчиком.
  • RxState – структура типа HAL_UART_StateTypeDef. Показывает состояние UART, связанное с приемником.
  • ErrorCode – коды ошибок:
    • HAL_UART_ERROR_NONE – без ошибок;
    • HAL_UART_ERROR_PE – ошибка целостности данных;
    • HAL_UART_ERROR_NE – выделен шум;
    • HAL_UART_ERROR_FE – ошибка фрагментации;
    • HAL_UART_ERROR_ORE – ошибка переполнения;
    • HAL_UART_ERROR_DMA – ошибка DMA.

Структура параметров UART.

typedef struct
{
uint32_t BaudRate;                  // скорость обмена
uint32_t WordLength;                // разрядность данных
uint32_t StopBits;                  // количество стоп-битов
uint32_t Parity;                    // режим контроля четности
uint32_t Mode;                      // разрешает/запрещает работу приемника и передатчика
uint32_t HwFlowCtl;                 // разрешает/запрещает аппаратный контроль потоком данных
uint32_t OverSampling;              // управляет числом выборок сигнала RX
}UART_InitTypeDef;

  • BaudRate – скорость передачи и приема данных. Вычисляется по формуле: IntegerDivider = ((PCLKx) / (16 * (huart- >Init.BaudRate))), FractionalDivider = ((IntegerDivider - ((uint32_t) IntegerDivider)) * 16) + 0.5
  • WordLength – определяет разрядность данных:
    • UART_WORDLENGTH_8B – 8 бит;
    • UART_WORDLENGTH_9B – 9 бит.
  • StopBits – задает число стоп-битов:
    • UART_STOPBITS_1 – 1 стоп-бит;
    • UART_STOPBITS_2 – 2 стоп-бита.
  • Parity – определяет режим контроля целостности данных:
    • UART_PARITY_NONE – без контроля;
    • UART_PARITY_EVEN – проверка по четности;
    • UART_PARITY_ODD – проверка по нечетности.
  • Mode – разрешает/запрещает работу приемника и передатчика.
    • UART_MODE_RX – только приемник;
    • UART_MODE_TX – только передатчик;
    • UART_MODE_TX_RX – и приемник и передатчик.
  • HwFlowCtl – режим аппаратного контроля потоком данных:
    • UART_HWCONTROL_NONE – отключен;
    • UART_HWCONTROL_RTS – используется сигнал RTS;
    • UART_HWCONTROL_CTS – используется сигнал CTS;
    • UART_HWCONTROL_RTS_CTS – используются оба сигнала.
  • OverSampling – определяет число выборок сигнала RX:
    • UART_OVERSAMPLING_16 – 16 выборок.

Структура состояния UART.

typedef enum
{
HAL_UART_STATE_RESET             = 0x00U,    // не инициализирован
HAL_UART_STATE_READY             = 0x20U,    // инициализирован и готов к использованию
HAL_UART_STATE_BUSY              = 0x24U,    // занят
HAL_UART_STATE_BUSY_TX           = 0x21U,    // занят передатчик
HAL_UART_STATE_BUSY_RX           = 0x22U,    // занят приемник
HAL_UART_STATE_BUSY_TX_RX        = 0x23U,    // заняты передатчик и приемник
HAL_UART_STATE_TIMEOUT           = 0xA0U,    // тайм-аут, закончилось время на обработку
HAL_UART_STATE_ERROR             = 0xE0U     // ошибка
}HAL_UART_StateTypeDef;

/* инициализация UART1 */
UART_HandleTypeDef huart1;
huart1.Instance = USART1;
huart1.Init.BaudRate = 9600;
huart1.Init.WordLength = UART_WORDLENGTH_8B;
huart1.Init.StopBits = UART_STOPBITS_1;
huart1.Init.Parity = UART_PARITY_NONE;
huart1.Init.Mode = UART_MODE_TX_RX;
huart1.Init.HwFlowCtl = UART_HWCONTROL_NONE;
huart1.Init.OverSampling = UART_OVERSAMPLING_16;
HAL_UART_Init(&huart1);

 

HAL_HalfDuplex_Init

HAL_StatusTypeDef HAL_HalfDuplex_Init (UART_HandleTypeDef * huart)

Устанавливает конфигурацию UART в полудуплексном режиме согласно параметрам, заданным в структуре типа UART_HandleTypeDef.

  • huart – указатель на структуру параметров конфигурации типа UART_HandleTypeDef.

Возвращает результат выполнения, тип HAL_StatusTypeDef:

  • HAL_OK – при успешном выполнении;
  • HAL_ERROR – при ошибке (неправильные аргументы).

 

HAL_UART_DeInit

HAL_StatusTypeDef HAL_UART_DeInit (UART_HandleTypeDef * huart)

Деинициализирует UART. Переводит его в режим, как после сброса.

  • huart – указатель на структуру параметров конфигурации типа UART_HandleTypeDef.

Возвращает результат выполнения, тип HAL_StatusTypeDef:

  • HAL_OK – при успешном выполнении;
  • HAL_ERROR – при ошибке (неправильные аргументы).

 

HAL_UART_MspInit

void HAL_UART_MspInit (UART_HandleTypeDef * huart)

MSP callback функция инициализации UART. Функция вызывается при инициализации UART. Ее можно использовать, чтобы добавить свои установки. Тело функции в файле stm32f1xx_hal_msp.c.

  • huart – указатель на структуру параметров конфигурации типа UART_HandleTypeDef.

 

HAL_UART_MspDeInit

void HAL_UART_MspDeInit (UART_HandleTypeDef * huart)

MSP callback функция деинициализации UART. Функция вызывается при деинициализации UART. Ее можно использовать, чтобы добавить свои установки. Тело функции в файле stm32f1xx_hal_msp.c.

  • huart – указатель на структуру параметров конфигурации типа UART_HandleTypeDef.

 

HAL_UART_Transmit

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

Передает пакет данных в блокирующем режиме.

  • huart – указатель на структуру параметров конфигурации типа UART_HandleTypeDef.
  • pData – указатель на буфер передаваемых данных.
  • Size – количество данных, которые надо передать.
  • Timeout – тайм-аут операции в мс.

Возвращает результат выполнения, тип HAL_StatusTypeDef:

  • HAL_OK – при успешном выполнении;
  • HAL_ERROR – при ошибке (неправильные аргументы);
  • HAL_TIMEOUT – ошибка тайм-аута;
  • HAL_BUSY – занят.

uint8_t str[]= "UART transmitting data\r\n";
HAL_UART_Transmit(&huart1, str, 24, 50);

 

HAL_UART_Receive

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

Принимает пакет данных в блокирующем режиме.

  • huart – указатель на структуру параметров конфигурации типа UART_HandleTypeDef.
  • pData – указатель на буфер передаваемых данных.
  • Size – количество данных, которые надо передать.
  • Timeout – тайм-аут операции в мс.

Возвращает результат выполнения, тип HAL_StatusTypeDef:

  • HAL_OK – при успешном выполнении;
  • HAL_ERROR – при ошибке (неправильные аргументы);
  • HAL_TIMEOUT – ошибка тайм-аута;
  • HAL_BUSY – занят.

uint8_t str[10];
HAL_UART_Receive(&huart1, str, 10, 50);

 

HAL_UART_Transmit_IT

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

Передает пакет данных с использованием прерываний.

  • huart – указатель на структуру параметров конфигурации типа UART_HandleTypeDef.
  • pData – указатель на буфер передаваемых данных.
  • Size – количество данных, которые надо передать.

Возвращает результат выполнения, тип HAL_StatusTypeDef:

  • HAL_OK – при успешном выполнении;
  • HAL_ERROR – при ошибке (неправильные аргументы);
  • HAL_BUSY – занят.

uint8_t str[]= "UART transmitting data\r\n";
HAL_UART_Transmit_IT(&huart1, str, 24);

 

HAL_UART_Receive_IT

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

Принимает пакет данных с использованием прерываний.

  • huart – указатель на структуру параметров конфигурации типа UART_HandleTypeDef.
  • pData – указатель на буфер передаваемых данных.
  • Size – количество данных, которые надо передать.

Возвращает результат выполнения, тип HAL_StatusTypeDef:

  • HAL_OK – при успешном выполнении;
  • HAL_ERROR – при ошибке (неправильные аргументы);
  • HAL_BUSY – занят.

uint8_t str[10];
HAL_UART_Receive_IT(&huart1, str, 10);

 

HAL_UART_Abort

HAL_StatusTypeDef HAL_UART_Abort (UART_HandleTypeDef * huart)

Прерывание передачи и приема данных в блокирующем режиме. Функция останавливает процесс передачи и приема данных в любом режиме (блокирующем, с прерываниями или DMA), освобождает UART для выполнения новых операций. Функция блокирует выполнение программы. При выходе из нее все операции обмена остановлены, UART может быть использован для новых операций.

  • huart – указатель на структуру параметров конфигурации типа UART_HandleTypeDef.

Возвращает результат выполнения, тип HAL_StatusTypeDef:

  • HAL_OK – при успешном выполнении.
  • HAL_ERROR – при ошибке (неправильные аргументы).

 

HAL_UART_AbortTransmit

HAL_StatusTypeDef HAL_UART_AbortTransmit (UART_HandleTypeDef * huart)

Прерывание передачи данных в блокирующем режиме. Функция останавливает процесс передачи данных в любом режиме (блокирующем, с прерываниями или DMA), освобождает передающую часть UART для выполнения новых операций. Функция блокирует выполнение программы. При выходе из нее передача остановлена, UART может быть использован для новых операций.

  • huart – указатель на структуру параметров конфигурации типа UART_HandleTypeDef.

Возвращает результат выполнения, тип HAL_StatusTypeDef:

  • HAL_OK – при успешном выполнении.
  • HAL_ERROR – при ошибке (неправильные аргументы).

 

HAL_UART_AbortReceive

HAL_StatusTypeDef HAL_UART_AbortReceive (UART_HandleTypeDef * huart)

Прерывание приема данных в блокирующем режиме. Функция останавливает процесс приема данных в любом режиме (блокирующем, с прерываниями или DMA), освобождает приемную часть UART для выполнения новых операций. Функция блокирует выполнение программы. При выходе из нее прием остановлен, UART может быть использован для новых операций.

  • huart – указатель на структуру параметров конфигурации типа UART_HandleTypeDef.

Возвращает результат выполнения, тип HAL_StatusTypeDef:

  • HAL_OK – при успешном выполнении.
  • HAL_ERROR – при ошибке (неправильные аргументы).

 

HAL_UART_Abort_IT

HAL_StatusTypeDef HAL_UART_Abort_IT (UART_HandleTypeDef * huart)

Прерывание передачи и приема данных с использованием прерываний. Функция останавливает процесс передачи и приема данных в любом режиме (блокирующем, с прерываниями или DMA), освобождает UART для выполнения новых операций. Функция не блокирует выполнение программы. Выход из нее не означает, что операции UART остановлены. О завершении освобождения UART индицирует вызов Callback-функции HAL_UART_AbortCpltCallback.

  • huart – указатель на структуру параметров конфигурации типа UART_HandleTypeDef.

Возвращает результат выполнения, тип HAL_StatusTypeDef:

  • HAL_OK – при успешном выполнении.
  • HAL_ERROR – при ошибке (неправильные аргументы).

 

HAL_UART_AbortTransmit_IT

HAL_StatusTypeDef HAL_UART_AbortTransmit_IT (UART_HandleTypeDef * huart)

Прерывание передачи данных с использованием прерываний. Функция останавливает процесс передачи данных в любом режиме (блокирующем, с прерываниями или DMA), освобождает UART для выполнения новых операций. Функция не блокирует выполнение программы. Выход из нее не означает, что операции UART остановлены. О завершении освобождения UART индицирует вызов Callback-функции HAL_UART_AbortTransmitCpltCallback.

  • huart – указатель на структуру параметров конфигурации типа UART_HandleTypeDef.

Возвращает результат выполнения, тип HAL_StatusTypeDef:

  • HAL_OK – при успешном выполнении.
  • HAL_ERROR – при ошибке (неправильные аргументы).

 

HAL_UART_AbortReceive_IT

HAL_StatusTypeDef HAL_UART_AbortReceive_IT (UART_HandleTypeDef * huart)

Прерывание приема данных с использованием прерываний. Функция останавливает процесс приема данных в любом режиме (блокирующем, с прерываниями или DMA), освобождает UART для выполнения новых операций. Функция не блокирует выполнение программы. Выход из нее не означает, что операции UART остановлены. О завершении освобождения UART индицирует вызов Callback-функции HAL_UART_AbortReceiveCpltCallback.

  • huart – указатель на структуру параметров конфигурации типа UART_HandleTypeDef.

Возвращает результат выполнения, тип HAL_StatusTypeDef:

  • HAL_OK – при успешном выполнении.
  • HAL_ERROR – при ошибке (неправильные аргументы).

 

HAL_UART_IRQHandler

void HAL_UART_IRQHandler (UART_HandleTypeDef * huart)

Завершает обработку прерывания UART, сбрасывает ошибки UART, формирует данные о состоянии UART.

  • huart – указатель на структуру параметров конфигурации типа UART_HandleTypeDef.

 

HAL_UART_TxCpltCallback

void HAL_UART_TxCpltCallback (UART_HandleTypeDef * huart)

Callback-функция завершения передачи данных.

  • huart – указатель на структуру параметров конфигурации типа UART_HandleTypeDef.

 

HAL_UART_TxHalfCpltCallback

void HAL_UART_TxHalfCpltCallback (UART_HandleTypeDef * huart)

Callback-функция завершения передачи данных в полудуплексном режиме.

  • huart – указатель на структуру параметров конфигурации типа UART_HandleTypeDef.

 

HAL_UART_RxCpltCallback

void HAL_UART_RxCpltCallback (UART_HandleTypeDef * huart)

Callback-функция завершения приема данных.

  • huart – указатель на структуру параметров конфигурации типа UART_HandleTypeDef.

 

HAL_UART_RxHalfCpltCallback

void HAL_UART_RxHalfCpltCallback (UART_HandleTypeDef * huart)

Callback-функция завершения приема данных в полудуплексном режиме.

  • huart – указатель на структуру параметров конфигурации типа UART_HandleTypeDef.

 

HAL_UART_ErrorCallback

void HAL_UART_ErrorCallback (UART_HandleTypeDef * huart)

Callback-функция ошибок UART.

  • huart – указатель на структуру параметров конфигурации типа UART_HandleTypeDef.

 

HAL_UART_AbortCpltCallback

void HAL_UART_AbortCpltCallback (UART_HandleTypeDef * huart)

Callback-функция завершения принудительной остановки операций UART.

  • huart – указатель на структуру параметров конфигурации типа UART_HandleTypeDef.

 

HAL_UART_AbortTransmitCpltCallback

void HAL_UART_AbortTransmitCpltCallback (UART_HandleTypeDef * huart)

Callback-функция завершения принудительной остановки передачи данных UART.

  • huart – указатель на структуру параметров конфигурации типа UART_HandleTypeDef.

 

HAL_UART_AbortReceiveCpltCallback

void HAL_UART_AbortReceiveCpltCallback (UART_HandleTypeDef * huart)

Callback-функция завершения принудительной остановки приема данных UART.

  • huart – указатель на структуру параметров конфигурации типа UART_HandleTypeDef.

 

HAL_HalfDuplex_EnableTransmitter

HAL_StatusTypeDef HAL_HalfDuplex_EnableTransmitter (UART_HandleTypeDef * huart)

В полудуплексном режиме переводит UART в режим передачи (разрешает передачу, запрещает прием).

  • huart – указатель на структуру параметров конфигурации типа UART_HandleTypeDef.

Возвращает результат выполнения, тип HAL_StatusTypeDef:

  • HAL_OK – при успешном выполнении.
  • HAL_ERROR – при ошибке (неправильные аргументы).

 

HAL_HalfDuplex_EnableReceiver

HAL_StatusTypeDef HAL_HalfDuplex_EnableReceiver (UART_HandleTypeDef * huart)

В полудуплексном режиме переводит UART в режим приема (разрешает прием, запрещает передачу).

  • huart – указатель на структуру параметров конфигурации типа UART_HandleTypeDef.

Возвращает результат выполнения, тип HAL_StatusTypeDef:

  • HAL_OK – при успешном выполнении.
  • HAL_ERROR – при ошибке (неправильные аргументы).

 

HAL_UART_GetState

HAL_UART_StateTypeDef HAL_UART_GetState (UART_HandleTypeDef * huart)

Возвращает состояние UART.

  • huart – указатель на структуру параметров конфигурации типа UART_HandleTypeDef.

Возвращает результат выполнения, тип HAL_UART_StateTypeDef.

 

HAL_UART_GetError

uint32_t HAL_UART_GetError (UART_HandleTypeDef * huart)

Возвращает код ошибки UART.

  • huart – указатель на структуру параметров конфигурации типа UART_HandleTypeDef.

Возвращает код ошибки:

  • HAL_UART_ERROR_NONE – без ошибок;
  • HAL_UART_ERROR_PE – ошибка целостности данных;
  • HAL_UART_ERROR_NE – выделен шум;
  • HAL_UART_ERROR_FE – ошибка фрагментации;
  • HAL_UART_ERROR_ORE – ошибка переполнения;
  • HAL_UART_ERROR_DMA – ошибка DMA.