/* USER CODE BEGIN Header */ /** ****************************************************************************** * @file usart.c * @brief This file provides code for the configuration * of the USART instances. ****************************************************************************** * @attention * * Copyright (c) 2024 STMicroelectronics. * All rights reserved. * * This software is licensed under terms that can be found in the LICENSE file * in the root directory of this software component. * If no LICENSE file comes with this software, it is provided AS-IS. * ****************************************************************************** */ /* USER CODE END Header */ /* Includes ------------------------------------------------------------------*/ #include "usart.h" /* USER CODE BEGIN 0 */ /* USER CODE END 0 */ UART_HandleTypeDef huart1; /* USART1 init function */ void MX_USART1_UART_Init(void) { /* USER CODE BEGIN USART1_Init 0 */ /* USER CODE END USART1_Init 0 */ /* USER CODE BEGIN USART1_Init 1 */ /* USER CODE END USART1_Init 1 */ huart1.Instance = USART1; huart1.Init.BaudRate = MODBUS_SPEED; huart1.Init.WordLength = UART_WORDLENGTH_8B; huart1.Init.StopBits = UART_STOPBITS_1; huart1.Init.Parity = UART_PARITY_NONE; huart1.Init.Mode = UART_MODE_TX_RX; huart1.Init.HwFlowCtl = UART_HWCONTROL_NONE; huart1.Init.OverSampling = UART_OVERSAMPLING_16; if (HAL_UART_Init(&huart1) != HAL_OK) { Error_Handler(); } /* USER CODE BEGIN USART1_Init 2 */ /* USER CODE END USART1_Init 2 */ } void HAL_UART_MspInit(UART_HandleTypeDef* uartHandle) { GPIO_InitTypeDef GPIO_InitStruct = {0}; if(uartHandle->Instance==USART1) { /* USER CODE BEGIN USART1_MspInit 0 */ /* USER CODE END USART1_MspInit 0 */ /* USART1 clock enable */ __HAL_RCC_GPIOB_CLK_ENABLE(); __HAL_RCC_USART1_CLK_ENABLE(); /* GPIO initialization PB04:TX, PB05:RX */ /* Настройка пина GPIO_PIN_4 */ GPIOB->MODER &= ~(GPIO_MODER_MODE4); GPIOB->MODER |= (GPIO_MODE_AF_PP << GPIO_MODER_MODE4_Pos); GPIOB->PUPDR &= ~(GPIO_PUPDR_PUPD4); GPIOB->PUPDR |= (GPIO_PULLUP << GPIO_PUPDR_PUPD4_Pos); GPIOB->OSPEEDR |= (GPIO_SPEED_FREQ_HIGH << GPIO_OSPEEDR_OSPEED4_Pos); GPIOB->AFR[0] &= ~(0xF << GPIO_AFRL_AFSEL4_Pos); GPIOB->AFR[0] |= (GPIO_AF1_USART1 << GPIO_AFRL_AFSEL4_Pos); /* Настройка пина GPIO_PIN_5 */ GPIOB->MODER &= ~(GPIO_MODER_MODE5); GPIOB->MODER |= (GPIO_MODE_AF_PP << GPIO_MODER_MODE5_Pos); GPIOB->PUPDR &= ~(GPIO_PUPDR_PUPD5); GPIOB->PUPDR |= (GPIO_PULLUP << GPIO_PUPDR_PUPD5_Pos); GPIOB->OSPEEDR |= (GPIO_SPEED_FREQ_HIGH << GPIO_OSPEEDR_OSPEED5_Pos); GPIOB->AFR[0] &= ~(0xF << GPIO_AFRL_AFSEL5_Pos); GPIOB->AFR[0] |= (GPIO_AF1_USART1 << GPIO_AFRL_AFSEL5_Pos); /* USART1 interrupt Init */ HAL_NVIC_SetPriority(USART1_IRQn, 0, 0); HAL_NVIC_EnableIRQ(USART1_IRQn); /* USER CODE BEGIN USART1_MspInit 1 */ /* USER CODE END USART1_MspInit 1 */ } } /* USER CODE BEGIN 1 */ /* USER CODE END 1 */