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