STM32_General 1.0
Библиотеки для периферии STM32
Loading...
Searching...
No Matches
general_uart.h
Go to the documentation of this file.
1/**
2**************************************************************************
3* @file general_uart.h
4* @brief Заголовочный файл для модуля инициализации UART.
5**************************************************************************
6* @defgroup GENERAL_UART UART Tools
7* @ingroup STM32_GENERAL
8* @brief Функции и макросы для удобной работы с UART.
9* @details
10Модуль предоставляет функции для базовой инициализации UART
11
12
13@par Пример использования:
14@code
15// Структура настроек UART
16UART_SettingsTypeDef uart2Settings;
17
18void UART2_Init(void)
19{
20 // Настройка UART2 с 115200 бод, 8 бит, 1 стоп-бит, без паритета
21 uart2Settings.huart.Instance = USART2;
22 uart2Settings.huart.Init.BaudRate = 115200;
23 uart2Settings.huart.Init.WordLength = UART_WORDLENGTH_8B;
24 uart2Settings.huart.Init.StopBits = UART_STOPBITS_1;
25 uart2Settings.huart.Init.Parity = UART_PARITY_NONE;
26 uart2Settings.huart.Init.Mode = UART_MODE_TX_RX;
27 uart2Settings.huart.Init.HwFlowCtl = UART_HWCONTROL_NONE;
28 uart2Settings.huart.Init.OverSampling = UART_OVERSAMPLING_16;
29
30 // Настройка GPIO
31 uart2Settings.GPIOx = GPIOA;
32 uart2Settings.GPIO_PIN_TX = GPIO_PIN_2;
33 uart2Settings.GPIO_PIN_RX = GPIO_PIN_3;
34
35 // DMA не используется в этом примере
36 uart2Settings.DMAChannel = NULL;
37 uart2Settings.DMA_CHANNEL_X = 0;
38
39 // Инициализация UART
40 if(UART_Base_Init(&uart2Settings) != HAL_OK)
41 {
42 // Обработка ошибки
43 Error_Handler();
44 }
45}
46@endcode
47
48* @note Требуется подключение модуля UART в библиотеке HAL
49@code
50#define HAL_UART_MODULE_ENABLED
51@endcode
52* @{
53*************************************************************************/
54#ifndef __UART_GENERAL_H_
55#define __UART_GENERAL_H_
56
57/////////////////////////////////////////////////////////////////////
58/////////////////////////---USER SETTINGS---/////////////////////////
59/**
60 * @addtogroup UART_INIT UART Init defines
61 * @ingroup GENERAL_UART
62 * @ingroup GENERAL_CONFIGS Конфигурации STM32 General
63 * @brief Настройка UART
64 * @{
65 */
66#define HAL_UART_MODULE_ENABLED ///< Включение HAL UART
67
68#define USE_USART1 ///< Включить USART1 в @ref UART_MspInit
69#define USE_USART2 ///< Включить USART2 в @ref UART_MspInit
70#define USE_USART3 ///< Включить USART3 в @ref UART_MspInit
71#define USE_UART4 ///< Включить UART4 в @ref UART_MspInit
72#define USE_UART5 ///< Включить UART5 в @ref UART_MspInit
73#define USE_USART6 ///< Включить USART6 в @ref UART_MspInit
74/** UART_INIT
75 * @}
76 */
77/////////////////////////---USER SETTINGS---/////////////////////////
78#include "mylibs_defs.h"
79
80
81
82/////////////////////////////////////////////////////////////////////
83////////////////////////////---DEFINES---////////////////////////////
84
85
86
87////////////////////////////---DEFINES---////////////////////////////
88
89
90/////////////////////////////////////////////////////////////////////
91///////////////////////---STRUCTURES & ENUMS---//////////////////////
92/**
93 * @brief Структура настроек UART
94 * @details Содержит все необходимые параметры для инициализации UART,
95 * включая GPIO и DMA.
96 */
97typedef struct
98{
99 UART_HandleTypeDef huart; ///< HAL handle UART
100
101 GPIO_TypeDef *GPIOx; ///< Порт для UART
102 uint16_t GPIO_PIN_RX; ///< Пин приема
103 uint16_t GPIO_PIN_TX; ///< Пин передачи
104
105 DMA_Stream_TypeDef *DMAChannel; ///< Канал DMA (NULL если не нужен)
106 uint32_t DMA_CHANNEL_X; ///< Номер канала DMA (0 если не нужен)
107
109
110///////////////////////---STRUCTURES & ENUMS---//////////////////////
111
112
113/////////////////////////////////////////////////////////////////////
114///////////////////////////---FUNCTIONS---///////////////////////////
115
116/* Инициализация UART с использованием структуры настроек */
117HAL_StatusTypeDef UART_Base_Init(UART_SettingsTypeDef *suart);
118
119/* Проверка корректности структуры настроек UART */
120HAL_StatusTypeDef UART_Check_Init_Struct(UART_SettingsTypeDef *suart);
121
122/* Инициализация тактирования и прерываний для выбранного UART */
123void UART_MspInit(UART_HandleTypeDef *huart);
124
125/* Деинициализация тактирования и прерываний для выбранного UART */
126void UART_MspDeInit(UART_HandleTypeDef *huart);
127
128
129/**
130 * @cond UART_INTERNAL
131 */
132
133/* Настройка GPIO для UART */
134void UART_GPIO_Init(GPIO_TypeDef *GPIOx, uint16_t GPIO_PIN_RX, uint16_t GPIO_PIN_TX);
135
136/* Настройка DMA для UART */
137void UART_DMA_Init(UART_HandleTypeDef *huart, DMA_HandleTypeDef *hdma_rx, DMA_Stream_TypeDef *DMAChannel, uint32_t DMA_CHANNEL_X);
138
139#ifndef __USER_LINKDMA
140/**
141 * @brief Аналог HAL макроса для привязки DMA к UART.
142 * @note @ref __HAL_LINKDMA.
143 */
144#define __USER_LINKDMA(__HANDLE__, __PPP_DMA_FIELD__, __DMA_HANDLE__) \
145do{ \
146(__HANDLE__)->__PPP_DMA_FIELD__ = (__DMA_HANDLE__); \
147(__DMA_HANDLE__)->Parent = (__HANDLE__);} while(0U)
148#endif
149
150/** @endcond */
151///////////////////////////---FUNCTIONS---///////////////////////////
152
153#endif // __UART_GENERAL_H_
154
155/** GENERAL_UART
156 * @}
157 */
void UART_GPIO_Init(GPIO_TypeDef *GPIOx, uint16_t GPIO_PIN_RX, uint16_t GPIO_PIN_TX)
Инициализация GPIO для UART.
void UART_DMA_Init(UART_HandleTypeDef *huart, DMA_HandleTypeDef *hdma_rx, DMA_Stream_TypeDef *DMAChannel, uint32_t DMA_CHANNEL_X)
Инициализация DMA для UART.
HAL_StatusTypeDef UART_Check_Init_Struct(UART_SettingsTypeDef *suart)
Проверка корректности структуры инициализации UART.
void UART_MspDeInit(UART_HandleTypeDef *huart)
Деинициализация тактирования и прерываний UART.
void UART_MspInit(UART_HandleTypeDef *huart)
Настройка тактирования и прерываний UART.
HAL_StatusTypeDef UART_Base_Init(UART_SettingsTypeDef *suart)
Инициализация UART с помощью структуры UART_SettingsTypeDef.
Структура настроек UART.
uint32_t DMA_CHANNEL_X
Номер канала DMA (0 если не нужен)
DMA_Stream_TypeDef * DMAChannel
Канал DMA (NULL если не нужен)
uint16_t GPIO_PIN_RX
Пин приема
uint16_t GPIO_PIN_TX
Пин передачи
UART_HandleTypeDef huart
HAL handle UART.
GPIO_TypeDef * GPIOx
Порт для UART.