1 /* USER CODE BEGIN Header */ 2 /** 3 ****************************************************************************** 4 * File Name : stm32l0xx_hal_msp.c 5 * Description : This file provides code for the MSP Initialization 6 * and de-Initialization codes. 7 ****************************************************************************** 8 * @attention 9 * 10 * <h2><center>© Copyright (c) 2019 STMicroelectronics. 11 * All rights reserved.</center></h2> 12 * 13 * This software component is licensed by ST under BSD 3-Clause license, 14 * the "License"; You may not use this file except in compliance with the 15 * License. You may obtain a copy of the License at: 16 * opensource.org/licenses/BSD-3-Clause 17 * 18 ****************************************************************************** 19 */ 20 /* USER CODE END Header */ 21 22 /* Includes ------------------------------------------------------------------*/ 23 #include "main.h" 24 /* USER CODE BEGIN Includes */ 25 26 /* USER CODE END Includes */ 27 extern DMA_HandleTypeDef hdma_spi1_rx; 28 29 extern DMA_HandleTypeDef hdma_spi1_tx; 30 31 /* Private typedef -----------------------------------------------------------*/ 32 /* USER CODE BEGIN TD */ 33 34 /* USER CODE END TD */ 35 36 /* Private define ------------------------------------------------------------*/ 37 /* USER CODE BEGIN Define */ 38 39 /* USER CODE END Define */ 40 41 /* Private macro -------------------------------------------------------------*/ 42 /* USER CODE BEGIN Macro */ 43 44 /* USER CODE END Macro */ 45 46 /* Private variables ---------------------------------------------------------*/ 47 /* USER CODE BEGIN PV */ 48 49 /* USER CODE END PV */ 50 51 /* Private function prototypes -----------------------------------------------*/ 52 /* USER CODE BEGIN PFP */ 53 54 /* USER CODE END PFP */ 55 56 /* External functions --------------------------------------------------------*/ 57 /* USER CODE BEGIN ExternalFunctions */ 58 59 /* USER CODE END ExternalFunctions */ 60 61 /* USER CODE BEGIN 0 */ 62 63 /* USER CODE END 0 */ 64 /** 65 * Initializes the Global MSP. 66 */ HAL_MspInit(void)67void HAL_MspInit(void) 68 { 69 /* USER CODE BEGIN MspInit 0 */ 70 71 /* USER CODE END MspInit 0 */ 72 73 __HAL_RCC_SYSCFG_CLK_ENABLE(); 74 __HAL_RCC_PWR_CLK_ENABLE(); 75 76 /* System interrupt init*/ 77 78 /* USER CODE BEGIN MspInit 1 */ 79 80 /* USER CODE END MspInit 1 */ 81 } 82 83 /** 84 * @brief SPI MSP Initialization 85 * This function configures the hardware resources used in this example 86 * @param hspi: SPI handle pointer 87 * @retval None 88 */ HAL_SPI_MspInit(SPI_HandleTypeDef * hspi)89void HAL_SPI_MspInit(SPI_HandleTypeDef* hspi) 90 { 91 GPIO_InitTypeDef GPIO_InitStruct = {0}; 92 if(hspi->Instance==SPI1) 93 { 94 /* USER CODE BEGIN SPI1_MspInit 0 */ 95 96 /* USER CODE END SPI1_MspInit 0 */ 97 /* Peripheral clock enable */ 98 __HAL_RCC_SPI1_CLK_ENABLE(); 99 100 __HAL_RCC_GPIOA_CLK_ENABLE(); 101 /**SPI1 GPIO Configuration 102 PA5 ------> SPI1_SCK 103 PA6 ------> SPI1_MISO 104 PA7 ------> SPI1_MOSI 105 */ 106 GPIO_InitStruct.Pin = GPIO_PIN_5|GPIO_PIN_6|GPIO_PIN_7; 107 GPIO_InitStruct.Mode = GPIO_MODE_AF_PP; 108 GPIO_InitStruct.Pull = GPIO_NOPULL; 109 GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_VERY_HIGH; 110 GPIO_InitStruct.Alternate = GPIO_AF0_SPI1; 111 HAL_GPIO_Init(GPIOA, &GPIO_InitStruct); 112 113 /* SPI1 DMA Init */ 114 /* SPI1_RX Init */ 115 hdma_spi1_rx.Instance = DMA1_Channel2; 116 hdma_spi1_rx.Init.Request = DMA_REQUEST_1; 117 hdma_spi1_rx.Init.Direction = DMA_PERIPH_TO_MEMORY; 118 hdma_spi1_rx.Init.PeriphInc = DMA_PINC_DISABLE; 119 hdma_spi1_rx.Init.MemInc = DMA_MINC_ENABLE; 120 hdma_spi1_rx.Init.PeriphDataAlignment = DMA_PDATAALIGN_BYTE; 121 hdma_spi1_rx.Init.MemDataAlignment = DMA_MDATAALIGN_BYTE; 122 hdma_spi1_rx.Init.Mode = DMA_NORMAL; 123 hdma_spi1_rx.Init.Priority = DMA_PRIORITY_LOW; 124 if (HAL_DMA_Init(&hdma_spi1_rx) != HAL_OK) 125 { 126 Error_Handler(); 127 } 128 129 __HAL_LINKDMA(hspi,hdmarx,hdma_spi1_rx); 130 131 /* SPI1_TX Init */ 132 hdma_spi1_tx.Instance = DMA1_Channel3; 133 hdma_spi1_tx.Init.Request = DMA_REQUEST_1; 134 hdma_spi1_tx.Init.Direction = DMA_MEMORY_TO_PERIPH; 135 hdma_spi1_tx.Init.PeriphInc = DMA_PINC_DISABLE; 136 hdma_spi1_tx.Init.MemInc = DMA_MINC_ENABLE; 137 hdma_spi1_tx.Init.PeriphDataAlignment = DMA_PDATAALIGN_BYTE; 138 hdma_spi1_tx.Init.MemDataAlignment = DMA_MDATAALIGN_BYTE; 139 hdma_spi1_tx.Init.Mode = DMA_NORMAL; 140 hdma_spi1_tx.Init.Priority = DMA_PRIORITY_LOW; 141 if (HAL_DMA_Init(&hdma_spi1_tx) != HAL_OK) 142 { 143 Error_Handler(); 144 } 145 146 __HAL_LINKDMA(hspi,hdmatx,hdma_spi1_tx); 147 148 /* USER CODE BEGIN SPI1_MspInit 1 */ 149 150 /* USER CODE END SPI1_MspInit 1 */ 151 } 152 153 } 154 155 /** 156 * @brief SPI MSP De-Initialization 157 * This function freeze the hardware resources used in this example 158 * @param hspi: SPI handle pointer 159 * @retval None 160 */ HAL_SPI_MspDeInit(SPI_HandleTypeDef * hspi)161void HAL_SPI_MspDeInit(SPI_HandleTypeDef* hspi) 162 { 163 if(hspi->Instance==SPI1) 164 { 165 /* USER CODE BEGIN SPI1_MspDeInit 0 */ 166 167 /* USER CODE END SPI1_MspDeInit 0 */ 168 /* Peripheral clock disable */ 169 __HAL_RCC_SPI1_CLK_DISABLE(); 170 171 /**SPI1 GPIO Configuration 172 PA5 ------> SPI1_SCK 173 PA6 ------> SPI1_MISO 174 PA7 ------> SPI1_MOSI 175 */ 176 HAL_GPIO_DeInit(GPIOA, GPIO_PIN_5|GPIO_PIN_6|GPIO_PIN_7); 177 178 /* SPI1 DMA DeInit */ 179 HAL_DMA_DeInit(hspi->hdmarx); 180 HAL_DMA_DeInit(hspi->hdmatx); 181 /* USER CODE BEGIN SPI1_MspDeInit 1 */ 182 183 /* USER CODE END SPI1_MspDeInit 1 */ 184 } 185 186 } 187 188 /** 189 * @brief UART MSP Initialization 190 * This function configures the hardware resources used in this example 191 * @param huart: UART handle pointer 192 * @retval None 193 */ HAL_UART_MspInit(UART_HandleTypeDef * huart)194void HAL_UART_MspInit(UART_HandleTypeDef* huart) 195 { 196 GPIO_InitTypeDef GPIO_InitStruct = {0}; 197 if(huart->Instance==USART2) 198 { 199 /* USER CODE BEGIN USART2_MspInit 0 */ 200 201 /* USER CODE END USART2_MspInit 0 */ 202 /* Peripheral clock enable */ 203 __HAL_RCC_USART2_CLK_ENABLE(); 204 205 __HAL_RCC_GPIOA_CLK_ENABLE(); 206 /**USART2 GPIO Configuration 207 PA2 ------> USART2_TX 208 PA3 ------> USART2_RX 209 */ 210 GPIO_InitStruct.Pin = USART_TX_Pin|USART_RX_Pin; 211 GPIO_InitStruct.Mode = GPIO_MODE_AF_PP; 212 GPIO_InitStruct.Pull = GPIO_NOPULL; 213 GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_VERY_HIGH; 214 GPIO_InitStruct.Alternate = GPIO_AF4_USART2; 215 HAL_GPIO_Init(GPIOA, &GPIO_InitStruct); 216 217 /* USER CODE BEGIN USART2_MspInit 1 */ 218 219 /* USER CODE END USART2_MspInit 1 */ 220 } 221 222 } 223 224 /** 225 * @brief UART MSP De-Initialization 226 * This function freeze the hardware resources used in this example 227 * @param huart: UART handle pointer 228 * @retval None 229 */ HAL_UART_MspDeInit(UART_HandleTypeDef * huart)230void HAL_UART_MspDeInit(UART_HandleTypeDef* huart) 231 { 232 if(huart->Instance==USART2) 233 { 234 /* USER CODE BEGIN USART2_MspDeInit 0 */ 235 236 /* USER CODE END USART2_MspDeInit 0 */ 237 /* Peripheral clock disable */ 238 __HAL_RCC_USART2_CLK_DISABLE(); 239 240 /**USART2 GPIO Configuration 241 PA2 ------> USART2_TX 242 PA3 ------> USART2_RX 243 */ 244 HAL_GPIO_DeInit(GPIOA, USART_TX_Pin|USART_RX_Pin); 245 246 /* USER CODE BEGIN USART2_MspDeInit 1 */ 247 248 /* USER CODE END USART2_MspDeInit 1 */ 249 } 250 251 } 252 253 /* USER CODE BEGIN 1 */ 254 255 /* USER CODE END 1 */ 256 257 /************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/ 258