MyLibs 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 MY_LIBS_UART UART Tools
7* @ingroup MYLIBS_PERIPHERAL
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 Init defines
61 * @ingroup MY_LIBS_UART
62 * @brief Настройка UART
63 * @{
64 */
65#define HAL_UART_MODULE_ENABLED ///< Включение HAL UART
66
67#define USE_USART1 ///< Включить USART1 в @ref UART_MspInit
68#define USE_USART2 ///< Включить USART2 в @ref UART_MspInit
69#define USE_USART3 ///< Включить USART3 в @ref UART_MspInit
70#define USE_UART4 ///< Включить UART4 в @ref UART_MspInit
71#define USE_UART5 ///< Включить UART5 в @ref UART_MspInit
72#define USE_USART6 ///< Включить USART6 в @ref UART_MspInit
73/** UART_INIT
74 * @}
75 */
76/////////////////////////---USER SETTINGS---/////////////////////////
77#include "mylibs_defs.h"
78
79
80
81/////////////////////////////////////////////////////////////////////
82////////////////////////////---DEFINES---////////////////////////////
83
84
85
86////////////////////////////---DEFINES---////////////////////////////
87
88
89/////////////////////////////////////////////////////////////////////
90///////////////////////---STRUCTURES & ENUMS---//////////////////////
91/**
92 * @brief Структура настроек UART
93 * @details Содержит все необходимые параметры для инициализации UART,
94 * включая GPIO и DMA.
95 */
96typedef struct
97{
98 UART_HandleTypeDef huart; ///< HAL handle UART
99
100 GPIO_TypeDef *GPIOx; ///< Порт для UART
101 uint16_t GPIO_PIN_RX; ///< Пин приема
102 uint16_t GPIO_PIN_TX; ///< Пин передачи
103
104 DMA_Stream_TypeDef *DMAChannel; ///< Канал DMA (NULL если не нужен)
105 uint32_t DMA_CHANNEL_X; ///< Номер канала DMA (0 если не нужен)
106
108
109///////////////////////---STRUCTURES & ENUMS---//////////////////////
110
111
112/////////////////////////////////////////////////////////////////////
113///////////////////////////---FUNCTIONS---///////////////////////////
114
115/* Инициализация UART с использованием структуры настроек */
116HAL_StatusTypeDef UART_Base_Init(UART_SettingsTypeDef *suart);
117
118/* Проверка корректности структуры настроек UART */
119HAL_StatusTypeDef UART_Check_Init_Struct(UART_SettingsTypeDef *suart);
120
121/* Инициализация тактирования и прерываний для выбранного UART */
122void UART_MspInit(UART_HandleTypeDef *huart);
123
124/* Деинициализация тактирования и прерываний для выбранного UART */
125void UART_MspDeInit(UART_HandleTypeDef *huart);
126
127
128/**
129 * @cond UART_INTERNAL
130 */
131
132/* Настройка GPIO для UART */
133void UART_GPIO_Init(GPIO_TypeDef *GPIOx, uint16_t GPIO_PIN_RX, uint16_t GPIO_PIN_TX);
134
135/* Настройка DMA для UART */
136void UART_DMA_Init(UART_HandleTypeDef *huart, DMA_HandleTypeDef *hdma_rx, DMA_Stream_TypeDef *DMAChannel, uint32_t DMA_CHANNEL_X);
137
138#ifndef __USER_LINKDMA
139/**
140 * @brief Аналог HAL макроса для привязки DMA к UART.
141 * @note @ref __HAL_LINKDMA.
142 */
143#define __USER_LINKDMA(__HANDLE__, __PPP_DMA_FIELD__, __DMA_HANDLE__) \
144do{ \
145(__HANDLE__)->__PPP_DMA_FIELD__ = (__DMA_HANDLE__); \
146(__DMA_HANDLE__)->Parent = (__HANDLE__);} while(0U)
147#endif
148
149/** @endcond */
150///////////////////////////---FUNCTIONS---///////////////////////////
151
152#endif // __UART_GENERAL_H_
153
154/** MY_LIBS_UART
155 * @}
156 */
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.
Заголочный файл для дефайнов библиотеки MyLibsGeneral.
Структура настроек 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.