1 /* USER CODE BEGIN Header */ 2 /** 3 ****************************************************************************** 4 * @file stm32f1xx_hal_msp.c 5 * @brief This file provides code for the MSP Initialization 6 * and de-Initialization codes. 7 ****************************************************************************** 8 * @attention 9 * 10 * Copyright (c) 2025 STMicroelectronics. 11 * All rights reserved. 12 * 13 * This software is licensed under terms that can be found in the LICENSE file 14 * in the root directory of this software component. 15 * If no LICENSE file comes with this software, it is provided AS-IS. 16 * 17 ****************************************************************************** 18 */ 19 /* USER CODE END Header */ 20 21 /* Includes ------------------------------------------------------------------*/ 22 #include "main.h" 23 /* USER CODE BEGIN Includes */ 24 25 /* USER CODE END Includes */ 26 extern DMA_HandleTypeDef hdma_usart1_rx; 27 28 extern DMA_HandleTypeDef hdma_usart1_tx; 29 30 /* Private typedef -----------------------------------------------------------*/ 31 /* USER CODE BEGIN TD */ 32 33 /* USER CODE END TD */ 34 35 /* Private define ------------------------------------------------------------*/ 36 /* USER CODE BEGIN Define */ 37 38 /* USER CODE END Define */ 39 40 /* Private macro -------------------------------------------------------------*/ 41 /* USER CODE BEGIN Macro */ 42 43 /* USER CODE END Macro */ 44 45 /* Private variables ---------------------------------------------------------*/ 46 /* USER CODE BEGIN PV */ 47 48 /* USER CODE END PV */ 49 50 /* Private function prototypes -----------------------------------------------*/ 51 /* USER CODE BEGIN PFP */ 52 53 /* USER CODE END PFP */ 54 55 /* External functions --------------------------------------------------------*/ 56 /* USER CODE BEGIN ExternalFunctions */ 57 58 /* USER CODE END ExternalFunctions */ 59 60 /* USER CODE BEGIN 0 */ 61 62 /* USER CODE END 0 */ 63 /** 64 * Initializes the Global MSP. 65 */ 66 void HAL_MspInit(void) 67 { 68 69 /* USER CODE BEGIN MspInit 0 */ 70 71 /* USER CODE END MspInit 0 */ 72 73 __HAL_RCC_AFIO_CLK_ENABLE(); 74 __HAL_RCC_PWR_CLK_ENABLE(); 75 76 /* System interrupt init*/ 77 78 /** NOJTAG: JTAG-DP Disabled and SW-DP Enabled 79 */ 80 __HAL_AFIO_REMAP_SWJ_NOJTAG(); 81 82 /* USER CODE BEGIN MspInit 1 */ 83 84 /* USER CODE END MspInit 1 */ 85 } 86 87 /** 88 * @brief UART MSP Initialization 89 * This function configures the hardware resources used in this example 90 * @param huart: UART handle pointer 91 * @retval None 92 */ 93 void HAL_UART_MspInit(UART_HandleTypeDef* huart) 94 { 95 GPIO_InitTypeDef GPIO_InitStruct = {0}; 96 if(huart->Instance==USART1) 97 { 98 /* USER CODE BEGIN USART1_MspInit 0 */ 99 100 /* USER CODE END USART1_MspInit 0 */ 101 /* Peripheral clock enable */ 102 __HAL_RCC_USART1_CLK_ENABLE(); 103 104 __HAL_RCC_GPIOA_CLK_ENABLE(); 105 /**USART1 GPIO Configuration 106 PA9 ------> USART1_TX 107 */ 108 GPIO_InitStruct.Pin = GPIO_PIN_9; 109 GPIO_InitStruct.Mode = GPIO_MODE_AF_OD; 110 GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_HIGH; 111 HAL_GPIO_Init(GPIOA, &GPIO_InitStruct); 112 113 /* USART1 DMA Init */ 114 /* USART1_RX Init */ 115 hdma_usart1_rx.Instance = DMA1_Channel5; 116 hdma_usart1_rx.Init.Direction = DMA_PERIPH_TO_MEMORY; 117 hdma_usart1_rx.Init.PeriphInc = DMA_PINC_DISABLE; 118 hdma_usart1_rx.Init.MemInc = DMA_MINC_ENABLE; 119 hdma_usart1_rx.Init.PeriphDataAlignment = DMA_PDATAALIGN_BYTE; 120 hdma_usart1_rx.Init.MemDataAlignment = DMA_MDATAALIGN_BYTE; 121 hdma_usart1_rx.Init.Mode = DMA_NORMAL; 122 hdma_usart1_rx.Init.Priority = DMA_PRIORITY_LOW; 123 if (HAL_DMA_Init(&hdma_usart1_rx) != HAL_OK) 124 { 125 Error_Handler(); 126 } 127 128 __HAL_LINKDMA(huart,hdmarx,hdma_usart1_rx); 129 130 /* USART1_TX Init */ 131 hdma_usart1_tx.Instance = DMA1_Channel4; 132 hdma_usart1_tx.Init.Direction = DMA_MEMORY_TO_PERIPH; 133 hdma_usart1_tx.Init.PeriphInc = DMA_PINC_DISABLE; 134 hdma_usart1_tx.Init.MemInc = DMA_MINC_ENABLE; 135 hdma_usart1_tx.Init.PeriphDataAlignment = DMA_PDATAALIGN_BYTE; 136 hdma_usart1_tx.Init.MemDataAlignment = DMA_MDATAALIGN_BYTE; 137 hdma_usart1_tx.Init.Mode = DMA_NORMAL; 138 hdma_usart1_tx.Init.Priority = DMA_PRIORITY_LOW; 139 if (HAL_DMA_Init(&hdma_usart1_tx) != HAL_OK) 140 { 141 Error_Handler(); 142 } 143 144 __HAL_LINKDMA(huart,hdmatx,hdma_usart1_tx); 145 146 /* USART1 interrupt Init */ 147 HAL_NVIC_SetPriority(USART1_IRQn, 0, 0); 148 HAL_NVIC_EnableIRQ(USART1_IRQn); 149 /* USER CODE BEGIN USART1_MspInit 1 */ 150 151 /* USER CODE END USART1_MspInit 1 */ 152 } 153 else if(huart->Instance==USART2) 154 { 155 /* USER CODE BEGIN USART2_MspInit 0 */ 156 157 /* USER CODE END USART2_MspInit 0 */ 158 /* Peripheral clock enable */ 159 __HAL_RCC_USART2_CLK_ENABLE(); 160 161 __HAL_RCC_GPIOA_CLK_ENABLE(); 162 /**USART2 GPIO Configuration 163 PA2 ------> USART2_TX 164 PA3 ------> USART2_RX 165 */ 166 GPIO_InitStruct.Pin = USART_TX_Pin|USART_RX_Pin; 167 GPIO_InitStruct.Mode = GPIO_MODE_AF_PP; 168 GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW; 169 HAL_GPIO_Init(GPIOA, &GPIO_InitStruct); 170 171 /* USER CODE BEGIN USART2_MspInit 1 */ 172 173 /* USER CODE END USART2_MspInit 1 */ 174 } 175 176 } 177 178 /** 179 * @brief UART MSP De-Initialization 180 * This function freeze the hardware resources used in this example 181 * @param huart: UART handle pointer 182 * @retval None 183 */ 184 void HAL_UART_MspDeInit(UART_HandleTypeDef* huart) 185 { 186 if(huart->Instance==USART1) 187 { 188 /* USER CODE BEGIN USART1_MspDeInit 0 */ 189 190 /* USER CODE END USART1_MspDeInit 0 */ 191 /* Peripheral clock disable */ 192 __HAL_RCC_USART1_CLK_DISABLE(); 193 194 /**USART1 GPIO Configuration 195 PA9 ------> USART1_TX 196 */ 197 HAL_GPIO_DeInit(GPIOA, GPIO_PIN_9); 198 199 /* USART1 DMA DeInit */ 200 HAL_DMA_DeInit(huart->hdmarx); 201 HAL_DMA_DeInit(huart->hdmatx); 202 203 /* USART1 interrupt DeInit */ 204 HAL_NVIC_DisableIRQ(USART1_IRQn); 205 /* USER CODE BEGIN USART1_MspDeInit 1 */ 206 207 /* USER CODE END USART1_MspDeInit 1 */ 208 } 209 else if(huart->Instance==USART2) 210 { 211 /* USER CODE BEGIN USART2_MspDeInit 0 */ 212 213 /* USER CODE END USART2_MspDeInit 0 */ 214 /* Peripheral clock disable */ 215 __HAL_RCC_USART2_CLK_DISABLE(); 216 217 /**USART2 GPIO Configuration 218 PA2 ------> USART2_TX 219 PA3 ------> USART2_RX 220 */ 221 HAL_GPIO_DeInit(GPIOA, USART_TX_Pin|USART_RX_Pin); 222 223 /* USER CODE BEGIN USART2_MspDeInit 1 */ 224 225 /* USER CODE END USART2_MspDeInit 1 */ 226 } 227 228 } 229 230 /* USER CODE BEGIN 1 */ 231 232 /* USER CODE END 1 */
