/* USER CODE BEGIN Header */ /** ****************************************************************************** * @file stm32h7xx_hal_msp.c * @brief This file provides code for the MSP Initialization * and de-Initialization codes. ****************************************************************************** * @attention * * Copyright (c) 2022 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 "main.h" /* USER CODE BEGIN Includes */ /* USER CODE END Includes */ /* Private typedef -----------------------------------------------------------*/ /* USER CODE BEGIN TD */ /* USER CODE END TD */ /* Private define ------------------------------------------------------------*/ /* USER CODE BEGIN Define */ /* USER CODE END Define */ /* Private macro -------------------------------------------------------------*/ /* USER CODE BEGIN Macro */ /* USER CODE END Macro */ /* Private variables ---------------------------------------------------------*/ /* USER CODE BEGIN PV */ /* USER CODE END PV */ /* Private function prototypes -----------------------------------------------*/ /* USER CODE BEGIN PFP */ /* USER CODE END PFP */ /* External functions --------------------------------------------------------*/ /* USER CODE BEGIN ExternalFunctions */ /* USER CODE END ExternalFunctions */ /* USER CODE BEGIN 0 */ /* USER CODE END 0 */ /** * Initializes the Global MSP. */ void HAL_MspInit(void) { /* USER CODE BEGIN MspInit 0 */ /* USER CODE END MspInit 0 */ __HAL_RCC_SYSCFG_CLK_ENABLE(); /* System interrupt init*/ /* SVCall_IRQn interrupt configuration */ HAL_NVIC_SetPriority(SVCall_IRQn, 15, 0); /* PendSV_IRQn interrupt configuration */ HAL_NVIC_SetPriority(PendSV_IRQn, 15, 0); /* Peripheral interrupt init */ /* PVD_AVD_IRQn interrupt configuration */ HAL_NVIC_SetPriority(PVD_AVD_IRQn, 0, 0); HAL_NVIC_EnableIRQ(PVD_AVD_IRQn); /* FLASH_IRQn interrupt configuration */ HAL_NVIC_SetPriority(FLASH_IRQn, 0, 0); HAL_NVIC_EnableIRQ(FLASH_IRQn); /* RCC_IRQn interrupt configuration */ HAL_NVIC_SetPriority(RCC_IRQn, 0, 0); HAL_NVIC_EnableIRQ(RCC_IRQn); /* FPU_IRQn interrupt configuration */ HAL_NVIC_SetPriority(FPU_IRQn, 0, 0); HAL_NVIC_EnableIRQ(FPU_IRQn); /* HSEM1_IRQn interrupt configuration */ HAL_NVIC_SetPriority(HSEM1_IRQn, 0, 0); HAL_NVIC_EnableIRQ(HSEM1_IRQn); /* USER CODE BEGIN MspInit 1 */ /* USER CODE END MspInit 1 */ } /** * @brief I2C MSP Initialization * This function configures the hardware resources used in this example * @param hi2c: I2C handle pointer * @retval None */ void HAL_I2C_MspInit(I2C_HandleTypeDef* hi2c) { GPIO_InitTypeDef GPIO_InitStruct = {0}; RCC_PeriphCLKInitTypeDef PeriphClkInitStruct = {0}; if(hi2c->Instance==I2C4) { /* USER CODE BEGIN I2C4_MspInit 0 */ /* USER CODE END I2C4_MspInit 0 */ /** Initializes the peripherals clock */ PeriphClkInitStruct.PeriphClockSelection = RCC_PERIPHCLK_I2C4; PeriphClkInitStruct.I2c4ClockSelection = RCC_I2C4CLKSOURCE_D3PCLK1; if (HAL_RCCEx_PeriphCLKConfig(&PeriphClkInitStruct) != HAL_OK) { Error_Handler(); } __HAL_RCC_GPIOB_CLK_ENABLE(); /**I2C4 GPIO Configuration PB7 ------> I2C4_SDA PB8 ------> I2C4_SCL */ GPIO_InitStruct.Pin = GPIO_PIN_7|GPIO_PIN_8; GPIO_InitStruct.Mode = GPIO_MODE_AF_OD; GPIO_InitStruct.Pull = GPIO_NOPULL; GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW; GPIO_InitStruct.Alternate = GPIO_AF6_I2C4; HAL_GPIO_Init(GPIOB, &GPIO_InitStruct); /* Peripheral clock enable */ __HAL_RCC_I2C4_CLK_ENABLE(); /* I2C4 interrupt Init */ HAL_NVIC_SetPriority(I2C4_EV_IRQn, 0, 0); HAL_NVIC_EnableIRQ(I2C4_EV_IRQn); HAL_NVIC_SetPriority(I2C4_ER_IRQn, 0, 0); HAL_NVIC_EnableIRQ(I2C4_ER_IRQn); /* USER CODE BEGIN I2C4_MspInit 1 */ /* USER CODE END I2C4_MspInit 1 */ } } /** * @brief I2C MSP De-Initialization * This function freeze the hardware resources used in this example * @param hi2c: I2C handle pointer * @retval None */ void HAL_I2C_MspDeInit(I2C_HandleTypeDef* hi2c) { if(hi2c->Instance==I2C4) { /* USER CODE BEGIN I2C4_MspDeInit 0 */ /* USER CODE END I2C4_MspDeInit 0 */ /* Peripheral clock disable */ __HAL_RCC_I2C4_CLK_DISABLE(); /**I2C4 GPIO Configuration PB7 ------> I2C4_SDA PB8 ------> I2C4_SCL */ HAL_GPIO_DeInit(GPIOB, GPIO_PIN_7); HAL_GPIO_DeInit(GPIOB, GPIO_PIN_8); /* I2C4 interrupt DeInit */ HAL_NVIC_DisableIRQ(I2C4_EV_IRQn); HAL_NVIC_DisableIRQ(I2C4_ER_IRQn); /* USER CODE BEGIN I2C4_MspDeInit 1 */ /* USER CODE END I2C4_MspDeInit 1 */ } } /** * @brief QSPI MSP Initialization * This function configures the hardware resources used in this example * @param hqspi: QSPI handle pointer * @retval None */ void HAL_QSPI_MspInit(QSPI_HandleTypeDef* hqspi) { GPIO_InitTypeDef GPIO_InitStruct = {0}; RCC_PeriphCLKInitTypeDef PeriphClkInitStruct = {0}; if(hqspi->Instance==QUADSPI) { /* USER CODE BEGIN QUADSPI_MspInit 0 */ /* USER CODE END QUADSPI_MspInit 0 */ /** Initializes the peripherals clock */ PeriphClkInitStruct.PeriphClockSelection = RCC_PERIPHCLK_QSPI; PeriphClkInitStruct.QspiClockSelection = RCC_QSPICLKSOURCE_D1HCLK; if (HAL_RCCEx_PeriphCLKConfig(&PeriphClkInitStruct) != HAL_OK) { Error_Handler(); } /* Peripheral clock enable */ __HAL_RCC_QSPI_CLK_ENABLE(); __HAL_RCC_GPIOE_CLK_ENABLE(); __HAL_RCC_GPIOB_CLK_ENABLE(); __HAL_RCC_GPIOD_CLK_ENABLE(); /**QUADSPI GPIO Configuration PE2 ------> QUADSPI_BK1_IO2 PB2 ------> QUADSPI_CLK PD11 ------> QUADSPI_BK1_IO0 PD12 ------> QUADSPI_BK1_IO1 PD13 ------> QUADSPI_BK1_IO3 PB6 ------> QUADSPI_BK1_NCS */ GPIO_InitStruct.Pin = GPIO_PIN_2; GPIO_InitStruct.Mode = GPIO_MODE_AF_PP; GPIO_InitStruct.Pull = GPIO_NOPULL; GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW; GPIO_InitStruct.Alternate = GPIO_AF9_QUADSPI; HAL_GPIO_Init(GPIOE, &GPIO_InitStruct); GPIO_InitStruct.Pin = GPIO_PIN_2; GPIO_InitStruct.Mode = GPIO_MODE_AF_PP; GPIO_InitStruct.Pull = GPIO_NOPULL; GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW; GPIO_InitStruct.Alternate = GPIO_AF9_QUADSPI; HAL_GPIO_Init(GPIOB, &GPIO_InitStruct); GPIO_InitStruct.Pin = GPIO_PIN_11|GPIO_PIN_12|GPIO_PIN_13; GPIO_InitStruct.Mode = GPIO_MODE_AF_PP; GPIO_InitStruct.Pull = GPIO_NOPULL; GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW; GPIO_InitStruct.Alternate = GPIO_AF9_QUADSPI; HAL_GPIO_Init(GPIOD, &GPIO_InitStruct); GPIO_InitStruct.Pin = GPIO_PIN_6; GPIO_InitStruct.Mode = GPIO_MODE_AF_PP; GPIO_InitStruct.Pull = GPIO_NOPULL; GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW; GPIO_InitStruct.Alternate = GPIO_AF10_QUADSPI; HAL_GPIO_Init(GPIOB, &GPIO_InitStruct); /* QUADSPI interrupt Init */ HAL_NVIC_SetPriority(QUADSPI_IRQn, 0, 0); HAL_NVIC_EnableIRQ(QUADSPI_IRQn); /* USER CODE BEGIN QUADSPI_MspInit 1 */ /* USER CODE END QUADSPI_MspInit 1 */ } } /** * @brief QSPI MSP De-Initialization * This function freeze the hardware resources used in this example * @param hqspi: QSPI handle pointer * @retval None */ void HAL_QSPI_MspDeInit(QSPI_HandleTypeDef* hqspi) { if(hqspi->Instance==QUADSPI) { /* USER CODE BEGIN QUADSPI_MspDeInit 0 */ /* USER CODE END QUADSPI_MspDeInit 0 */ /* Peripheral clock disable */ __HAL_RCC_QSPI_CLK_DISABLE(); /**QUADSPI GPIO Configuration PE2 ------> QUADSPI_BK1_IO2 PB2 ------> QUADSPI_CLK PD11 ------> QUADSPI_BK1_IO0 PD12 ------> QUADSPI_BK1_IO1 PD13 ------> QUADSPI_BK1_IO3 PB6 ------> QUADSPI_BK1_NCS */ HAL_GPIO_DeInit(GPIOE, GPIO_PIN_2); HAL_GPIO_DeInit(GPIOB, GPIO_PIN_2|GPIO_PIN_6); HAL_GPIO_DeInit(GPIOD, GPIO_PIN_11|GPIO_PIN_12|GPIO_PIN_13); /* QUADSPI interrupt DeInit */ HAL_NVIC_DisableIRQ(QUADSPI_IRQn); /* USER CODE BEGIN QUADSPI_MspDeInit 1 */ /* USER CODE END QUADSPI_MspDeInit 1 */ } } /** * @brief UART MSP Initialization * This function configures the hardware resources used in this example * @param huart: UART handle pointer * @retval None */ void HAL_UART_MspInit(UART_HandleTypeDef* huart) { GPIO_InitTypeDef GPIO_InitStruct = {0}; RCC_PeriphCLKInitTypeDef PeriphClkInitStruct = {0}; if(huart->Instance==USART1) { /* USER CODE BEGIN USART1_MspInit 0 */ /* USER CODE END USART1_MspInit 0 */ /** Initializes the peripherals clock */ PeriphClkInitStruct.PeriphClockSelection = RCC_PERIPHCLK_USART1; PeriphClkInitStruct.Usart16ClockSelection = RCC_USART16CLKSOURCE_D2PCLK2; if (HAL_RCCEx_PeriphCLKConfig(&PeriphClkInitStruct) != HAL_OK) { Error_Handler(); } /* Peripheral clock enable */ __HAL_RCC_USART1_CLK_ENABLE(); __HAL_RCC_GPIOA_CLK_ENABLE(); /**USART1 GPIO Configuration PA9 ------> USART1_TX PA10 ------> USART1_RX */ GPIO_InitStruct.Pin = GPIO_PIN_9|GPIO_PIN_10; GPIO_InitStruct.Mode = GPIO_MODE_AF_PP; GPIO_InitStruct.Pull = GPIO_NOPULL; GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW; GPIO_InitStruct.Alternate = GPIO_AF7_USART1; HAL_GPIO_Init(GPIOA, &GPIO_InitStruct); /* 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 */ } } /** * @brief UART MSP De-Initialization * This function freeze the hardware resources used in this example * @param huart: UART handle pointer * @retval None */ void HAL_UART_MspDeInit(UART_HandleTypeDef* huart) { if(huart->Instance==USART1) { /* USER CODE BEGIN USART1_MspDeInit 0 */ /* USER CODE END USART1_MspDeInit 0 */ /* Peripheral clock disable */ __HAL_RCC_USART1_CLK_DISABLE(); /**USART1 GPIO Configuration PA9 ------> USART1_TX PA10 ------> USART1_RX */ HAL_GPIO_DeInit(GPIOA, GPIO_PIN_9|GPIO_PIN_10); /* USART1 interrupt DeInit */ HAL_NVIC_DisableIRQ(USART1_IRQn); /* USER CODE BEGIN USART1_MspDeInit 1 */ /* USER CODE END USART1_MspDeInit 1 */ } } /** * @brief PCD MSP Initialization * This function configures the hardware resources used in this example * @param hpcd: PCD handle pointer * @retval None */ void HAL_PCD_MspInit(PCD_HandleTypeDef* hpcd) { GPIO_InitTypeDef GPIO_InitStruct = {0}; RCC_PeriphCLKInitTypeDef PeriphClkInitStruct = {0}; if(hpcd->Instance==USB_OTG_FS) { /* USER CODE BEGIN USB_OTG_FS_MspInit 0 */ /* USER CODE END USB_OTG_FS_MspInit 0 */ /** Initializes the peripherals clock */ PeriphClkInitStruct.PeriphClockSelection = RCC_PERIPHCLK_USB; PeriphClkInitStruct.UsbClockSelection = RCC_USBCLKSOURCE_HSI48; if (HAL_RCCEx_PeriphCLKConfig(&PeriphClkInitStruct) != HAL_OK) { Error_Handler(); } /** Enable USB Voltage detector */ HAL_PWREx_EnableUSBVoltageDetector(); __HAL_RCC_GPIOA_CLK_ENABLE(); /**USB_OTG_FS GPIO Configuration PA11 ------> USB_OTG_FS_DM PA12 ------> USB_OTG_FS_DP */ GPIO_InitStruct.Pin = GPIO_PIN_11|GPIO_PIN_12; GPIO_InitStruct.Mode = GPIO_MODE_AF_PP; GPIO_InitStruct.Pull = GPIO_NOPULL; GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW; GPIO_InitStruct.Alternate = GPIO_AF10_OTG1_FS; HAL_GPIO_Init(GPIOA, &GPIO_InitStruct); /* Peripheral clock enable */ __HAL_RCC_USB_OTG_FS_CLK_ENABLE(); /* USB_OTG_FS interrupt Init */ HAL_NVIC_SetPriority(OTG_FS_EP1_OUT_IRQn, 4, 0); HAL_NVIC_EnableIRQ(OTG_FS_EP1_OUT_IRQn); HAL_NVIC_SetPriority(OTG_FS_EP1_IN_IRQn, 4, 0); HAL_NVIC_EnableIRQ(OTG_FS_EP1_IN_IRQn); HAL_NVIC_SetPriority(OTG_FS_IRQn, 4, 0); HAL_NVIC_EnableIRQ(OTG_FS_IRQn); /* USER CODE BEGIN USB_OTG_FS_MspInit 1 */ /* USER CODE END USB_OTG_FS_MspInit 1 */ } } /** * @brief PCD MSP De-Initialization * This function freeze the hardware resources used in this example * @param hpcd: PCD handle pointer * @retval None */ void HAL_PCD_MspDeInit(PCD_HandleTypeDef* hpcd) { if(hpcd->Instance==USB_OTG_FS) { /* USER CODE BEGIN USB_OTG_FS_MspDeInit 0 */ /* USER CODE END USB_OTG_FS_MspDeInit 0 */ /* Peripheral clock disable */ __HAL_RCC_USB_OTG_FS_CLK_DISABLE(); /**USB_OTG_FS GPIO Configuration PA11 ------> USB_OTG_FS_DM PA12 ------> USB_OTG_FS_DP */ HAL_GPIO_DeInit(GPIOA, GPIO_PIN_11|GPIO_PIN_12); /* USB_OTG_FS interrupt DeInit */ HAL_NVIC_DisableIRQ(OTG_FS_EP1_OUT_IRQn); HAL_NVIC_DisableIRQ(OTG_FS_EP1_IN_IRQn); HAL_NVIC_DisableIRQ(OTG_FS_IRQn); /* USER CODE BEGIN USB_OTG_FS_MspDeInit 1 */ /* USER CODE END USB_OTG_FS_MspDeInit 1 */ } } extern DMA_HandleTypeDef hdma_sai3_a; static uint32_t SAI3_client =0; void HAL_SAI_MspInit(SAI_HandleTypeDef* hsai) { GPIO_InitTypeDef GPIO_InitStruct; RCC_PeriphCLKInitTypeDef PeriphClkInitStruct = {0}; /* SAI3 */ if(hsai->Instance==SAI3_Block_A) { /* Peripheral clock enable */ /** Initializes the peripherals clock */ PeriphClkInitStruct.PeriphClockSelection = RCC_PERIPHCLK_SAI3; PeriphClkInitStruct.Sai23ClockSelection = RCC_SAI23CLKSOURCE_PIN; if (HAL_RCCEx_PeriphCLKConfig(&PeriphClkInitStruct) != HAL_OK) { Error_Handler(); } if (SAI3_client == 0) { __HAL_RCC_SAI3_CLK_ENABLE(); /* Peripheral interrupt init*/ HAL_NVIC_SetPriority(SAI3_IRQn, 0, 0); HAL_NVIC_EnableIRQ(SAI3_IRQn); } SAI3_client ++; /**SAI3_A_Block_A GPIO Configuration PD15 ------> SAI3_MCLK_A PD0 ------> SAI3_SCK_A PD1 ------> SAI3_SD_A PD4 ------> SAI3_FS_A */ GPIO_InitStruct.Pin = GPIO_PIN_15|GPIO_PIN_0|GPIO_PIN_1|GPIO_PIN_4; GPIO_InitStruct.Mode = GPIO_MODE_AF_PP; GPIO_InitStruct.Pull = GPIO_NOPULL; GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW; GPIO_InitStruct.Alternate = GPIO_AF6_SAI3; HAL_GPIO_Init(GPIOD, &GPIO_InitStruct); /* Peripheral DMA init*/ hdma_sai3_a.Instance = DMA1_Stream0; hdma_sai3_a.Init.Request = DMA_REQUEST_SAI3_A; hdma_sai3_a.Init.Direction = DMA_MEMORY_TO_PERIPH; hdma_sai3_a.Init.PeriphInc = DMA_PINC_DISABLE; hdma_sai3_a.Init.MemInc = DMA_MINC_ENABLE; hdma_sai3_a.Init.PeriphDataAlignment = DMA_PDATAALIGN_HALFWORD; hdma_sai3_a.Init.MemDataAlignment = DMA_MDATAALIGN_HALFWORD; hdma_sai3_a.Init.Mode = DMA_CIRCULAR; hdma_sai3_a.Init.Priority = DMA_PRIORITY_MEDIUM; hdma_sai3_a.Init.FIFOMode = DMA_FIFOMODE_DISABLE; if (HAL_DMA_Init(&hdma_sai3_a) != HAL_OK) { Error_Handler(); } /* Several peripheral DMA handle pointers point to the same DMA handle. Be aware that there is only one channel to perform all the requested DMAs. */ __HAL_LINKDMA(hsai,hdmarx,hdma_sai3_a); __HAL_LINKDMA(hsai,hdmatx,hdma_sai3_a); } } void HAL_SAI_MspDeInit(SAI_HandleTypeDef* hsai) { /* SAI3 */ if(hsai->Instance==SAI3_Block_A) { SAI3_client --; if (SAI3_client == 0) { /* Peripheral clock disable */ __HAL_RCC_SAI3_CLK_DISABLE(); /* SAI3 interrupt DeInit */ HAL_NVIC_DisableIRQ(SAI3_IRQn); } /**SAI3_A_Block_A GPIO Configuration PD15 ------> SAI3_MCLK_A PD0 ------> SAI3_SCK_A PD1 ------> SAI3_SD_A PD4 ------> SAI3_FS_A */ HAL_GPIO_DeInit(GPIOD, GPIO_PIN_15|GPIO_PIN_0|GPIO_PIN_1|GPIO_PIN_4); /* SAI3 DMA Deinit */ HAL_DMA_DeInit(hsai->hdmarx); HAL_DMA_DeInit(hsai->hdmatx); } } /* USER CODE BEGIN 1 */ /* USER CODE END 1 */