xref: /btstack/port/stm32-l073rz-nucleo-em9304/Src/stm32l0xx_hal_msp.c (revision e838079242074edcbcbb400962776e15fe6ca6cb)
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>&copy; 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)67 void 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)89 void 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)161 void 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)194 void 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)230 void 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