108 lines
4.6 KiB
C
108 lines
4.6 KiB
C
/*********************************UART**************************************
|
||
Данный файл содержит объявления базовых функции и дефайны для инициализации
|
||
UART.
|
||
***************************************************************************/
|
||
#ifndef __UART_GENERAL_H_
|
||
#define __UART_GENERAL_H_
|
||
|
||
//////////////////////////////////////////////////////////////////////
|
||
/////////////////////////---USER SETTINGS---/////////////////////////
|
||
#define HAL_UART_MODULE_ENABLED // need to uncomment these defines in stm32f4xx_hal_conf.h
|
||
#define HAL_USART_MODULE_ENABLED // also need to add hal_uart.c (source code)
|
||
|
||
//#define USE_USART1
|
||
//#define USE_USART2
|
||
//#define USE_USART3
|
||
//#define USE_UART4
|
||
//#define USE_UART5
|
||
//#define USE_USART6
|
||
/* note: used uart defines in modbus.h */
|
||
|
||
/////////////////////////---USER SETTINGS---/////////////////////////
|
||
#include "modbus.h"
|
||
|
||
|
||
|
||
/////////////////////////////////////////////////////////////////////
|
||
////////////////////////////---DEFINES---////////////////////////////
|
||
#include "periph_general.h"
|
||
/**
|
||
* @brief Analog for HAL define. Remade with pointer to structure.
|
||
* @note @ref __HAL_LINKDMA.
|
||
*/
|
||
#define __USER_LINKDMA(__HANDLE__, __PPP_DMA_FIELD__, __DMA_HANDLE__) \
|
||
do{ \
|
||
(__HANDLE__)->__PPP_DMA_FIELD__ = (__DMA_HANDLE__); \
|
||
(__DMA_HANDLE__)->Parent = (__HANDLE__);} while(0U)
|
||
|
||
|
||
////////////////////////////---DEFINES---////////////////////////////
|
||
|
||
|
||
/////////////////////////////////////////////////////////////////////
|
||
///////////////////////---STRUCTURES & ENUMS---//////////////////////
|
||
typedef struct // struct with settings for custom function
|
||
{
|
||
UART_HandleTypeDef huart;
|
||
|
||
GPIO_TypeDef *GPIOx;
|
||
uint16_t GPIO_PIN_RX;
|
||
uint16_t GPIO_PIN_TX;
|
||
|
||
DMA_Stream_TypeDef *DMAChannel; // DMAChannel = 0 if doesnt need
|
||
uint32_t DMA_CHANNEL_X; // DMAChannel = 0 if doesnt need
|
||
|
||
|
||
}UART_SettingsTypeDef;
|
||
///////////////////////---STRUCTURES & ENUMS---//////////////////////
|
||
|
||
|
||
/////////////////////////////////////////////////////////////////////
|
||
///////////////////////////---FUNCTIONS---///////////////////////////
|
||
/**
|
||
* @brief Initialize UART with UART_SettingsTypeDef structure.
|
||
* @param suart - указатель на структуру с настройками UART.
|
||
* @return HAL status.
|
||
* @note Данная структура содержит хендл ЮАРТ и настройки перефирии (GPIO)
|
||
*/
|
||
HAL_StatusTypeDef UART_Base_Init(UART_SettingsTypeDef *suart);
|
||
/**
|
||
* @brief Initialize GPIO for UART.
|
||
* @param GPIOx - порт для настройки.
|
||
* @param GPIO_PIN_RX - пин для настройки на прием.
|
||
* @param GPIO_PIN_TX - пин для настройки на передачу.
|
||
*/
|
||
void UART_GPIO_Init(GPIO_TypeDef *GPIOx, uint16_t GPIO_PIN_RX, uint16_t GPIO_PIN_TX);
|
||
/**
|
||
* @brief Initialize DMA for UART.
|
||
* @param huart - указатель на хендл UART для настройки DMA.
|
||
* @param hdma_rx - указатель на хендл DMA для линии приема UART.
|
||
* @param DMAChannel - указатель на канал DMA/поток DMA в STM32F407.
|
||
* @param DMA_CHANNEL_X - канал DMA.
|
||
*/
|
||
void UART_DMA_Init(UART_HandleTypeDef *huart, DMA_HandleTypeDef *hdma_rx, DMA_Stream_TypeDef *DMAChannel, uint32_t DMA_CHANNEL_X);
|
||
/**
|
||
* @brief Initialize UART & DMA clock and interrupt.
|
||
* @param huart - указатель на хендл UART для инициализации.
|
||
* @note Чтобы не генерировать функцию с иницилизацией неиспользуемых UART,
|
||
дефайнами определяются используемые UART.
|
||
*/
|
||
void UART_MspInit(UART_HandleTypeDef *huart);
|
||
/**
|
||
* @brief Deinitialize UART & DMA clock and interrupt.
|
||
* @param huart - указатель на хендл UART для деинициализации.
|
||
* @note Чтобы не генерировать функцию с деиницилизацией неиспользуемых UART,
|
||
дефайнами в rs_message.h определяются используемые UART.
|
||
*/
|
||
void UART_MspDeInit(UART_HandleTypeDef *huart);
|
||
|
||
/**
|
||
* @brief Check that uart init structure have correct values.
|
||
* @param suart - указатель на структуру с настройками UART.
|
||
* @return HAL status.
|
||
*/
|
||
HAL_StatusTypeDef Check_UART_Init_Struct(UART_SettingsTypeDef *suart);
|
||
///////////////////////////---FUNCTIONS---///////////////////////////
|
||
|
||
#endif // __UART_GENERAL_H_
|