// // Created by cfif on 15.11.22. // #include "SerialPorts.h" #include "at32f435_437.h" tSerialPorts SERIAL_PORTS; //начало------------------------------------GONEC1 связь с модемом ГОНЕЦ------------------------------------------------ //начало------------------------------------GONEC1 связь с модемом ГОНЕЦ------------------------------------------------ //начало------------------------------------GONEC1 связь с модемом ГОНЕЦ------------------------------------------------ // GONEC1 //void UART7_IRQHandler() { // vSerialPortIrqProcessing(&SERIAL_PORTS.GONEC1); //} uint8_t buf_UART7_DMA[3200]; //volatile uint32_t timeModemStuckGetMs = 0; // IDLE прерывание void UART7_IRQHandler() { // timeModemStuckGetMs = SystemGetMs(); SerialPort_IrqProcessing_UartIdle(&SERIAL_PORTS.GONEC1); // Смотрим idle прерывание // if (usart_flag_get(SERIAL_PORTS.GONEC1.uart, USART_IDLEF_FLAG)) { // // Сброс прерывания // usart_data_receive(SERIAL_PORTS.GONEC1.uart); // // vSerialPortIrqProcessingDMAloop(&SERIAL_PORTS.GONEC1, SERIAL_PORTS.GONEC1.dma_rx_init_struct.buffer_size - // SERIAL_PORTS.GONEC1.dma_channel->dtcnt); // // } } // RX void DMA1_Channel3_IRQHandler(void) { SerialPort_IrqProcessing_DmaRxLoop(&SERIAL_PORTS.GONEC1); // if (dma_flag_get(DMA1_FDT3_FLAG)) { // // timeModemStuckGetMs = SystemGetMs(); // // vSerialPortIrqProcessingDMAloop(&SERIAL_PORTS.GONEC1, // SERIAL_PORTS.GONEC1.dma_rx_init_struct.buffer_size); // SERIAL_PORTS.GONEC1.offset = 0; // dma_flag_clear(DMA1_FDT3_FLAG); // } } // TX void DMA1_Channel4_IRQHandler(void) { SerialPort_IrqProcessing_DmaTx(&SERIAL_PORTS.GONEC1); // if (dma_flag_get(DMA1_FDT4_FLAG)) { // dma_flag_clear(DMA1_FDT4_FLAG); // osMutexRelease(SERIAL_PORTS.GONEC1.dmaAccess); // } } // Настройка порта мезонин ГОНЕЦ UART1 static void vSerialPort_InitUART7(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_6 | GPIO_PINS_7; GPIO_InitStruct.gpio_pull = GPIO_PULL_NONE; gpio_init(GPIOF, &GPIO_InitStruct); gpio_pin_mux_config(GPIOF, GPIO_PINS_SOURCE6, GPIO_MUX_8); gpio_pin_mux_config(GPIOF, GPIO_PINS_SOURCE7, GPIO_MUX_8); // vSerialPortInitNameWithSniffer(env, UART7, true, 115200, 0x55, 1024, 1024); // vSerialPortInitDMANameWithSniffer(env, UART7, DMA1, // DMA1_CHANNEL3, DMA1MUX_CHANNEL3, DMAMUX_DMAREQ_ID_UART7_RX, DMA1_Channel3_IRQn, // DMA1_FDT3_FLAG, // buf_UART7_DMA, sizeof(buf_UART7_DMA), // DMA1_CHANNEL4, DMA1MUX_CHANNEL4, DMAMUX_DMAREQ_ID_UART7_TX, DMA1_Channel4_IRQn, // DMA1_FDT4_FLAG, // true, 921600, 0xFF, 3200, 3200); // // vSerialPortInitDMAName(env, UART7, DMA1, // DMA1_CHANNEL3, DMA1MUX_CHANNEL3, DMAMUX_DMAREQ_ID_UART7_RX, DMA1_Channel3_IRQn, // DMA1_FDT3_FLAG, // buf_UART7_DMA, sizeof(buf_UART7_DMA), // DMA1_CHANNEL4, DMA1MUX_CHANNEL4, DMAMUX_DMAREQ_ID_UART7_TX, DMA1_Channel4_IRQn, // DMA1_FDT4_FLAG, // true, 921600, 0xFF, 3200); vSerialPortInitDmaWithNameAndSniffer( env, UART7, 921600, 1, 3, 1, 4, true, 0xFF, buf_UART7_DMA, sizeof(buf_UART7_DMA), 3200, 3200 ); } //конец-------------------------------------GONEC1 связь с модемом ГОНЕЦ------------------------------------------------ //конец-------------------------------------GONEC1 связь с модемом ГОНЕЦ------------------------------------------------ //конец-------------------------------------GONEC1 связь с модемом ГОНЕЦ------------------------------------------------ void SerialPorts_Init() { tSerialPorts *env = &SERIAL_PORTS; vSerialPort_InitUART7(&env->GONEC1); SERIAL_PORTS.GONEC1IO = vSerialPortGetIo(&SERIAL_PORTS.GONEC1); }