firmware-nucleo/Core/Src/stm32f1xx_hal_msp.c (15065B)
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_i2c1_tx; 27 28 extern DMA_HandleTypeDef hdma_usart1_tx; 29 30 extern DMA_HandleTypeDef hdma_usart1_rx; 31 32 extern DMA_HandleTypeDef hdma_usart3_rx; 33 34 extern DMA_HandleTypeDef hdma_usart3_tx; 35 36 /* Private typedef -----------------------------------------------------------*/ 37 /* USER CODE BEGIN TD */ 38 39 /* USER CODE END TD */ 40 41 /* Private define ------------------------------------------------------------*/ 42 /* USER CODE BEGIN Define */ 43 44 /* USER CODE END Define */ 45 46 /* Private macro -------------------------------------------------------------*/ 47 /* USER CODE BEGIN Macro */ 48 49 /* USER CODE END Macro */ 50 51 /* Private variables ---------------------------------------------------------*/ 52 /* USER CODE BEGIN PV */ 53 54 /* USER CODE END PV */ 55 56 /* Private function prototypes -----------------------------------------------*/ 57 /* USER CODE BEGIN PFP */ 58 59 /* USER CODE END PFP */ 60 61 /* External functions --------------------------------------------------------*/ 62 /* USER CODE BEGIN ExternalFunctions */ 63 64 /* USER CODE END ExternalFunctions */ 65 66 /* USER CODE BEGIN 0 */ 67 68 /* USER CODE END 0 */ 69 70 void HAL_TIM_MspPostInit(TIM_HandleTypeDef *htim); 71 /** 72 * Initializes the Global MSP. 73 */ 74 void HAL_MspInit(void) 75 { 76 77 /* USER CODE BEGIN MspInit 0 */ 78 79 /* USER CODE END MspInit 0 */ 80 81 __HAL_RCC_AFIO_CLK_ENABLE(); 82 __HAL_RCC_PWR_CLK_ENABLE(); 83 84 /* System interrupt init*/ 85 86 /** NOJTAG: JTAG-DP Disabled and SW-DP Enabled 87 */ 88 __HAL_AFIO_REMAP_SWJ_NOJTAG(); 89 90 /* USER CODE BEGIN MspInit 1 */ 91 92 /* USER CODE END MspInit 1 */ 93 } 94 95 /** 96 * @brief I2C MSP Initialization 97 * This function configures the hardware resources used in this example 98 * @param hi2c: I2C handle pointer 99 * @retval None 100 */ 101 void HAL_I2C_MspInit(I2C_HandleTypeDef* hi2c) 102 { 103 GPIO_InitTypeDef GPIO_InitStruct = {0}; 104 if(hi2c->Instance==I2C1) 105 { 106 /* USER CODE BEGIN I2C1_MspInit 0 */ 107 108 /* USER CODE END I2C1_MspInit 0 */ 109 110 __HAL_RCC_GPIOB_CLK_ENABLE(); 111 /**I2C1 GPIO Configuration 112 PB8 ------> I2C1_SCL 113 PB9 ------> I2C1_SDA 114 */ 115 GPIO_InitStruct.Pin = GPIO_PIN_8|GPIO_PIN_9; 116 GPIO_InitStruct.Mode = GPIO_MODE_AF_OD; 117 GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_HIGH; 118 HAL_GPIO_Init(GPIOB, &GPIO_InitStruct); 119 120 __HAL_AFIO_REMAP_I2C1_ENABLE(); 121 122 /* Peripheral clock enable */ 123 __HAL_RCC_I2C1_CLK_ENABLE(); 124 125 /* I2C1 DMA Init */ 126 /* I2C1_TX Init */ 127 hdma_i2c1_tx.Instance = DMA1_Channel6; 128 hdma_i2c1_tx.Init.Direction = DMA_MEMORY_TO_PERIPH; 129 hdma_i2c1_tx.Init.PeriphInc = DMA_PINC_DISABLE; 130 hdma_i2c1_tx.Init.MemInc = DMA_MINC_ENABLE; 131 hdma_i2c1_tx.Init.PeriphDataAlignment = DMA_PDATAALIGN_BYTE; 132 hdma_i2c1_tx.Init.MemDataAlignment = DMA_MDATAALIGN_BYTE; 133 hdma_i2c1_tx.Init.Mode = DMA_NORMAL; 134 hdma_i2c1_tx.Init.Priority = DMA_PRIORITY_LOW; 135 if (HAL_DMA_Init(&hdma_i2c1_tx) != HAL_OK) 136 { 137 Error_Handler(); 138 } 139 140 __HAL_LINKDMA(hi2c,hdmatx,hdma_i2c1_tx); 141 142 /* I2C1 interrupt Init */ 143 HAL_NVIC_SetPriority(I2C1_EV_IRQn, 0, 0); 144 HAL_NVIC_EnableIRQ(I2C1_EV_IRQn); 145 HAL_NVIC_SetPriority(I2C1_ER_IRQn, 0, 0); 146 HAL_NVIC_EnableIRQ(I2C1_ER_IRQn); 147 /* USER CODE BEGIN I2C1_MspInit 1 */ 148 149 /* USER CODE END I2C1_MspInit 1 */ 150 151 } 152 153 } 154 155 /** 156 * @brief I2C MSP De-Initialization 157 * This function freeze the hardware resources used in this example 158 * @param hi2c: I2C handle pointer 159 * @retval None 160 */ 161 void HAL_I2C_MspDeInit(I2C_HandleTypeDef* hi2c) 162 { 163 if(hi2c->Instance==I2C1) 164 { 165 /* USER CODE BEGIN I2C1_MspDeInit 0 */ 166 167 /* USER CODE END I2C1_MspDeInit 0 */ 168 /* Peripheral clock disable */ 169 __HAL_RCC_I2C1_CLK_DISABLE(); 170 171 /**I2C1 GPIO Configuration 172 PB8 ------> I2C1_SCL 173 PB9 ------> I2C1_SDA 174 */ 175 HAL_GPIO_DeInit(GPIOB, GPIO_PIN_8); 176 177 HAL_GPIO_DeInit(GPIOB, GPIO_PIN_9); 178 179 /* I2C1 DMA DeInit */ 180 HAL_DMA_DeInit(hi2c->hdmatx); 181 182 /* I2C1 interrupt DeInit */ 183 HAL_NVIC_DisableIRQ(I2C1_EV_IRQn); 184 HAL_NVIC_DisableIRQ(I2C1_ER_IRQn); 185 /* USER CODE BEGIN I2C1_MspDeInit 1 */ 186 187 /* USER CODE END I2C1_MspDeInit 1 */ 188 } 189 190 } 191 192 /** 193 * @brief RTC MSP Initialization 194 * This function configures the hardware resources used in this example 195 * @param hrtc: RTC handle pointer 196 * @retval None 197 */ 198 void HAL_RTC_MspInit(RTC_HandleTypeDef* hrtc) 199 { 200 if(hrtc->Instance==RTC) 201 { 202 /* USER CODE BEGIN RTC_MspInit 0 */ 203 204 /* USER CODE END RTC_MspInit 0 */ 205 HAL_PWR_EnableBkUpAccess(); 206 /* Enable BKP CLK enable for backup registers */ 207 __HAL_RCC_BKP_CLK_ENABLE(); 208 /* Peripheral clock enable */ 209 __HAL_RCC_RTC_ENABLE(); 210 /* USER CODE BEGIN RTC_MspInit 1 */ 211 212 /* USER CODE END RTC_MspInit 1 */ 213 214 } 215 216 } 217 218 /** 219 * @brief RTC MSP De-Initialization 220 * This function freeze the hardware resources used in this example 221 * @param hrtc: RTC handle pointer 222 * @retval None 223 */ 224 void HAL_RTC_MspDeInit(RTC_HandleTypeDef* hrtc) 225 { 226 if(hrtc->Instance==RTC) 227 { 228 /* USER CODE BEGIN RTC_MspDeInit 0 */ 229 230 /* USER CODE END RTC_MspDeInit 0 */ 231 /* Peripheral clock disable */ 232 __HAL_RCC_RTC_DISABLE(); 233 /* USER CODE BEGIN RTC_MspDeInit 1 */ 234 235 /* USER CODE END RTC_MspDeInit 1 */ 236 } 237 238 } 239 240 /** 241 * @brief TIM_Base MSP Initialization 242 * This function configures the hardware resources used in this example 243 * @param htim_base: TIM_Base handle pointer 244 * @retval None 245 */ 246 void HAL_TIM_Base_MspInit(TIM_HandleTypeDef* htim_base) 247 { 248 if(htim_base->Instance==TIM1) 249 { 250 /* USER CODE BEGIN TIM1_MspInit 0 */ 251 252 /* USER CODE END TIM1_MspInit 0 */ 253 /* Peripheral clock enable */ 254 __HAL_RCC_TIM1_CLK_ENABLE(); 255 /* USER CODE BEGIN TIM1_MspInit 1 */ 256 257 /* USER CODE END TIM1_MspInit 1 */ 258 } 259 else if(htim_base->Instance==TIM3) 260 { 261 /* USER CODE BEGIN TIM3_MspInit 0 */ 262 263 /* USER CODE END TIM3_MspInit 0 */ 264 /* Peripheral clock enable */ 265 __HAL_RCC_TIM3_CLK_ENABLE(); 266 /* USER CODE BEGIN TIM3_MspInit 1 */ 267 268 /* USER CODE END TIM3_MspInit 1 */ 269 } 270 271 } 272 273 void HAL_TIM_MspPostInit(TIM_HandleTypeDef* htim) 274 { 275 GPIO_InitTypeDef GPIO_InitStruct = {0}; 276 if(htim->Instance==TIM1) 277 { 278 /* USER CODE BEGIN TIM1_MspPostInit 0 */ 279 280 /* USER CODE END TIM1_MspPostInit 0 */ 281 __HAL_RCC_GPIOA_CLK_ENABLE(); 282 /**TIM1 GPIO Configuration 283 PA8 ------> TIM1_CH1 284 */ 285 GPIO_InitStruct.Pin = GPIO_PIN_8; 286 GPIO_InitStruct.Mode = GPIO_MODE_AF_PP; 287 GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW; 288 HAL_GPIO_Init(GPIOA, &GPIO_InitStruct); 289 290 /* USER CODE BEGIN TIM1_MspPostInit 1 */ 291 292 /* USER CODE END TIM1_MspPostInit 1 */ 293 } 294 else if(htim->Instance==TIM3) 295 { 296 /* USER CODE BEGIN TIM3_MspPostInit 0 */ 297 298 /* USER CODE END TIM3_MspPostInit 0 */ 299 300 __HAL_RCC_GPIOA_CLK_ENABLE(); 301 /**TIM3 GPIO Configuration 302 PA6 ------> TIM3_CH1 303 */ 304 GPIO_InitStruct.Pin = GPIO_PIN_6; 305 GPIO_InitStruct.Mode = GPIO_MODE_AF_PP; 306 GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW; 307 HAL_GPIO_Init(GPIOA, &GPIO_InitStruct); 308 309 /* USER CODE BEGIN TIM3_MspPostInit 1 */ 310 311 /* USER CODE END TIM3_MspPostInit 1 */ 312 } 313 314 } 315 /** 316 * @brief TIM_Base MSP De-Initialization 317 * This function freeze the hardware resources used in this example 318 * @param htim_base: TIM_Base handle pointer 319 * @retval None 320 */ 321 void HAL_TIM_Base_MspDeInit(TIM_HandleTypeDef* htim_base) 322 { 323 if(htim_base->Instance==TIM1) 324 { 325 /* USER CODE BEGIN TIM1_MspDeInit 0 */ 326 327 /* USER CODE END TIM1_MspDeInit 0 */ 328 /* Peripheral clock disable */ 329 __HAL_RCC_TIM1_CLK_DISABLE(); 330 /* USER CODE BEGIN TIM1_MspDeInit 1 */ 331 332 /* USER CODE END TIM1_MspDeInit 1 */ 333 } 334 else if(htim_base->Instance==TIM3) 335 { 336 /* USER CODE BEGIN TIM3_MspDeInit 0 */ 337 338 /* USER CODE END TIM3_MspDeInit 0 */ 339 /* Peripheral clock disable */ 340 __HAL_RCC_TIM3_CLK_DISABLE(); 341 /* USER CODE BEGIN TIM3_MspDeInit 1 */ 342 343 /* USER CODE END TIM3_MspDeInit 1 */ 344 } 345 346 } 347 348 /** 349 * @brief UART MSP Initialization 350 * This function configures the hardware resources used in this example 351 * @param huart: UART handle pointer 352 * @retval None 353 */ 354 void HAL_UART_MspInit(UART_HandleTypeDef* huart) 355 { 356 GPIO_InitTypeDef GPIO_InitStruct = {0}; 357 if(huart->Instance==USART1) 358 { 359 /* USER CODE BEGIN USART1_MspInit 0 */ 360 361 /* USER CODE END USART1_MspInit 0 */ 362 /* Peripheral clock enable */ 363 __HAL_RCC_USART1_CLK_ENABLE(); 364 365 __HAL_RCC_GPIOA_CLK_ENABLE(); 366 /**USART1 GPIO Configuration 367 PA9 ------> USART1_TX 368 */ 369 GPIO_InitStruct.Pin = GPIO_PIN_9; 370 GPIO_InitStruct.Mode = GPIO_MODE_AF_OD; 371 GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_HIGH; 372 HAL_GPIO_Init(GPIOA, &GPIO_InitStruct); 373 374 /* USART1 DMA Init */ 375 /* USART1_TX Init */ 376 hdma_usart1_tx.Instance = DMA1_Channel4; 377 hdma_usart1_tx.Init.Direction = DMA_MEMORY_TO_PERIPH; 378 hdma_usart1_tx.Init.PeriphInc = DMA_PINC_DISABLE; 379 hdma_usart1_tx.Init.MemInc = DMA_MINC_ENABLE; 380 hdma_usart1_tx.Init.PeriphDataAlignment = DMA_PDATAALIGN_BYTE; 381 hdma_usart1_tx.Init.MemDataAlignment = DMA_MDATAALIGN_BYTE; 382 hdma_usart1_tx.Init.Mode = DMA_NORMAL; 383 hdma_usart1_tx.Init.Priority = DMA_PRIORITY_HIGH; 384 if (HAL_DMA_Init(&hdma_usart1_tx) != HAL_OK) 385 { 386 Error_Handler(); 387 } 388 389 __HAL_LINKDMA(huart,hdmatx,hdma_usart1_tx); 390 391 /* USART1_RX Init */ 392 hdma_usart1_rx.Instance = DMA1_Channel5; 393 hdma_usart1_rx.Init.Direction = DMA_PERIPH_TO_MEMORY; 394 hdma_usart1_rx.Init.PeriphInc = DMA_PINC_DISABLE; 395 hdma_usart1_rx.Init.MemInc = DMA_MINC_ENABLE; 396 hdma_usart1_rx.Init.PeriphDataAlignment = DMA_PDATAALIGN_BYTE; 397 hdma_usart1_rx.Init.MemDataAlignment = DMA_MDATAALIGN_BYTE; 398 hdma_usart1_rx.Init.Mode = DMA_NORMAL; 399 hdma_usart1_rx.Init.Priority = DMA_PRIORITY_HIGH; 400 if (HAL_DMA_Init(&hdma_usart1_rx) != HAL_OK) 401 { 402 Error_Handler(); 403 } 404 405 __HAL_LINKDMA(huart,hdmarx,hdma_usart1_rx); 406 407 /* USART1 interrupt Init */ 408 HAL_NVIC_SetPriority(USART1_IRQn, 0, 0); 409 HAL_NVIC_EnableIRQ(USART1_IRQn); 410 /* USER CODE BEGIN USART1_MspInit 1 */ 411 412 /* USER CODE END USART1_MspInit 1 */ 413 } 414 else if(huart->Instance==USART3) 415 { 416 /* USER CODE BEGIN USART3_MspInit 0 */ 417 418 /* USER CODE END USART3_MspInit 0 */ 419 /* Peripheral clock enable */ 420 __HAL_RCC_USART3_CLK_ENABLE(); 421 422 __HAL_RCC_GPIOC_CLK_ENABLE(); 423 /**USART3 GPIO Configuration 424 PC10 ------> USART3_TX 425 PC11 ------> USART3_RX 426 */ 427 GPIO_InitStruct.Pin = GPIO_PIN_10; 428 GPIO_InitStruct.Mode = GPIO_MODE_AF_PP; 429 GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_HIGH; 430 HAL_GPIO_Init(GPIOC, &GPIO_InitStruct); 431 432 GPIO_InitStruct.Pin = GPIO_PIN_11; 433 GPIO_InitStruct.Mode = GPIO_MODE_INPUT; 434 GPIO_InitStruct.Pull = GPIO_NOPULL; 435 HAL_GPIO_Init(GPIOC, &GPIO_InitStruct); 436 437 __HAL_AFIO_REMAP_USART3_PARTIAL(); 438 439 /* USART3 DMA Init */ 440 /* USART3_RX Init */ 441 hdma_usart3_rx.Instance = DMA1_Channel3; 442 hdma_usart3_rx.Init.Direction = DMA_PERIPH_TO_MEMORY; 443 hdma_usart3_rx.Init.PeriphInc = DMA_PINC_DISABLE; 444 hdma_usart3_rx.Init.MemInc = DMA_MINC_ENABLE; 445 hdma_usart3_rx.Init.PeriphDataAlignment = DMA_PDATAALIGN_BYTE; 446 hdma_usart3_rx.Init.MemDataAlignment = DMA_MDATAALIGN_BYTE; 447 hdma_usart3_rx.Init.Mode = DMA_NORMAL; 448 hdma_usart3_rx.Init.Priority = DMA_PRIORITY_LOW; 449 if (HAL_DMA_Init(&hdma_usart3_rx) != HAL_OK) 450 { 451 Error_Handler(); 452 } 453 454 __HAL_LINKDMA(huart,hdmarx,hdma_usart3_rx); 455 456 /* USART3_TX Init */ 457 hdma_usart3_tx.Instance = DMA1_Channel2; 458 hdma_usart3_tx.Init.Direction = DMA_MEMORY_TO_PERIPH; 459 hdma_usart3_tx.Init.PeriphInc = DMA_PINC_DISABLE; 460 hdma_usart3_tx.Init.MemInc = DMA_MINC_ENABLE; 461 hdma_usart3_tx.Init.PeriphDataAlignment = DMA_PDATAALIGN_BYTE; 462 hdma_usart3_tx.Init.MemDataAlignment = DMA_MDATAALIGN_BYTE; 463 hdma_usart3_tx.Init.Mode = DMA_NORMAL; 464 hdma_usart3_tx.Init.Priority = DMA_PRIORITY_LOW; 465 if (HAL_DMA_Init(&hdma_usart3_tx) != HAL_OK) 466 { 467 Error_Handler(); 468 } 469 470 __HAL_LINKDMA(huart,hdmatx,hdma_usart3_tx); 471 472 /* USART3 interrupt Init */ 473 HAL_NVIC_SetPriority(USART3_IRQn, 0, 0); 474 HAL_NVIC_EnableIRQ(USART3_IRQn); 475 /* USER CODE BEGIN USART3_MspInit 1 */ 476 477 /* USER CODE END USART3_MspInit 1 */ 478 } 479 480 } 481 482 /** 483 * @brief UART MSP De-Initialization 484 * This function freeze the hardware resources used in this example 485 * @param huart: UART handle pointer 486 * @retval None 487 */ 488 void HAL_UART_MspDeInit(UART_HandleTypeDef* huart) 489 { 490 if(huart->Instance==USART1) 491 { 492 /* USER CODE BEGIN USART1_MspDeInit 0 */ 493 494 /* USER CODE END USART1_MspDeInit 0 */ 495 /* Peripheral clock disable */ 496 __HAL_RCC_USART1_CLK_DISABLE(); 497 498 /**USART1 GPIO Configuration 499 PA9 ------> USART1_TX 500 */ 501 HAL_GPIO_DeInit(GPIOA, GPIO_PIN_9); 502 503 /* USART1 DMA DeInit */ 504 HAL_DMA_DeInit(huart->hdmatx); 505 HAL_DMA_DeInit(huart->hdmarx); 506 507 /* USART1 interrupt DeInit */ 508 HAL_NVIC_DisableIRQ(USART1_IRQn); 509 /* USER CODE BEGIN USART1_MspDeInit 1 */ 510 511 /* USER CODE END USART1_MspDeInit 1 */ 512 } 513 else if(huart->Instance==USART3) 514 { 515 /* USER CODE BEGIN USART3_MspDeInit 0 */ 516 517 /* USER CODE END USART3_MspDeInit 0 */ 518 /* Peripheral clock disable */ 519 __HAL_RCC_USART3_CLK_DISABLE(); 520 521 /**USART3 GPIO Configuration 522 PC10 ------> USART3_TX 523 PC11 ------> USART3_RX 524 */ 525 HAL_GPIO_DeInit(GPIOC, GPIO_PIN_10|GPIO_PIN_11); 526 527 /* USART3 DMA DeInit */ 528 HAL_DMA_DeInit(huart->hdmarx); 529 HAL_DMA_DeInit(huart->hdmatx); 530 531 /* USART3 interrupt DeInit */ 532 HAL_NVIC_DisableIRQ(USART3_IRQn); 533 /* USER CODE BEGIN USART3_MspDeInit 1 */ 534 535 /* USER CODE END USART3_MspDeInit 1 */ 536 } 537 538 } 539 540 /* USER CODE BEGIN 1 */ 541 542 /* USER CODE END 1 */
