diff --git a/SerialPorts.c b/SerialPorts.c index ddb0fa1..ca7dcfe 100644 --- a/SerialPorts.c +++ b/SerialPorts.c @@ -6,48 +6,24 @@ tSerialPorts SERIAL_PORTS; -//void USART3_IRQHandler() { -// vSerialPortIrqProcessing(&SERIAL_PORTS.GONEC1); -//} - uint8_t buf_USART3_DMA[3200]; // IDLE прерывание void USART3_IRQHandler() { - // Смотрим idle прерывание -// if (usart_flag_get(SERIAL_PORTS.MBEE.uart, USART_IDLEF_FLAG)) { -// // Сброс прерывания -// usart_data_receive(SERIAL_PORTS.MBEE.uart); -// -// vSerialPortIrqProcessingDMAloop(&SERIAL_PORTS.MBEE, SERIAL_PORTS.MBEE.dma_rx_init_struct.buffer_size - -// SERIAL_PORTS.MBEE.dma_channel->dtcnt); -// -// } SerialPort_IrqProcessing_UartIdle(&SERIAL_PORTS.Rs485); } // RX void DMA1_Channel3_IRQHandler(void) { -// if (dma_flag_get(DMA1_FDT3_FLAG)) { -// -// vSerialPortIrqProcessingDMAloop(&SERIAL_PORTS.MBEE, -// SERIAL_PORTS.MBEE.dma_rx_init_struct.buffer_size); -// SERIAL_PORTS.MBEE.offset = 0; -// dma_flag_clear(DMA1_FDT3_FLAG); -// } SerialPort_IrqProcessing_DmaRxLoop(&SERIAL_PORTS.Rs485); } // TX void DMA1_Channel4_IRQHandler(void) { -// if (dma_flag_get(DMA1_FDT4_FLAG)) { -// dma_flag_clear(DMA1_FDT4_FLAG); -//// osMutexRelease(SERIAL_PORTS.GONEC1.dmaAccess); -// } SerialPort_IrqProcessing_DmaTx(&SERIAL_PORTS.Rs485); } -// Настройка порта радиомодуля +// Настройка порта static void vSerialPort_InitUSART3(tSerialPortArtery *env) { gpio_init_type GPIO_InitStruct; @@ -74,6 +50,70 @@ static void vSerialPort_InitUSART3(tSerialPortArtery *env) { } + + + + + + + +uint8_t buf_USART5_DMA[3200]; + +// IDLE прерывание +void UART5_IRQHandler() { + SerialPort_IrqProcessing_UartIdle(&SERIAL_PORTS.Rs232); +} + +// RX +void DMA1_Channel5_IRQHandler(void) { + SerialPort_IrqProcessing_DmaRxLoop(&SERIAL_PORTS.Rs232); +} + +// TX +void DMA1_Channel6_IRQHandler(void) { + SerialPort_IrqProcessing_DmaTx(&SERIAL_PORTS.Rs232); +} + +// Настройка порта +static void vSerialPort_InitUSART5(tSerialPortArtery *env) { + + gpio_init_type GPIO_InitStruct; + gpio_default_para_init(&GPIO_InitStruct); + + GPIO_InitStruct.gpio_drive_strength = GPIO_DRIVE_STRENGTH_STRONGER; + GPIO_InitStruct.gpio_out_type = GPIO_OUTPUT_PUSH_PULL; + GPIO_InitStruct.gpio_mode = GPIO_MODE_MUX; + GPIO_InitStruct.gpio_pins = GPIO_PINS_12; + GPIO_InitStruct.gpio_pull = GPIO_PULL_NONE; + gpio_init(GPIOC, &GPIO_InitStruct); + + GPIO_InitStruct.gpio_pins = GPIO_PINS_2; + gpio_init(GPIOD, &GPIO_InitStruct); + + gpio_pin_mux_config(GPIOC, GPIO_PINS_SOURCE12, GPIO_MUX_8); + gpio_pin_mux_config(GPIOD, GPIO_PINS_SOURCE2, GPIO_MUX_8); + + vSerialPortInitDmaWithNameAndSniffer( + env, UART5, 115200, + 1, 5, 1, 6, + false, 0xFF, + buf_USART5_DMA, sizeof(buf_USART5_DMA), + 3200, 3200 + ); + +} + + + + + + + + + + + + /* //начало------------------------------------Радиомодуль----------------------------------------------------------------- //начало------------------------------------Радиомодуль----------------------------------------------------------------- @@ -437,6 +477,12 @@ void SerialPorts_Init(tRs485DirectionPins *directionPins) { SERIAL_PORTS.Rs485_HalfDuplexIo = vSerialPortHalfDuplexGetIo(&SERIAL_PORTS.Rs485_HalfDuplex); + + + vSerialPort_InitUSART5(&env->Rs232); + SERIAL_PORTS.Rs232_IO = vSerialPortGetIo(&SERIAL_PORTS.Rs232); + + /* vSerialPort_InitUSART2(&env->PRO04); SERIAL_PORTS.PRO04IO = vSerialPortGetIo(&SERIAL_PORTS.PRO04); diff --git a/SerialPorts.h b/SerialPorts.h index 0f3d36c..1806d06 100644 --- a/SerialPorts.h +++ b/SerialPorts.h @@ -18,10 +18,14 @@ typedef struct { typedef struct { tSerialPortArtery Rs485; tSerialPortIO Rs485_IO; - tSerialPortHalfDuplex Rs485_HalfDuplex; tSerialPortIO Rs485_HalfDuplexIo; -/* + + tSerialPortArtery Rs232; + tSerialPortIO Rs232_IO; + + + /* tSerialPortArtery PRO04; tSerialPortIO PRO04IO; tSerialPortIO PRO04_snif_IO;