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