#ifndef _LMCAL_UART_CFG_H
#define _LMCAL_UART_CFG_H

//******************************************** Включаемые файлы *********************************************

#include "gd32f4xx_usart.h"
#include "gd32f4xx_gpio.h"


//******************************************* Локальные константы *******************************************

// Номера UART в цифровом формате
#define LMCAL_UART0                   (USART0)
#define LMCAL_UART1                   (USART1)
#define LMCAL_UART2                   (USART2)
#define LMCAL_UART3                   (UART3)
#define LMCAL_UART4                   (UART4)
#define LMCAL_UART5                   (USART5)
#define LMCAL_UART6                   (UART6)
#define LMCAL_UART7                   (UART7)
#define LMCAL_UART8                   (8U)
#define LMCAL_UART9                   (9U)
#define LMCAL_UART10                  (10U)

// Номера портов в буквенном формате
#define LMCAL_UART_PORTA              (GPIOA)
#define LMCAL_UART_PORTB              (GPIOB)
#define LMCAL_UART_PORTC              (GPIOC)
#define LMCAL_UART_PORTD              (GPIOD)
#define LMCAL_UART_PORTE              (GPIOE)
#define LMCAL_UART_PORTF              (GPIOF)
#define LMCAL_UART_PORTG              (GPIOG)
#define LMCAL_UART_PORTH              (GPIOH)
#define LMCAL_UART_PORTI              (GPIOI)

// Номера портов в цифровом формате
#define LMCAL_UART_PORT0              (GPIOA)
#define LMCAL_UART_PORT1              (GPIOB)
#define LMCAL_UART_PORT2              (GPIOC)
#define LMCAL_UART_PORT3              (GPIOD)
#define LMCAL_UART_PORT4              (GPIOE)
#define LMCAL_UART_PORT5              (GPIOF)
#define LMCAL_UART_PORT6              (GPIOG)
#define LMCAL_UART_PORT7              (GPIOH)
#define LMCAL_UART_PORT8              (GPIOI)
#define LMCAL_UART_PORT_NONE          (255U)

// Номера пинов в цифровом формате
#define LMCAL_UART_PIN0               (GPIO_PIN_0)
#define LMCAL_UART_PIN1               (GPIO_PIN_1)
#define LMCAL_UART_PIN2               (GPIO_PIN_2)
#define LMCAL_UART_PIN3               (GPIO_PIN_3)
#define LMCAL_UART_PIN4               (GPIO_PIN_4)
#define LMCAL_UART_PIN5               (GPIO_PIN_5)
#define LMCAL_UART_PIN6               (GPIO_PIN_6)
#define LMCAL_UART_PIN7               (GPIO_PIN_7)
#define LMCAL_UART_PIN8               (GPIO_PIN_8)
#define LMCAL_UART_PIN9               (GPIO_PIN_9)
#define LMCAL_UART_PIN10              (GPIO_PIN_10)
#define LMCAL_UART_PIN11              (GPIO_PIN_11)
#define LMCAL_UART_PIN12              (GPIO_PIN_12)
#define LMCAL_UART_PIN13              (GPIO_PIN_13)
#define LMCAL_UART_PIN14              (GPIO_PIN_14)
#define LMCAL_UART_PIN15              (GPIO_PIN_15)
#define LMCAL_UART_PIN16              (GPIO_PIN_16)
#define LMCAL_UART_PIN17              (GPIO_PIN_17)
#define LMCAL_UART_PIN18              (GPIO_PIN_18)
#define LMCAL_UART_PIN19              (GPIO_PIN_19)
#define LMCAL_UART_PIN20              (GPIO_PIN_20)
#define LMCAL_UART_PIN21              (GPIO_PIN_21)
#define LMCAL_UART_PIN22              (GPIO_PIN_22)
#define LMCAL_UART_PIN23              (GPIO_PIN_23)
#define LMCAL_UART_PIN24              (GPIO_PIN_24)
#define LMCAL_UART_PIN25              (GPIO_PIN_25)
#define LMCAL_UART_PIN26              (GPIO_PIN_26)
#define LMCAL_UART_PIN27              (GPIO_PIN_27)
#define LMCAL_UART_PIN28              (GPIO_PIN_28)
#define LMCAL_UART_PIN29              (GPIO_PIN_29)
#define LMCAL_UART_PIN30              (GPIO_PIN_30)
#define LMCAL_UART_PIN31              (GPIO_PIN_31)
#define LMCAL_UART_PIN_NONE           (255U)

//  Бит четности
#define LMCAL_UART_PARITY_OFF         (USART_PM_NONE) // Отключено
#define LMCAL_UART_PARITY_ODD         (USART_PM_ODD)  // Нечетный
#define LMCAL_UART_PARITY_EVEN        (USART_PM_EVEN) // Четный


//************************************ Глобальные (публичные) константы *************************************

//---------------------------------------------------------
// Канал 0 - для теста синхронного обмена
//---------------------------------------------------------

// Включить или отключить канал
// Доступные значения: ON\OFF, 1\0
#define LMCAL_UART_CH0_ENABLE             (1)

// Включить или отключить асинхронный режим работы драйвера.
// Если выключен, то исползуются функции с блокированием.
// Доступные значения: ON\OFF, 1\0
#define LMCAL_UART_CH0_ASYNC_MODE         (0)

// Номер аппаратного UART.
// Доступные значения: LMCAL_UART0..LMCAL_UART10
#define LMCAL_UART_CH0_UART_NUM           (LMCAL_UART0)

// Номер порта TX.
// Доступные значения: LMCAL_UART_PORTA..LMCAL_UART_PORTH или LMCAL_UART_PORT0..LMCAL_UART_PORT7
#define LMCAL_UART_CH0_TX_PORT            (LMCAL_UART_PORTA)

// Номер ножки TX.
// Доступные значения: LMCAL_UART_PIN0...LMCAL_UART_PIN31
#define LMCAL_UART_CH0_TX_PIN             (LMCAL_UART_PIN9)

// Номер порта RX. 
// Доступные значения: LMCAL_UART_PORTA..LMCAL_UART_PORTH или LMCAL_UART_PORT0..LMCAL_UART_PORT7
#define LMCAL_UART_CH0_RX_PORT            (LMCAL_UART_PORTA)

// Номер ножки RX. 
// Доступные значения: LMCAL_UART_PIN0...LMCAL_UART_PIN31
#define LMCAL_UART_CH0_RX_PIN             (LMCAL_UART_PIN10)

// Номер порта CLK. 
// Доступные значения: LMCAL_UART_PORTA..LMCAL_UART_PORTH или LMCAL_UART_PORT0..LMCAL_UART_PORT7
#define LMCAL_UART_CH0_CLK_PORT           (LMCAL_UART_PORT_NONE)

// Номер ножки CLK.
// Доступные значения: LMCAL_UART_PIN0...LMCAL_UART_PIN31
#define LMCAL_UART_CH0_CLK_PIN            (LMCAL_UART_PIN_NONE)

// Скорость приема и передачи (бод\с).
// Доступные значения зависят от реализации, могут быть:
//    2400, 9600, 19200, 57600, 115200, 230400, 460800, 921600, 2250000...
#define LMCAL_UART_CH0_BAUDRATE           (115200U)

// Бит четности
// Доступные значения: LMCAL_UART_PARITY_OFF, LMCAL_UART_PARITY_EVEN, LMCAL_UART_PARITY_ODD
#define LMCAL_UART_CH0_PARITY             (LMCAL_UART_PARITY_OFF)



//---------------------------------------------------------
// Канал 1
//---------------------------------------------------------
#define LMCAL_UART_CH1_ENABLE             (0)
#define LMCAL_UART_CH1_ASYNC_MODE         (OFF)
#define LMCAL_UART_CH1_UART_NUM           (LMCAL_UART0)
#define LMCAL_UART_CH1_TX_PORT            (LMCAL_UART_PORTA)
#define LMCAL_UART_CH1_TX_PIN             (LMCAL_UART_PIN9)
#define LMCAL_UART_CH1_RX_PORT            (LMCAL_UART_PORTA)
#define LMCAL_UART_CH1_RX_PIN             (LMCAL_UART_PIN10)
#define LMCAL_UART_CH1_CLK_PORT           (LMCAL_UART_PORT_NONE)
#define LMCAL_UART_CH1_CLK_PIN            (LMCAL_UART_PIN_NONE)
#define LMCAL_UART_CH1_BAUDRATE           (115200U)
#define LMCAL_UART_CH1_PARITY             (LMCAL_UART_PARITY_OFF)


//---------------------------------------------------------
// Канал 2
//---------------------------------------------------------
#define LMCAL_UART_CH2_ENABLE             (OFF)
#define LMCAL_UART_CH2_ASYNC_MODE         (OFF)
#define LMCAL_UART_CH2_UART_NUM           (LMCAL_UART0)
#define LMCAL_UART_CH2_TX_PORT            (LMCAL_UART_PORT0)
#define LMCAL_UART_CH2_TX_PIN             (LMCAL_UART_PIN0)
#define LMCAL_UART_CH2_RX_PORT            (LMCAL_UART_PORT0)
#define LMCAL_UART_CH2_RX_PIN             (LMCAL_UART_PIN0)
#define LMCAL_UART_CH2_CLK_PORT           (LMCAL_UART_PORT_NONE)
#define LMCAL_UART_CH2_CLK_PIN            (LMCAL_UART_PIN_NONE)
#define LMCAL_UART_CH2_BAUDRATE           (9600U)
#define LMCAL_UART_CH2_PARITY             (LMCAL_UART_PARITY_OFF)



#endif


//*********************************************** КОНЕЦ ФАЙЛА ***********************************************
