1 /* USER CODE BEGIN Header */
2 /**
3   ******************************************************************************
4   * File Name          : stm32f0xx_hal_msp.c
5   * Description        : This file provides code for the MSP Initialization
6   *                      and de-Initialization codes.
7   ******************************************************************************
8   ** This notice applies to any and all portions of this file
9   * that are not between comment pairs USER CODE BEGIN and
10   * USER CODE END. Other portions of this file, whether
11   * inserted by the user or by software development tools
12   * are owned by their respective copyright owners.
13   *
14   * COPYRIGHT(c) 2018 STMicroelectronics
15   *
16   * Redistribution and use in source and binary forms, with or without modification,
17   * are permitted provided that the following conditions are met:
18   *   1. Redistributions of source code must retain the above copyright notice,
19   *      this list of conditions and the following disclaimer.
20   *   2. Redistributions in binary form must reproduce the above copyright notice,
21   *      this list of conditions and the following disclaimer in the documentation
22   *      and/or other materials provided with the distribution.
23   *   3. Neither the name of STMicroelectronics nor the names of its contributors
24   *      may be used to endorse or promote products derived from this software
25   *      without specific prior written permission.
26   *
27   * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
28   * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
29   * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
30   * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
31   * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
32   * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
33   * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
34   * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
35   * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
36   * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
37   *
38   ******************************************************************************
39   */
40 /* USER CODE END Header */
41 
42 /* Includes ------------------------------------------------------------------*/
43 #include "main.h"
44 /* USER CODE BEGIN Includes */
45 #include <drv_common.h>
46 /* USER CODE END Includes */
47 
48 /* Private typedef -----------------------------------------------------------*/
49 /* USER CODE BEGIN TD */
50 
51 /* USER CODE END TD */
52 
53 /* Private define ------------------------------------------------------------*/
54 /* USER CODE BEGIN Define */
55 
56 /* USER CODE END Define */
57 
58 /* Private macro -------------------------------------------------------------*/
59 /* USER CODE BEGIN Macro */
60 
61 /* USER CODE END Macro */
62 
63 /* Private variables ---------------------------------------------------------*/
64 /* USER CODE BEGIN PV */
65 
66 /* USER CODE END PV */
67 
68 /* Private function prototypes -----------------------------------------------*/
69 /* USER CODE BEGIN PFP */
70 
71 /* USER CODE END PFP */
72 
73 /* External functions --------------------------------------------------------*/
74 /* USER CODE BEGIN ExternalFunctions */
75 
76 /* USER CODE END ExternalFunctions */
77 
78 /* USER CODE BEGIN 0 */
79 
80 /* USER CODE END 0 */
81 
82 void HAL_TIM_MspPostInit(TIM_HandleTypeDef *htim);
83                                                                                 /**
84   * Initializes the Global MSP.
85   */
HAL_MspInit(void)86 void HAL_MspInit(void)
87 {
88   /* USER CODE BEGIN MspInit 0 */
89 
90   /* USER CODE END MspInit 0 */
91 
92   __HAL_RCC_SYSCFG_CLK_ENABLE();
93   __HAL_RCC_PWR_CLK_ENABLE();
94 
95   /* System interrupt init*/
96 
97   /* USER CODE BEGIN MspInit 1 */
98 
99   /* USER CODE END MspInit 1 */
100 }
101 
102 /**
103 * @brief ADC MSP Initialization
104 * This function configures the hardware resources used in this example
105 * @param hadc: ADC handle pointer
106 * @retval None
107 */
HAL_ADC_MspInit(ADC_HandleTypeDef * hadc)108 void HAL_ADC_MspInit(ADC_HandleTypeDef* hadc)
109 {
110   GPIO_InitTypeDef GPIO_InitStruct = {0};
111   if(hadc->Instance==ADC1)
112   {
113   /* USER CODE BEGIN ADC1_MspInit 0 */
114 
115   /* USER CODE END ADC1_MspInit 0 */
116     /* Peripheral clock enable */
117     __HAL_RCC_ADC1_CLK_ENABLE();
118 
119     __HAL_RCC_GPIOC_CLK_ENABLE();
120     __HAL_RCC_GPIOA_CLK_ENABLE();
121     __HAL_RCC_GPIOB_CLK_ENABLE();
122     /**ADC GPIO Configuration
123     PC0     ------> ADC_IN10
124     PC1     ------> ADC_IN11
125     PA0     ------> ADC_IN0
126     PA1     ------> ADC_IN1
127     PA4     ------> ADC_IN4
128     PB0     ------> ADC_IN8
129     */
130     GPIO_InitStruct.Pin = GPIO_PIN_0|GPIO_PIN_1;
131     GPIO_InitStruct.Mode = GPIO_MODE_ANALOG;
132     GPIO_InitStruct.Pull = GPIO_NOPULL;
133     HAL_GPIO_Init(GPIOC, &GPIO_InitStruct);
134 
135     GPIO_InitStruct.Pin = GPIO_PIN_0|GPIO_PIN_1|GPIO_PIN_4;
136     GPIO_InitStruct.Mode = GPIO_MODE_ANALOG;
137     GPIO_InitStruct.Pull = GPIO_NOPULL;
138     HAL_GPIO_Init(GPIOA, &GPIO_InitStruct);
139 
140     GPIO_InitStruct.Pin = GPIO_PIN_0;
141     GPIO_InitStruct.Mode = GPIO_MODE_ANALOG;
142     GPIO_InitStruct.Pull = GPIO_NOPULL;
143     HAL_GPIO_Init(GPIOB, &GPIO_InitStruct);
144 
145   /* USER CODE BEGIN ADC1_MspInit 1 */
146 
147   /* USER CODE END ADC1_MspInit 1 */
148   }
149 
150 }
151 
152 /**
153 * @brief ADC MSP De-Initialization
154 * This function freeze the hardware resources used in this example
155 * @param hadc: ADC handle pointer
156 * @retval None
157 */
HAL_ADC_MspDeInit(ADC_HandleTypeDef * hadc)158 void HAL_ADC_MspDeInit(ADC_HandleTypeDef* hadc)
159 {
160   if(hadc->Instance==ADC1)
161   {
162   /* USER CODE BEGIN ADC1_MspDeInit 0 */
163 
164   /* USER CODE END ADC1_MspDeInit 0 */
165     /* Peripheral clock disable */
166     __HAL_RCC_ADC1_CLK_DISABLE();
167 
168     /**ADC GPIO Configuration
169     PC0     ------> ADC_IN10
170     PC1     ------> ADC_IN11
171     PA0     ------> ADC_IN0
172     PA1     ------> ADC_IN1
173     PA4     ------> ADC_IN4
174     PB0     ------> ADC_IN8
175     */
176     HAL_GPIO_DeInit(GPIOC, GPIO_PIN_0|GPIO_PIN_1);
177 
178     HAL_GPIO_DeInit(GPIOA, GPIO_PIN_0|GPIO_PIN_1|GPIO_PIN_4);
179 
180     HAL_GPIO_DeInit(GPIOB, GPIO_PIN_0);
181 
182   /* USER CODE BEGIN ADC1_MspDeInit 1 */
183 
184   /* USER CODE END ADC1_MspDeInit 1 */
185   }
186 
187 }
188 
189 /**
190 * @brief TIM_Base MSP Initialization
191 * This function configures the hardware resources used in this example
192 * @param htim_base: TIM_Base handle pointer
193 * @retval None
194 */
HAL_TIM_Base_MspInit(TIM_HandleTypeDef * htim_base)195 void HAL_TIM_Base_MspInit(TIM_HandleTypeDef* htim_base)
196 {
197   if(htim_base->Instance==TIM2)
198   {
199   /* USER CODE BEGIN TIM2_MspInit 0 */
200 
201   /* USER CODE END TIM2_MspInit 0 */
202     /* Peripheral clock enable */
203     __HAL_RCC_TIM2_CLK_ENABLE();
204   /* USER CODE BEGIN TIM2_MspInit 1 */
205 
206   /* USER CODE END TIM2_MspInit 1 */
207   }
208   else if(htim_base->Instance==TIM3)
209   {
210   /* USER CODE BEGIN TIM3_MspInit 0 */
211 
212   /* USER CODE END TIM3_MspInit 0 */
213     /* Peripheral clock enable */
214     __HAL_RCC_TIM3_CLK_ENABLE();
215   /* USER CODE BEGIN TIM3_MspInit 1 */
216 
217   /* USER CODE END TIM3_MspInit 1 */
218   }
219   else if(htim_base->Instance==TIM7)
220   {
221   /* USER CODE BEGIN TIM7_MspInit 0 */
222 
223   /* USER CODE END TIM7_MspInit 0 */
224     /* Peripheral clock enable */
225     __HAL_RCC_TIM7_CLK_ENABLE();
226   /* USER CODE BEGIN TIM7_MspInit 1 */
227 
228   /* USER CODE END TIM7_MspInit 1 */
229   }
230   else if(htim_base->Instance==TIM16)
231   {
232   /* USER CODE BEGIN TIM16_MspInit 0 */
233 
234   /* USER CODE END TIM16_MspInit 0 */
235     /* Peripheral clock enable */
236     __HAL_RCC_TIM16_CLK_ENABLE();
237   /* USER CODE BEGIN TIM16_MspInit 1 */
238 
239   /* USER CODE END TIM16_MspInit 1 */
240   }
241   else if(htim_base->Instance==TIM17)
242   {
243   /* USER CODE BEGIN TIM17_MspInit 0 */
244 
245   /* USER CODE END TIM17_MspInit 0 */
246     /* Peripheral clock enable */
247     __HAL_RCC_TIM17_CLK_ENABLE();
248   /* USER CODE BEGIN TIM17_MspInit 1 */
249 
250   /* USER CODE END TIM17_MspInit 1 */
251   }
252 
253 }
254 
HAL_TIM_MspPostInit(TIM_HandleTypeDef * htim)255 void HAL_TIM_MspPostInit(TIM_HandleTypeDef* htim)
256 {
257   GPIO_InitTypeDef GPIO_InitStruct = {0};
258   if(htim->Instance==TIM2)
259   {
260   /* USER CODE BEGIN TIM2_MspPostInit 0 */
261 
262   /* USER CODE END TIM2_MspPostInit 0 */
263     __HAL_RCC_GPIOB_CLK_ENABLE();
264     /**TIM2 GPIO Configuration
265     PB10     ------> TIM2_CH3
266     PB3     ------> TIM2_CH2
267     */
268     GPIO_InitStruct.Pin = GPIO_PIN_10|GPIO_PIN_3;
269     GPIO_InitStruct.Mode = GPIO_MODE_AF_PP;
270     GPIO_InitStruct.Pull = GPIO_NOPULL;
271     GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW;
272     GPIO_InitStruct.Alternate = GPIO_AF2_TIM2;
273     HAL_GPIO_Init(GPIOB, &GPIO_InitStruct);
274 
275   /* USER CODE BEGIN TIM2_MspPostInit 1 */
276 
277   /* USER CODE END TIM2_MspPostInit 1 */
278   }
279   else if(htim->Instance==TIM3)
280   {
281   /* USER CODE BEGIN TIM3_MspPostInit 0 */
282 
283   /* USER CODE END TIM3_MspPostInit 0 */
284 
285     __HAL_RCC_GPIOC_CLK_ENABLE();
286     __HAL_RCC_GPIOB_CLK_ENABLE();
287     /**TIM3 GPIO Configuration
288     PC7     ------> TIM3_CH2
289     PB4     ------> TIM3_CH1
290     */
291     GPIO_InitStruct.Pin = GPIO_PIN_7;
292     GPIO_InitStruct.Mode = GPIO_MODE_AF_PP;
293     GPIO_InitStruct.Pull = GPIO_NOPULL;
294     GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW;
295     GPIO_InitStruct.Alternate = GPIO_AF0_TIM3;
296     HAL_GPIO_Init(GPIOC, &GPIO_InitStruct);
297 
298     GPIO_InitStruct.Pin = GPIO_PIN_4;
299     GPIO_InitStruct.Mode = GPIO_MODE_AF_PP;
300     GPIO_InitStruct.Pull = GPIO_NOPULL;
301     GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW;
302     GPIO_InitStruct.Alternate = GPIO_AF1_TIM3;
303     HAL_GPIO_Init(GPIOB, &GPIO_InitStruct);
304 
305   /* USER CODE BEGIN TIM3_MspPostInit 1 */
306 
307   /* USER CODE END TIM3_MspPostInit 1 */
308   }
309   else if(htim->Instance==TIM16)
310   {
311   /* USER CODE BEGIN TIM16_MspPostInit 0 */
312 
313   /* USER CODE END TIM16_MspPostInit 0 */
314 
315     __HAL_RCC_GPIOB_CLK_ENABLE();
316     /**TIM16 GPIO Configuration
317     PB6     ------> TIM16_CH1N
318     */
319     GPIO_InitStruct.Pin = GPIO_PIN_6;
320     GPIO_InitStruct.Mode = GPIO_MODE_AF_PP;
321     GPIO_InitStruct.Pull = GPIO_NOPULL;
322     GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW;
323     GPIO_InitStruct.Alternate = GPIO_AF2_TIM16;
324     HAL_GPIO_Init(GPIOB, &GPIO_InitStruct);
325 
326   /* USER CODE BEGIN TIM16_MspPostInit 1 */
327 
328   /* USER CODE END TIM16_MspPostInit 1 */
329   }
330   else if(htim->Instance==TIM17)
331   {
332   /* USER CODE BEGIN TIM17_MspPostInit 0 */
333 
334   /* USER CODE END TIM17_MspPostInit 0 */
335 
336     __HAL_RCC_GPIOA_CLK_ENABLE();
337     /**TIM17 GPIO Configuration
338     PA7     ------> TIM17_CH1
339     */
340     GPIO_InitStruct.Pin = GPIO_PIN_7;
341     GPIO_InitStruct.Mode = GPIO_MODE_AF_PP;
342     GPIO_InitStruct.Pull = GPIO_NOPULL;
343     GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW;
344     GPIO_InitStruct.Alternate = GPIO_AF5_TIM17;
345     HAL_GPIO_Init(GPIOA, &GPIO_InitStruct);
346 
347   /* USER CODE BEGIN TIM17_MspPostInit 1 */
348 
349   /* USER CODE END TIM17_MspPostInit 1 */
350   }
351 
352 }
353 /**
354 * @brief TIM_Base MSP De-Initialization
355 * This function freeze the hardware resources used in this example
356 * @param htim_base: TIM_Base handle pointer
357 * @retval None
358 */
HAL_TIM_Base_MspDeInit(TIM_HandleTypeDef * htim_base)359 void HAL_TIM_Base_MspDeInit(TIM_HandleTypeDef* htim_base)
360 {
361   if(htim_base->Instance==TIM2)
362   {
363   /* USER CODE BEGIN TIM2_MspDeInit 0 */
364 
365   /* USER CODE END TIM2_MspDeInit 0 */
366     /* Peripheral clock disable */
367     __HAL_RCC_TIM2_CLK_DISABLE();
368   /* USER CODE BEGIN TIM2_MspDeInit 1 */
369 
370   /* USER CODE END TIM2_MspDeInit 1 */
371   }
372   else if(htim_base->Instance==TIM3)
373   {
374   /* USER CODE BEGIN TIM3_MspDeInit 0 */
375 
376   /* USER CODE END TIM3_MspDeInit 0 */
377     /* Peripheral clock disable */
378     __HAL_RCC_TIM3_CLK_DISABLE();
379   /* USER CODE BEGIN TIM3_MspDeInit 1 */
380 
381   /* USER CODE END TIM3_MspDeInit 1 */
382   }
383   else if(htim_base->Instance==TIM7)
384   {
385   /* USER CODE BEGIN TIM7_MspDeInit 0 */
386 
387   /* USER CODE END TIM7_MspDeInit 0 */
388     /* Peripheral clock disable */
389     __HAL_RCC_TIM7_CLK_DISABLE();
390   /* USER CODE BEGIN TIM7_MspDeInit 1 */
391 
392   /* USER CODE END TIM7_MspDeInit 1 */
393   }
394   else if(htim_base->Instance==TIM16)
395   {
396   /* USER CODE BEGIN TIM16_MspDeInit 0 */
397 
398   /* USER CODE END TIM16_MspDeInit 0 */
399     /* Peripheral clock disable */
400     __HAL_RCC_TIM16_CLK_DISABLE();
401   /* USER CODE BEGIN TIM16_MspDeInit 1 */
402 
403   /* USER CODE END TIM16_MspDeInit 1 */
404   }
405   else if(htim_base->Instance==TIM17)
406   {
407   /* USER CODE BEGIN TIM17_MspDeInit 0 */
408 
409   /* USER CODE END TIM17_MspDeInit 0 */
410     /* Peripheral clock disable */
411     __HAL_RCC_TIM17_CLK_DISABLE();
412   /* USER CODE BEGIN TIM17_MspDeInit 1 */
413 
414   /* USER CODE END TIM17_MspDeInit 1 */
415   }
416 
417 }
418 
419 /**
420 * @brief UART MSP Initialization
421 * This function configures the hardware resources used in this example
422 * @param huart: UART handle pointer
423 * @retval None
424 */
HAL_UART_MspInit(UART_HandleTypeDef * huart)425 void HAL_UART_MspInit(UART_HandleTypeDef* huart)
426 {
427   GPIO_InitTypeDef GPIO_InitStruct = {0};
428   if(huart->Instance==USART2)
429   {
430   /* USER CODE BEGIN USART2_MspInit 0 */
431 
432   /* USER CODE END USART2_MspInit 0 */
433     /* Peripheral clock enable */
434     __HAL_RCC_USART2_CLK_ENABLE();
435 
436     __HAL_RCC_GPIOA_CLK_ENABLE();
437     /**USART2 GPIO Configuration
438     PA2     ------> USART2_TX
439     PA3     ------> USART2_RX
440     */
441     GPIO_InitStruct.Pin = USART_TX_Pin|USART_RX_Pin;
442     GPIO_InitStruct.Mode = GPIO_MODE_AF_PP;
443     GPIO_InitStruct.Pull = GPIO_PULLUP;
444     GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW;
445     GPIO_InitStruct.Alternate = GPIO_AF1_USART2;
446     HAL_GPIO_Init(GPIOA, &GPIO_InitStruct);
447 
448   /* USER CODE BEGIN USART2_MspInit 1 */
449 
450   /* USER CODE END USART2_MspInit 1 */
451   }
452 
453 }
454 
455 /**
456 * @brief UART MSP De-Initialization
457 * This function freeze the hardware resources used in this example
458 * @param huart: UART handle pointer
459 * @retval None
460 */
HAL_UART_MspDeInit(UART_HandleTypeDef * huart)461 void HAL_UART_MspDeInit(UART_HandleTypeDef* huart)
462 {
463   if(huart->Instance==USART2)
464   {
465   /* USER CODE BEGIN USART2_MspDeInit 0 */
466 
467   /* USER CODE END USART2_MspDeInit 0 */
468     /* Peripheral clock disable */
469     __HAL_RCC_USART2_CLK_DISABLE();
470 
471     /**USART2 GPIO Configuration
472     PA2     ------> USART2_TX
473     PA3     ------> USART2_RX
474     */
475     HAL_GPIO_DeInit(GPIOA, USART_TX_Pin|USART_RX_Pin);
476 
477   /* USER CODE BEGIN USART2_MspDeInit 1 */
478 
479   /* USER CODE END USART2_MspDeInit 1 */
480   }
481 
482 }
483 
484 /* USER CODE BEGIN 1 */
485 
486 /* USER CODE END 1 */
487