#include "stm32g4xx_hal.h" #include "uart_bridge.h" #include "uart_bridge_cfg.h" UART_HandleTypeDef huart_bridge; static uint8_t rx_byte; void init_usart(void) { GPIO_InitTypeDef GPIO_InitStruct = {0}; __HAL_RCC_GPIOA_CLK_ENABLE(); __HAL_RCC_USART2_CLK_ENABLE(); GPIO_InitStruct.Pin = GPIO_PIN_1 | GPIO_PIN_2 | GPIO_PIN_3; GPIO_InitStruct.Mode = GPIO_MODE_AF_PP; GPIO_InitStruct.Pull = GPIO_PULLUP; GPIO_InitStruct.Speed = GPIO_SPEED_HIGH; GPIO_InitStruct.Alternate = GPIO_AF7_USART2; HAL_GPIO_Init(GPIOA, &GPIO_InitStruct); huart_bridge.Instance = USART2; huart_bridge.Init.BaudRate = UB_BAUDRATE; huart_bridge.Init.WordLength = UART_WORDLENGTH_8B; huart_bridge.Init.StopBits = UART_STOPBITS_1; huart_bridge.Init.Parity = UART_PARITY_NONE; huart_bridge.Init.Mode = UART_MODE_TX_RX; huart_bridge.Init.HwFlowCtl = UART_HWCONTROL_NONE; huart_bridge.Init.OverSampling = UART_OVERSAMPLING_8; huart_bridge.Init.OneBitSampling= UART_ONE_BIT_SAMPLE_DISABLE; HAL_UART_Init(&huart_bridge); HAL_RS485Ex_Init(&huart_bridge, UART_DE_POLARITY_HIGH, 0, 0); HAL_NVIC_SetPriority(USART2_IRQn, 6, 0); HAL_NVIC_EnableIRQ(USART2_IRQn); HAL_UART_Receive_IT(&huart_bridge, &rx_byte, 1); } extern "C" { void USART2_IRQHandler(void) { HAL_UART_Receive_IT(&huart_bridge, &rx_byte, 1); //sbsTerminal.put_byte((char)(uart.Instance->RDR & (uint16_t)0x01FF)); } }