xref: /btstack/port/stm32-l451-miromico-sx1280/Src/stm32l4xx_it.c (revision 2fd737d36a1de5d778cacc671d4b4d8c4f3fed82)
1*2fd737d3SMatthias Ringwald /* USER CODE BEGIN Header */
2*2fd737d3SMatthias Ringwald /**
3*2fd737d3SMatthias Ringwald   ******************************************************************************
4*2fd737d3SMatthias Ringwald   * @file    stm32l4xx_it.c
5*2fd737d3SMatthias Ringwald   * @brief   Interrupt Service Routines.
6*2fd737d3SMatthias Ringwald   ******************************************************************************
7*2fd737d3SMatthias Ringwald   * @attention
8*2fd737d3SMatthias Ringwald   *
9*2fd737d3SMatthias Ringwald   * <h2><center>&copy; Copyright (c) 2020 STMicroelectronics.
10*2fd737d3SMatthias Ringwald   * All rights reserved.</center></h2>
11*2fd737d3SMatthias Ringwald   *
12*2fd737d3SMatthias Ringwald   * This software component is licensed by ST under BSD 3-Clause license,
13*2fd737d3SMatthias Ringwald   * the "License"; You may not use this file except in compliance with the
14*2fd737d3SMatthias Ringwald   * License. You may obtain a copy of the License at:
15*2fd737d3SMatthias Ringwald   *                        opensource.org/licenses/BSD-3-Clause
16*2fd737d3SMatthias Ringwald   *
17*2fd737d3SMatthias Ringwald   ******************************************************************************
18*2fd737d3SMatthias Ringwald   */
19*2fd737d3SMatthias Ringwald /* USER CODE END Header */
20*2fd737d3SMatthias Ringwald 
21*2fd737d3SMatthias Ringwald /* Includes ------------------------------------------------------------------*/
22*2fd737d3SMatthias Ringwald #include "main.h"
23*2fd737d3SMatthias Ringwald #include "stm32l4xx_it.h"
24*2fd737d3SMatthias Ringwald /* Private includes ----------------------------------------------------------*/
25*2fd737d3SMatthias Ringwald /* USER CODE BEGIN Includes */
26*2fd737d3SMatthias Ringwald /* USER CODE END Includes */
27*2fd737d3SMatthias Ringwald 
28*2fd737d3SMatthias Ringwald /* Private typedef -----------------------------------------------------------*/
29*2fd737d3SMatthias Ringwald /* USER CODE BEGIN TD */
30*2fd737d3SMatthias Ringwald 
31*2fd737d3SMatthias Ringwald /* USER CODE END TD */
32*2fd737d3SMatthias Ringwald 
33*2fd737d3SMatthias Ringwald /* Private define ------------------------------------------------------------*/
34*2fd737d3SMatthias Ringwald /* USER CODE BEGIN PD */
35*2fd737d3SMatthias Ringwald 
36*2fd737d3SMatthias Ringwald /* USER CODE END PD */
37*2fd737d3SMatthias Ringwald 
38*2fd737d3SMatthias Ringwald /* Private macro -------------------------------------------------------------*/
39*2fd737d3SMatthias Ringwald /* USER CODE BEGIN PM */
40*2fd737d3SMatthias Ringwald 
41*2fd737d3SMatthias Ringwald /* USER CODE END PM */
42*2fd737d3SMatthias Ringwald 
43*2fd737d3SMatthias Ringwald /* Private variables ---------------------------------------------------------*/
44*2fd737d3SMatthias Ringwald /* USER CODE BEGIN PV */
45*2fd737d3SMatthias Ringwald 
46*2fd737d3SMatthias Ringwald /* USER CODE END PV */
47*2fd737d3SMatthias Ringwald 
48*2fd737d3SMatthias Ringwald /* Private function prototypes -----------------------------------------------*/
49*2fd737d3SMatthias Ringwald /* USER CODE BEGIN PFP */
50*2fd737d3SMatthias Ringwald 
51*2fd737d3SMatthias Ringwald /* USER CODE END PFP */
52*2fd737d3SMatthias Ringwald 
53*2fd737d3SMatthias Ringwald /* Private user code ---------------------------------------------------------*/
54*2fd737d3SMatthias Ringwald /* USER CODE BEGIN 0 */
55*2fd737d3SMatthias Ringwald 
56*2fd737d3SMatthias Ringwald /* USER CODE END 0 */
57*2fd737d3SMatthias Ringwald 
58*2fd737d3SMatthias Ringwald /* External variables --------------------------------------------------------*/
59*2fd737d3SMatthias Ringwald extern LPTIM_HandleTypeDef hlptim1;
60*2fd737d3SMatthias Ringwald extern DMA_HandleTypeDef hdma_spi2_rx;
61*2fd737d3SMatthias Ringwald extern DMA_HandleTypeDef hdma_spi2_tx;
62*2fd737d3SMatthias Ringwald extern SPI_HandleTypeDef hspi2;
63*2fd737d3SMatthias Ringwald extern TIM_HandleTypeDef htim2;
64*2fd737d3SMatthias Ringwald /* USER CODE BEGIN EV */
65*2fd737d3SMatthias Ringwald 
66*2fd737d3SMatthias Ringwald /* USER CODE END EV */
67*2fd737d3SMatthias Ringwald 
68*2fd737d3SMatthias Ringwald /******************************************************************************/
69*2fd737d3SMatthias Ringwald /*           Cortex-M4 Processor Interruption and Exception Handlers          */
70*2fd737d3SMatthias Ringwald /******************************************************************************/
71*2fd737d3SMatthias Ringwald /**
72*2fd737d3SMatthias Ringwald   * @brief This function handles Non maskable interrupt.
73*2fd737d3SMatthias Ringwald   */
NMI_Handler(void)74*2fd737d3SMatthias Ringwald void NMI_Handler(void)
75*2fd737d3SMatthias Ringwald {
76*2fd737d3SMatthias Ringwald   /* USER CODE BEGIN NonMaskableInt_IRQn 0 */
77*2fd737d3SMatthias Ringwald 
78*2fd737d3SMatthias Ringwald   /* USER CODE END NonMaskableInt_IRQn 0 */
79*2fd737d3SMatthias Ringwald   /* USER CODE BEGIN NonMaskableInt_IRQn 1 */
80*2fd737d3SMatthias Ringwald 
81*2fd737d3SMatthias Ringwald   /* USER CODE END NonMaskableInt_IRQn 1 */
82*2fd737d3SMatthias Ringwald }
83*2fd737d3SMatthias Ringwald 
84*2fd737d3SMatthias Ringwald /**
85*2fd737d3SMatthias Ringwald   * @brief This function handles Hard fault interrupt.
86*2fd737d3SMatthias Ringwald   */
HardFault_Handler(void)87*2fd737d3SMatthias Ringwald void HardFault_Handler(void)
88*2fd737d3SMatthias Ringwald {
89*2fd737d3SMatthias Ringwald   /* USER CODE BEGIN HardFault_IRQn 0 */
90*2fd737d3SMatthias Ringwald 
91*2fd737d3SMatthias Ringwald   /* USER CODE END HardFault_IRQn 0 */
92*2fd737d3SMatthias Ringwald   while (1)
93*2fd737d3SMatthias Ringwald   {
94*2fd737d3SMatthias Ringwald     /* USER CODE BEGIN W1_HardFault_IRQn 0 */
95*2fd737d3SMatthias Ringwald     /* USER CODE END W1_HardFault_IRQn 0 */
96*2fd737d3SMatthias Ringwald   }
97*2fd737d3SMatthias Ringwald }
98*2fd737d3SMatthias Ringwald 
99*2fd737d3SMatthias Ringwald /**
100*2fd737d3SMatthias Ringwald   * @brief This function handles Memory management fault.
101*2fd737d3SMatthias Ringwald   */
MemManage_Handler(void)102*2fd737d3SMatthias Ringwald void MemManage_Handler(void)
103*2fd737d3SMatthias Ringwald {
104*2fd737d3SMatthias Ringwald   /* USER CODE BEGIN MemoryManagement_IRQn 0 */
105*2fd737d3SMatthias Ringwald 
106*2fd737d3SMatthias Ringwald   /* USER CODE END MemoryManagement_IRQn 0 */
107*2fd737d3SMatthias Ringwald   while (1)
108*2fd737d3SMatthias Ringwald   {
109*2fd737d3SMatthias Ringwald     /* USER CODE BEGIN W1_MemoryManagement_IRQn 0 */
110*2fd737d3SMatthias Ringwald     /* USER CODE END W1_MemoryManagement_IRQn 0 */
111*2fd737d3SMatthias Ringwald   }
112*2fd737d3SMatthias Ringwald }
113*2fd737d3SMatthias Ringwald 
114*2fd737d3SMatthias Ringwald /**
115*2fd737d3SMatthias Ringwald   * @brief This function handles Prefetch fault, memory access fault.
116*2fd737d3SMatthias Ringwald   */
BusFault_Handler(void)117*2fd737d3SMatthias Ringwald void BusFault_Handler(void)
118*2fd737d3SMatthias Ringwald {
119*2fd737d3SMatthias Ringwald   /* USER CODE BEGIN BusFault_IRQn 0 */
120*2fd737d3SMatthias Ringwald 
121*2fd737d3SMatthias Ringwald   /* USER CODE END BusFault_IRQn 0 */
122*2fd737d3SMatthias Ringwald   while (1)
123*2fd737d3SMatthias Ringwald   {
124*2fd737d3SMatthias Ringwald     /* USER CODE BEGIN W1_BusFault_IRQn 0 */
125*2fd737d3SMatthias Ringwald     /* USER CODE END W1_BusFault_IRQn 0 */
126*2fd737d3SMatthias Ringwald   }
127*2fd737d3SMatthias Ringwald }
128*2fd737d3SMatthias Ringwald 
129*2fd737d3SMatthias Ringwald /**
130*2fd737d3SMatthias Ringwald   * @brief This function handles Undefined instruction or illegal state.
131*2fd737d3SMatthias Ringwald   */
UsageFault_Handler(void)132*2fd737d3SMatthias Ringwald void UsageFault_Handler(void)
133*2fd737d3SMatthias Ringwald {
134*2fd737d3SMatthias Ringwald   /* USER CODE BEGIN UsageFault_IRQn 0 */
135*2fd737d3SMatthias Ringwald 
136*2fd737d3SMatthias Ringwald   /* USER CODE END UsageFault_IRQn 0 */
137*2fd737d3SMatthias Ringwald   while (1)
138*2fd737d3SMatthias Ringwald   {
139*2fd737d3SMatthias Ringwald     /* USER CODE BEGIN W1_UsageFault_IRQn 0 */
140*2fd737d3SMatthias Ringwald     /* USER CODE END W1_UsageFault_IRQn 0 */
141*2fd737d3SMatthias Ringwald   }
142*2fd737d3SMatthias Ringwald }
143*2fd737d3SMatthias Ringwald 
144*2fd737d3SMatthias Ringwald /**
145*2fd737d3SMatthias Ringwald   * @brief This function handles System service call via SWI instruction.
146*2fd737d3SMatthias Ringwald   */
SVC_Handler(void)147*2fd737d3SMatthias Ringwald void SVC_Handler(void)
148*2fd737d3SMatthias Ringwald {
149*2fd737d3SMatthias Ringwald   /* USER CODE BEGIN SVCall_IRQn 0 */
150*2fd737d3SMatthias Ringwald 
151*2fd737d3SMatthias Ringwald   /* USER CODE END SVCall_IRQn 0 */
152*2fd737d3SMatthias Ringwald   /* USER CODE BEGIN SVCall_IRQn 1 */
153*2fd737d3SMatthias Ringwald 
154*2fd737d3SMatthias Ringwald   /* USER CODE END SVCall_IRQn 1 */
155*2fd737d3SMatthias Ringwald }
156*2fd737d3SMatthias Ringwald 
157*2fd737d3SMatthias Ringwald /**
158*2fd737d3SMatthias Ringwald   * @brief This function handles Debug monitor.
159*2fd737d3SMatthias Ringwald   */
DebugMon_Handler(void)160*2fd737d3SMatthias Ringwald void DebugMon_Handler(void)
161*2fd737d3SMatthias Ringwald {
162*2fd737d3SMatthias Ringwald   /* USER CODE BEGIN DebugMonitor_IRQn 0 */
163*2fd737d3SMatthias Ringwald 
164*2fd737d3SMatthias Ringwald   /* USER CODE END DebugMonitor_IRQn 0 */
165*2fd737d3SMatthias Ringwald   /* USER CODE BEGIN DebugMonitor_IRQn 1 */
166*2fd737d3SMatthias Ringwald 
167*2fd737d3SMatthias Ringwald   /* USER CODE END DebugMonitor_IRQn 1 */
168*2fd737d3SMatthias Ringwald }
169*2fd737d3SMatthias Ringwald 
170*2fd737d3SMatthias Ringwald /**
171*2fd737d3SMatthias Ringwald   * @brief This function handles Pendable request for system service.
172*2fd737d3SMatthias Ringwald   */
PendSV_Handler(void)173*2fd737d3SMatthias Ringwald void PendSV_Handler(void)
174*2fd737d3SMatthias Ringwald {
175*2fd737d3SMatthias Ringwald   /* USER CODE BEGIN PendSV_IRQn 0 */
176*2fd737d3SMatthias Ringwald 
177*2fd737d3SMatthias Ringwald   /* USER CODE END PendSV_IRQn 0 */
178*2fd737d3SMatthias Ringwald   /* USER CODE BEGIN PendSV_IRQn 1 */
179*2fd737d3SMatthias Ringwald 
180*2fd737d3SMatthias Ringwald   /* USER CODE END PendSV_IRQn 1 */
181*2fd737d3SMatthias Ringwald }
182*2fd737d3SMatthias Ringwald 
183*2fd737d3SMatthias Ringwald /**
184*2fd737d3SMatthias Ringwald   * @brief This function handles System tick timer.
185*2fd737d3SMatthias Ringwald   */
SysTick_Handler(void)186*2fd737d3SMatthias Ringwald void SysTick_Handler(void)
187*2fd737d3SMatthias Ringwald {
188*2fd737d3SMatthias Ringwald   /* USER CODE BEGIN SysTick_IRQn 0 */
189*2fd737d3SMatthias Ringwald 
190*2fd737d3SMatthias Ringwald   /* USER CODE END SysTick_IRQn 0 */
191*2fd737d3SMatthias Ringwald   HAL_IncTick();
192*2fd737d3SMatthias Ringwald   /* USER CODE BEGIN SysTick_IRQn 1 */
193*2fd737d3SMatthias Ringwald 
194*2fd737d3SMatthias Ringwald   /* USER CODE END SysTick_IRQn 1 */
195*2fd737d3SMatthias Ringwald }
196*2fd737d3SMatthias Ringwald 
197*2fd737d3SMatthias Ringwald /******************************************************************************/
198*2fd737d3SMatthias Ringwald /* STM32L4xx Peripheral Interrupt Handlers                                    */
199*2fd737d3SMatthias Ringwald /* Add here the Interrupt Handlers for the used peripherals.                  */
200*2fd737d3SMatthias Ringwald /* For the available peripheral interrupt handler names,                      */
201*2fd737d3SMatthias Ringwald /* please refer to the startup file (startup_stm32l4xx.s).                    */
202*2fd737d3SMatthias Ringwald /******************************************************************************/
203*2fd737d3SMatthias Ringwald 
204*2fd737d3SMatthias Ringwald /**
205*2fd737d3SMatthias Ringwald   * @brief This function handles EXTI line4 interrupt.
206*2fd737d3SMatthias Ringwald   */
EXTI4_IRQHandler(void)207*2fd737d3SMatthias Ringwald void EXTI4_IRQHandler(void)
208*2fd737d3SMatthias Ringwald {
209*2fd737d3SMatthias Ringwald   /* USER CODE BEGIN EXTI4_IRQn 0 */
210*2fd737d3SMatthias Ringwald 
211*2fd737d3SMatthias Ringwald   /* USER CODE END EXTI4_IRQn 0 */
212*2fd737d3SMatthias Ringwald   HAL_GPIO_EXTI_IRQHandler(GPIO_PIN_4);
213*2fd737d3SMatthias Ringwald   /* USER CODE BEGIN EXTI4_IRQn 1 */
214*2fd737d3SMatthias Ringwald 
215*2fd737d3SMatthias Ringwald   /* USER CODE END EXTI4_IRQn 1 */
216*2fd737d3SMatthias Ringwald }
217*2fd737d3SMatthias Ringwald 
218*2fd737d3SMatthias Ringwald /**
219*2fd737d3SMatthias Ringwald   * @brief This function handles DMA1 channel4 global interrupt.
220*2fd737d3SMatthias Ringwald   */
DMA1_Channel4_IRQHandler(void)221*2fd737d3SMatthias Ringwald void DMA1_Channel4_IRQHandler(void)
222*2fd737d3SMatthias Ringwald {
223*2fd737d3SMatthias Ringwald   /* USER CODE BEGIN DMA1_Channel4_IRQn 0 */
224*2fd737d3SMatthias Ringwald 
225*2fd737d3SMatthias Ringwald   /* USER CODE END DMA1_Channel4_IRQn 0 */
226*2fd737d3SMatthias Ringwald   HAL_DMA_IRQHandler(&hdma_spi2_rx);
227*2fd737d3SMatthias Ringwald   /* USER CODE BEGIN DMA1_Channel4_IRQn 1 */
228*2fd737d3SMatthias Ringwald 
229*2fd737d3SMatthias Ringwald   /* USER CODE END DMA1_Channel4_IRQn 1 */
230*2fd737d3SMatthias Ringwald }
231*2fd737d3SMatthias Ringwald 
232*2fd737d3SMatthias Ringwald /**
233*2fd737d3SMatthias Ringwald   * @brief This function handles DMA1 channel5 global interrupt.
234*2fd737d3SMatthias Ringwald   */
DMA1_Channel5_IRQHandler(void)235*2fd737d3SMatthias Ringwald void DMA1_Channel5_IRQHandler(void)
236*2fd737d3SMatthias Ringwald {
237*2fd737d3SMatthias Ringwald   /* USER CODE BEGIN DMA1_Channel5_IRQn 0 */
238*2fd737d3SMatthias Ringwald 
239*2fd737d3SMatthias Ringwald   /* USER CODE END DMA1_Channel5_IRQn 0 */
240*2fd737d3SMatthias Ringwald   HAL_DMA_IRQHandler(&hdma_spi2_tx);
241*2fd737d3SMatthias Ringwald   /* USER CODE BEGIN DMA1_Channel5_IRQn 1 */
242*2fd737d3SMatthias Ringwald 
243*2fd737d3SMatthias Ringwald   /* USER CODE END DMA1_Channel5_IRQn 1 */
244*2fd737d3SMatthias Ringwald }
245*2fd737d3SMatthias Ringwald 
246*2fd737d3SMatthias Ringwald /**
247*2fd737d3SMatthias Ringwald   * @brief This function handles EXTI line[9:5] interrupts.
248*2fd737d3SMatthias Ringwald   */
EXTI9_5_IRQHandler(void)249*2fd737d3SMatthias Ringwald void EXTI9_5_IRQHandler(void)
250*2fd737d3SMatthias Ringwald {
251*2fd737d3SMatthias Ringwald   /* USER CODE BEGIN EXTI9_5_IRQn 0 */
252*2fd737d3SMatthias Ringwald 
253*2fd737d3SMatthias Ringwald   /* USER CODE END EXTI9_5_IRQn 0 */
254*2fd737d3SMatthias Ringwald   HAL_GPIO_EXTI_IRQHandler(GPIO_PIN_6);
255*2fd737d3SMatthias Ringwald   HAL_GPIO_EXTI_IRQHandler(GPIO_PIN_7);
256*2fd737d3SMatthias Ringwald   /* USER CODE BEGIN EXTI9_5_IRQn 1 */
257*2fd737d3SMatthias Ringwald 
258*2fd737d3SMatthias Ringwald   /* USER CODE END EXTI9_5_IRQn 1 */
259*2fd737d3SMatthias Ringwald }
260*2fd737d3SMatthias Ringwald 
261*2fd737d3SMatthias Ringwald /**
262*2fd737d3SMatthias Ringwald   * @brief This function handles TIM2 global interrupt.
263*2fd737d3SMatthias Ringwald   */
TIM2_IRQHandler(void)264*2fd737d3SMatthias Ringwald void TIM2_IRQHandler(void)
265*2fd737d3SMatthias Ringwald {
266*2fd737d3SMatthias Ringwald   /* USER CODE BEGIN TIM2_IRQn 0 */
267*2fd737d3SMatthias Ringwald 
268*2fd737d3SMatthias Ringwald   /* USER CODE END TIM2_IRQn 0 */
269*2fd737d3SMatthias Ringwald   HAL_TIM_IRQHandler(&htim2);
270*2fd737d3SMatthias Ringwald   /* USER CODE BEGIN TIM2_IRQn 1 */
271*2fd737d3SMatthias Ringwald 
272*2fd737d3SMatthias Ringwald   /* USER CODE END TIM2_IRQn 1 */
273*2fd737d3SMatthias Ringwald }
274*2fd737d3SMatthias Ringwald 
275*2fd737d3SMatthias Ringwald /**
276*2fd737d3SMatthias Ringwald   * @brief This function handles SPI2 global interrupt.
277*2fd737d3SMatthias Ringwald   */
SPI2_IRQHandler(void)278*2fd737d3SMatthias Ringwald void SPI2_IRQHandler(void)
279*2fd737d3SMatthias Ringwald {
280*2fd737d3SMatthias Ringwald   /* USER CODE BEGIN SPI2_IRQn 0 */
281*2fd737d3SMatthias Ringwald 
282*2fd737d3SMatthias Ringwald   /* USER CODE END SPI2_IRQn 0 */
283*2fd737d3SMatthias Ringwald   HAL_SPI_IRQHandler(&hspi2);
284*2fd737d3SMatthias Ringwald   /* USER CODE BEGIN SPI2_IRQn 1 */
285*2fd737d3SMatthias Ringwald 
286*2fd737d3SMatthias Ringwald   /* USER CODE END SPI2_IRQn 1 */
287*2fd737d3SMatthias Ringwald }
288*2fd737d3SMatthias Ringwald 
289*2fd737d3SMatthias Ringwald /**
290*2fd737d3SMatthias Ringwald   * @brief This function handles LPTIM1 global interrupt.
291*2fd737d3SMatthias Ringwald   */
LPTIM1_IRQHandler(void)292*2fd737d3SMatthias Ringwald void LPTIM1_IRQHandler(void)
293*2fd737d3SMatthias Ringwald {
294*2fd737d3SMatthias Ringwald   /* USER CODE BEGIN LPTIM1_IRQn 0 */
295*2fd737d3SMatthias Ringwald 
296*2fd737d3SMatthias Ringwald   /* USER CODE END LPTIM1_IRQn 0 */
297*2fd737d3SMatthias Ringwald   HAL_LPTIM_IRQHandler(&hlptim1);
298*2fd737d3SMatthias Ringwald   /* USER CODE BEGIN LPTIM1_IRQn 1 */
299*2fd737d3SMatthias Ringwald 
300*2fd737d3SMatthias Ringwald   /* USER CODE END LPTIM1_IRQn 1 */
301*2fd737d3SMatthias Ringwald }
302*2fd737d3SMatthias Ringwald 
303*2fd737d3SMatthias Ringwald /* USER CODE BEGIN 1 */
304*2fd737d3SMatthias Ringwald 
305*2fd737d3SMatthias Ringwald /* USER CODE END 1 */
306*2fd737d3SMatthias Ringwald /************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/
307