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_StatusTypeDef HAL_HalfDuplex_Init (UART_HandleTypeDef * huart)
Устанавливает конфигурацию UART в полудуплексном режиме согласно параметрам, заданным в структуре типа UART_HandleTypeDef.
- huart – указатель на структуру параметров конфигурации типа UART_HandleTypeDef.
Возвращает результат выполнения, тип HAL_StatusTypeDef:
- HAL_OK – при успешном выполнении;
- HAL_ERROR – при ошибке (неправильные аргументы).
HAL_StatusTypeDef HAL_UART_DeInit (UART_HandleTypeDef * huart)
Деинициализирует UART. Переводит его в режим, как после сброса.
- huart – указатель на структуру параметров конфигурации типа UART_HandleTypeDef.
Возвращает результат выполнения, тип HAL_StatusTypeDef:
- HAL_OK – при успешном выполнении;
- HAL_ERROR – при ошибке (неправильные аргументы).
void HAL_UART_MspInit (UART_HandleTypeDef * huart)
MSP callback функция инициализации UART. Функция вызывается при инициализации UART. Ее можно использовать, чтобы добавить свои установки. Тело функции в файле stm32f1xx_hal_msp.c.
- huart – указатель на структуру параметров конфигурации типа UART_HandleTypeDef.
void HAL_UART_MspDeInit (UART_HandleTypeDef * huart)
MSP callback функция деинициализации UART. Функция вызывается при деинициализации UART. Ее можно использовать, чтобы добавить свои установки. Тело функции в файле stm32f1xx_hal_msp.c.
- huart – указатель на структуру параметров конфигурации типа UART_HandleTypeDef.
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_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_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_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_StatusTypeDef HAL_UART_Abort (UART_HandleTypeDef * huart)
Прерывание передачи и приема данных в блокирующем режиме. Функция останавливает процесс передачи и приема данных в любом режиме (блокирующем, с прерываниями или DMA), освобождает UART для выполнения новых операций. Функция блокирует выполнение программы. При выходе из нее все операции обмена остановлены, UART может быть использован для новых операций.
- huart – указатель на структуру параметров конфигурации типа UART_HandleTypeDef.
Возвращает результат выполнения, тип HAL_StatusTypeDef:
- HAL_OK – при успешном выполнении.
- HAL_ERROR – при ошибке (неправильные аргументы).
HAL_StatusTypeDef HAL_UART_AbortTransmit (UART_HandleTypeDef * huart)
Прерывание передачи данных в блокирующем режиме. Функция останавливает процесс передачи данных в любом режиме (блокирующем, с прерываниями или DMA), освобождает передающую часть UART для выполнения новых операций. Функция блокирует выполнение программы. При выходе из нее передача остановлена, UART может быть использован для новых операций.
- huart – указатель на структуру параметров конфигурации типа UART_HandleTypeDef.
Возвращает результат выполнения, тип HAL_StatusTypeDef:
- HAL_OK – при успешном выполнении.
- HAL_ERROR – при ошибке (неправильные аргументы).
HAL_StatusTypeDef HAL_UART_AbortReceive (UART_HandleTypeDef * huart)
Прерывание приема данных в блокирующем режиме. Функция останавливает процесс приема данных в любом режиме (блокирующем, с прерываниями или DMA), освобождает приемную часть UART для выполнения новых операций. Функция блокирует выполнение программы. При выходе из нее прием остановлен, UART может быть использован для новых операций.
- huart – указатель на структуру параметров конфигурации типа UART_HandleTypeDef.
Возвращает результат выполнения, тип HAL_StatusTypeDef:
- HAL_OK – при успешном выполнении.
- HAL_ERROR – при ошибке (неправильные аргументы).
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_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_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 – при ошибке (неправильные аргументы).
void HAL_UART_IRQHandler (UART_HandleTypeDef * huart)
Завершает обработку прерывания UART, сбрасывает ошибки UART, формирует данные о состоянии UART.
- huart – указатель на структуру параметров конфигурации типа UART_HandleTypeDef.
void HAL_UART_TxCpltCallback (UART_HandleTypeDef * huart)
Callback-функция завершения передачи данных.
- huart – указатель на структуру параметров конфигурации типа UART_HandleTypeDef.
void HAL_UART_TxHalfCpltCallback (UART_HandleTypeDef * huart)
Callback-функция завершения передачи данных в полудуплексном режиме.
- huart – указатель на структуру параметров конфигурации типа UART_HandleTypeDef.
void HAL_UART_RxCpltCallback (UART_HandleTypeDef * huart)
Callback-функция завершения приема данных.
- huart – указатель на структуру параметров конфигурации типа UART_HandleTypeDef.
void HAL_UART_RxHalfCpltCallback (UART_HandleTypeDef * huart)
Callback-функция завершения приема данных в полудуплексном режиме.
- huart – указатель на структуру параметров конфигурации типа UART_HandleTypeDef.
void HAL_UART_ErrorCallback (UART_HandleTypeDef * huart)
Callback-функция ошибок UART.
- huart – указатель на структуру параметров конфигурации типа UART_HandleTypeDef.
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_StatusTypeDef HAL_HalfDuplex_EnableReceiver (UART_HandleTypeDef * huart)
В полудуплексном режиме переводит UART в режим приема (разрешает прием, запрещает передачу).
- huart – указатель на структуру параметров конфигурации типа UART_HandleTypeDef.
Возвращает результат выполнения, тип HAL_StatusTypeDef:
- HAL_OK – при успешном выполнении.
- HAL_ERROR – при ошибке (неправильные аргументы).
HAL_UART_StateTypeDef HAL_UART_GetState (UART_HandleTypeDef * huart)
Возвращает состояние UART.
- huart – указатель на структуру параметров конфигурации типа UART_HandleTypeDef.
Возвращает результат выполнения, тип HAL_UART_StateTypeDef.
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.