source: trunk/firmware_v4/Core/Src/stm32c0xx_it.c

Last change on this file was 42, checked in by f.jahn, 5 days ago
File size: 6.1 KB
Line 
1/* USER CODE BEGIN Header */
2/**
3 ******************************************************************************
4 * @file stm32c0xx_it.c
5 * @brief Interrupt Service Routines.
6 ******************************************************************************
7 * @attention
8 *
9 * Copyright (c) 2026 STMicroelectronics.
10 * All rights reserved.
11 *
12 * This software is licensed under terms that can be found in the LICENSE file
13 * in the root directory of this software component.
14 * If no LICENSE file comes with this software, it is provided AS-IS.
15 *
16 ******************************************************************************
17 */
18/* USER CODE END Header */
19
20/* Includes ------------------------------------------------------------------*/
21#include "main.h"
22#include "stm32c0xx_it.h"
23/* Private includes ----------------------------------------------------------*/
24/* USER CODE BEGIN Includes */
25/* USER CODE END Includes */
26
27/* Private typedef -----------------------------------------------------------*/
28/* USER CODE BEGIN TD */
29
30/* USER CODE END TD */
31
32/* Private define ------------------------------------------------------------*/
33/* USER CODE BEGIN PD */
34
35/* USER CODE END PD */
36
37/* Private macro -------------------------------------------------------------*/
38/* USER CODE BEGIN PM */
39
40/* USER CODE END PM */
41
42/* Private variables ---------------------------------------------------------*/
43/* USER CODE BEGIN PV */
44
45/* USER CODE END PV */
46
47/* Private function prototypes -----------------------------------------------*/
48/* USER CODE BEGIN PFP */
49
50/* USER CODE END PFP */
51
52/* Private user code ---------------------------------------------------------*/
53/* USER CODE BEGIN 0 */
54
55/* USER CODE END 0 */
56
57/* External variables --------------------------------------------------------*/
58extern DMA_HandleTypeDef hdma_adc1;
59extern TIM_HandleTypeDef htim16;
60extern DMA_HandleTypeDef hdma_usart1_rx;
61extern DMA_HandleTypeDef hdma_usart1_tx;
62extern UART_HandleTypeDef huart1;
63/* USER CODE BEGIN EV */
64 uint32_t captureValue = 0;
65 uint32_t previousCaptureValue = 0;
66 uint32_t frequency = 0;
67 uint32_t ic_overflows = 0;
68/* USER CODE END EV */
69
70/******************************************************************************/
71/* Cortex Processor Interruption and Exception Handlers */
72/******************************************************************************/
73/**
74 * @brief This function handles Non maskable interrupt.
75 */
76void NMI_Handler(void)
77{
78 /* USER CODE BEGIN NonMaskableInt_IRQn 0 */
79
80 /* USER CODE END NonMaskableInt_IRQn 0 */
81 /* USER CODE BEGIN NonMaskableInt_IRQn 1 */
82 while (1)
83 {
84 }
85 /* USER CODE END NonMaskableInt_IRQn 1 */
86}
87
88/**
89 * @brief This function handles Hard fault interrupt.
90 */
91void HardFault_Handler(void)
92{
93 /* USER CODE BEGIN HardFault_IRQn 0 */
94
95 /* USER CODE END HardFault_IRQn 0 */
96 while (1)
97 {
98 /* USER CODE BEGIN W1_HardFault_IRQn 0 */
99 /* USER CODE END W1_HardFault_IRQn 0 */
100 }
101}
102
103/**
104 * @brief This function handles Pendable request for system service.
105 */
106void PendSV_Handler(void)
107{
108 /* USER CODE BEGIN PendSV_IRQn 0 */
109
110 /* USER CODE END PendSV_IRQn 0 */
111 /* USER CODE BEGIN PendSV_IRQn 1 */
112
113 /* USER CODE END PendSV_IRQn 1 */
114}
115
116/**
117 * @brief This function handles System tick timer.
118 */
119void SysTick_Handler(void)
120{
121 /* USER CODE BEGIN SysTick_IRQn 0 */
122
123 /* USER CODE END SysTick_IRQn 0 */
124 HAL_IncTick();
125 /* USER CODE BEGIN SysTick_IRQn 1 */
126
127 /* USER CODE END SysTick_IRQn 1 */
128}
129
130/******************************************************************************/
131/* STM32C0xx Peripheral Interrupt Handlers */
132/* Add here the Interrupt Handlers for the used peripherals. */
133/* For the available peripheral interrupt handler names, */
134/* please refer to the startup file (startup_stm32c0xx.s). */
135/******************************************************************************/
136
137/**
138 * @brief This function handles DMA1 channel 1 interrupt.
139 */
140void DMA1_Channel1_IRQHandler(void)
141{
142 /* USER CODE BEGIN DMA1_Channel1_IRQn 0 */
143
144 /* USER CODE END DMA1_Channel1_IRQn 0 */
145 HAL_DMA_IRQHandler(&hdma_adc1);
146 /* USER CODE BEGIN DMA1_Channel1_IRQn 1 */
147
148 /* USER CODE END DMA1_Channel1_IRQn 1 */
149}
150
151/**
152 * @brief This function handles DMA1 channel 2 and channel 3 interrupts.
153 */
154void DMA1_Channel2_3_IRQHandler(void)
155{
156 /* USER CODE BEGIN DMA1_Channel2_3_IRQn 0 */
157
158 /* USER CODE END DMA1_Channel2_3_IRQn 0 */
159 HAL_DMA_IRQHandler(&hdma_usart1_rx);
160 HAL_DMA_IRQHandler(&hdma_usart1_tx);
161 /* USER CODE BEGIN DMA1_Channel2_3_IRQn 1 */
162
163 /* USER CODE END DMA1_Channel2_3_IRQn 1 */
164}
165
166/**
167 * @brief This function handles TIM16 global interrupt.
168 */
169void TIM16_IRQHandler(void)
170{
171 /* USER CODE BEGIN TIM16_IRQn 0 */
172
173 /* USER CODE END TIM16_IRQn 0 */
174 HAL_TIM_IRQHandler(&htim16);
175 /* USER CODE BEGIN TIM16_IRQn 1 */
176
177 /* USER CODE END TIM16_IRQn 1 */
178}
179
180/**
181 * @brief This function handles USART1 interrupt.
182 */
183void USART1_IRQHandler(void)
184{
185 /* USER CODE BEGIN USART1_IRQn 0 */
186
187 /* USER CODE END USART1_IRQn 0 */
188 HAL_UART_IRQHandler(&huart1);
189 /* USER CODE BEGIN USART1_IRQn 1 */
190
191 /* USER CODE END USART1_IRQn 1 */
192}
193
194/* USER CODE BEGIN 1 */
195void HAL_TIM_IC_CaptureCallback(TIM_HandleTypeDef* htim)
196{
197 if (htim->Channel == HAL_TIM_ACTIVE_CHANNEL_1) {
198 captureValue = HAL_TIM_ReadCapturedValue(htim, TIM_CHANNEL_1);
199 frequency = HAL_RCC_GetPCLK1Freq() / (htim->Instance->PSC + 1) / (captureValue);
200 //previousCaptureValue = captureValue;
201 htim->Instance->CNT=0; //Timer zurücksetzen, damit normalerweise kein Overflow auftritt. Nur bei Drehzahl 0 oder Nahe 0 wird OVL ausgelöst
202 ic_overflows=0;
203 }
204}
205
206//-----------------------------------------------------------------------------
207
208void HAL_TIM_PeriodElapsedCallback(TIM_HandleTypeDef* htim)
209{
210
211
212 if (htim->Instance == TIM16)
213 {
214 ic_overflows++;
215 if (ic_overflows > 0) frequency = 0;
216 }
217}
218
219/* USER CODE END 1 */
Note: See TracBrowser for help on using the repository browser.