2 ******************************************************************************
4 * @brief Interrupt Service Routines.
5 ******************************************************************************
7 * COPYRIGHT(c) 2018 STMicroelectronics
9 * Redistribution and use in source and binary forms, with or without modification,
10 * are permitted provided that the following conditions are met:
11 * 1. Redistributions of source code must retain the above copyright notice,
12 * this list of conditions and the following disclaimer.
13 * 2. Redistributions in binary form must reproduce the above copyright notice,
14 * this list of conditions and the following disclaimer in the documentation
15 * and/or other materials provided with the distribution.
16 * 3. Neither the name of STMicroelectronics nor the names of its contributors
17 * may be used to endorse or promote products derived from this software
18 * without specific prior written permission.
20 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
21 * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
22 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
23 * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
24 * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
25 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
26 * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
27 * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
28 * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
29 * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
31 ******************************************************************************
33 /* Includes ------------------------------------------------------------------*/
34 #include "stm32f1xx_hal.h"
35 #include "stm32f1xx.h"
36 #include "stm32f1xx_it.h"
38 /* USER CODE BEGIN 0 */
44 /* External variables --------------------------------------------------------*/
45 extern PCD_HandleTypeDef hpcd_USB_FS;
47 /******************************************************************************/
48 /* Cortex-M3 Processor Interruption and Exception Handlers */
49 /******************************************************************************/
52 * @brief This function handles Non maskable interrupt.
54 void NMI_Handler(void)
56 /* USER CODE BEGIN NonMaskableInt_IRQn 0 */
58 /* USER CODE END NonMaskableInt_IRQn 0 */
59 /* USER CODE BEGIN NonMaskableInt_IRQn 1 */
61 /* USER CODE END NonMaskableInt_IRQn 1 */
65 * @brief This function handles Hard fault interrupt.
67 void HardFault_Handler(void)
69 /* USER CODE BEGIN HardFault_IRQn 0 */
71 /* USER CODE END HardFault_IRQn 0 */
74 /* USER CODE BEGIN W1_HardFault_IRQn 0 */
75 /* USER CODE END W1_HardFault_IRQn 0 */
77 /* USER CODE BEGIN HardFault_IRQn 1 */
79 /* USER CODE END HardFault_IRQn 1 */
83 * @brief This function handles Memory management fault.
85 void MemManage_Handler(void)
87 /* USER CODE BEGIN MemoryManagement_IRQn 0 */
89 /* USER CODE END MemoryManagement_IRQn 0 */
92 /* USER CODE BEGIN W1_MemoryManagement_IRQn 0 */
93 /* USER CODE END W1_MemoryManagement_IRQn 0 */
95 /* USER CODE BEGIN MemoryManagement_IRQn 1 */
97 /* USER CODE END MemoryManagement_IRQn 1 */
101 * @brief This function handles Prefetch fault, memory access fault.
103 void BusFault_Handler(void)
105 /* USER CODE BEGIN BusFault_IRQn 0 */
107 /* USER CODE END BusFault_IRQn 0 */
110 /* USER CODE BEGIN W1_BusFault_IRQn 0 */
111 /* USER CODE END W1_BusFault_IRQn 0 */
113 /* USER CODE BEGIN BusFault_IRQn 1 */
115 /* USER CODE END BusFault_IRQn 1 */
119 * @brief This function handles Undefined instruction or illegal state.
121 void UsageFault_Handler(void)
123 /* USER CODE BEGIN UsageFault_IRQn 0 */
125 /* USER CODE END UsageFault_IRQn 0 */
128 /* USER CODE BEGIN W1_UsageFault_IRQn 0 */
129 /* USER CODE END W1_UsageFault_IRQn 0 */
131 /* USER CODE BEGIN UsageFault_IRQn 1 */
133 /* USER CODE END UsageFault_IRQn 1 */
137 * @brief This function handles System service call via SWI instruction.
139 void SVC_Handler(void)
141 /* USER CODE BEGIN SVCall_IRQn 0 */
143 /* USER CODE END SVCall_IRQn 0 */
144 /* USER CODE BEGIN SVCall_IRQn 1 */
146 /* USER CODE END SVCall_IRQn 1 */
150 * @brief This function handles Debug monitor.
152 void DebugMon_Handler(void)
154 /* USER CODE BEGIN DebugMonitor_IRQn 0 */
156 /* USER CODE END DebugMonitor_IRQn 0 */
157 /* USER CODE BEGIN DebugMonitor_IRQn 1 */
159 /* USER CODE END DebugMonitor_IRQn 1 */
163 * @brief This function handles Pendable request for system service.
165 void PendSV_Handler(void)
167 /* USER CODE BEGIN PendSV_IRQn 0 */
169 /* USER CODE END PendSV_IRQn 0 */
170 /* USER CODE BEGIN PendSV_IRQn 1 */
172 /* USER CODE END PendSV_IRQn 1 */
176 * @brief This function handles System tick timer.
178 void SysTick_Handler(void)
180 /* USER CODE BEGIN SysTick_IRQn 0 */
182 /* USER CODE END SysTick_IRQn 0 */
184 HAL_SYSTICK_IRQHandler();
185 /* USER CODE BEGIN SysTick_IRQn 1 */
187 /* USER CODE END SysTick_IRQn 1 */
190 /******************************************************************************/
191 /* STM32F1xx Peripheral Interrupt Handlers */
192 /* Add here the Interrupt Handlers for the used peripherals. */
193 /* For the available peripheral interrupt handler names, */
194 /* please refer to the startup file (startup_stm32f1xx.s). */
195 /******************************************************************************/
198 * @brief This function handles USB high priority or CAN TX interrupts.
200 void USB_HP_CAN1_TX_IRQHandler(void)
202 /* USER CODE BEGIN USB_HP_CAN1_TX_IRQn 0 */
204 /* USER CODE END USB_HP_CAN1_TX_IRQn 0 */
205 HAL_PCD_IRQHandler(&hpcd_USB_FS);
206 /* USER CODE BEGIN USB_HP_CAN1_TX_IRQn 1 */
208 /* USER CODE END USB_HP_CAN1_TX_IRQn 1 */
212 * @brief This function handles USB low priority or CAN RX0 interrupts.
214 void USB_LP_CAN1_RX0_IRQHandler(void)
216 /* USER CODE BEGIN USB_LP_CAN1_RX0_IRQn 0 */
218 /* USER CODE END USB_LP_CAN1_RX0_IRQn 0 */
219 HAL_PCD_IRQHandler(&hpcd_USB_FS);
220 /* USER CODE BEGIN USB_LP_CAN1_RX0_IRQn 1 */
222 /* USER CODE END USB_LP_CAN1_RX0_IRQn 1 */
226 * @brief This function handles TIM4 global interrupt.
228 void TIM4_IRQHandler(void)
230 /* USER CODE BEGIN TIM4_IRQn 0 */
231 if (LL_TIM_IsActiveFlag_UPDATE(TIM4))
234 LL_TIM_ClearFlag_UPDATE(TIM4);
237 /* USER CODE END TIM4_IRQn 0 */
238 /* USER CODE BEGIN TIM4_IRQn 1 */
240 /* USER CODE END TIM4_IRQn 1 */
244 * @brief This function handles I2C1 event interrupt.
246 void I2C1_EV_IRQHandler(void)
248 /* USER CODE BEGIN I2C1_EV_IRQn 0 */
250 if (sr1 & I2C_SR1_SB)
251 LL_I2C_TransmitData8(I2C1, bmp_i2c_addr);
252 else if (bmp_i2c_addr & 1)
255 if (sr1 & I2C_SR1_ADDR)
257 LL_I2C_DisableBitPOS(I2C1);
258 if (bmp_i2c_len == 1)
259 LL_I2C_AcknowledgeNextData(I2C1, LL_I2C_NACK);
260 LL_I2C_AcknowledgeNextData(I2C1, LL_I2C_ACK);
261 LL_I2C_ClearFlag_ADDR(I2C1);
263 else if (sr1 & I2C_SR1_RXNE)
267 if (bmp_i2c_len == 1)
269 LL_I2C_AcknowledgeNextData(I2C1, LL_I2C_NACK);
270 LL_I2C_GenerateStopCondition(I2C1);
272 *bmp_i2c_ptr++ = LL_I2C_ReceiveData8(I2C1);
276 LL_I2C_DisableIT_RX(I2C1);
282 if (sr1 & I2C_SR1_ADDR)
283 LL_I2C_ClearFlag_ADDR(I2C1);
284 else if (sr1 & I2C_SR1_TXE)
288 LL_I2C_TransmitData8(I2C1, *bmp_i2c_ptr++);
292 LL_I2C_DisableIT_TX(I2C1);
296 /* USER CODE END I2C1_EV_IRQn 0 */
298 /* USER CODE BEGIN I2C1_EV_IRQn 1 */
300 /* USER CODE END I2C1_EV_IRQn 1 */
303 /* USER CODE BEGIN 1 */
305 /* USER CODE END 1 */
306 /************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/