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