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

Last change on this file was 24, checked in by f.jahn, 4 months ago
LVP, OVP, LVP
OVP modes implementiert
  • Lüftersteuerung in eigenes Modul verlagert
File size: 5.6 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) 2025 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
26#include <stdio.h>
27
28#include "tim.h"
29
30/* USER CODE END Includes */
31
32/* Private typedef -----------------------------------------------------------*/
33/* USER CODE BEGIN TD */
34
35/* USER CODE END TD */
36
37/* Private define ------------------------------------------------------------*/
38/* USER CODE BEGIN PD */
39
40/* USER CODE END PD */
41
42/* Private macro -------------------------------------------------------------*/
43/* USER CODE BEGIN PM */
44
45/* USER CODE END PM */
46
47/* Private variables ---------------------------------------------------------*/
48/* USER CODE BEGIN PV */
49
50/* USER CODE END PV */
51
52/* Private function prototypes -----------------------------------------------*/
53/* USER CODE BEGIN PFP */
54
55/* USER CODE END PFP */
56
57/* Private user code ---------------------------------------------------------*/
58/* USER CODE BEGIN 0 */
59
60/* USER CODE END 0 */
61
62/* External variables --------------------------------------------------------*/
63extern DMA_HandleTypeDef hdma_adc1;
64extern TIM_HandleTypeDef htim16;
65/* USER CODE BEGIN EV */
66 uint32_t captureValue = 0;
67 uint32_t previousCaptureValue = 0;
68 uint32_t frequency = 0;
69 uint32_t ic_overflows = 0;
70/* USER CODE END EV */
71
72/******************************************************************************/
73/* Cortex Processor Interruption and Exception Handlers */
74/******************************************************************************/
75/**
76 * @brief This function handles Non maskable interrupt.
77 */
78void NMI_Handler(void)
79{
80 /* USER CODE BEGIN NonMaskableInt_IRQn 0 */
81
82 /* USER CODE END NonMaskableInt_IRQn 0 */
83 /* USER CODE BEGIN NonMaskableInt_IRQn 1 */
84 while (1)
85 {
86 }
87 /* USER CODE END NonMaskableInt_IRQn 1 */
88}
89
90/**
91 * @brief This function handles Hard fault interrupt.
92 */
93void HardFault_Handler(void)
94{
95 /* USER CODE BEGIN HardFault_IRQn 0 */
96
97 /* USER CODE END HardFault_IRQn 0 */
98 while (1)
99 {
100 /* USER CODE BEGIN W1_HardFault_IRQn 0 */
101 /* USER CODE END W1_HardFault_IRQn 0 */
102 }
103}
104
105/**
106 * @brief This function handles System service call via SWI instruction.
107 */
108void SVC_Handler(void)
109{
110 /* USER CODE BEGIN SVC_IRQn 0 */
111
112 /* USER CODE END SVC_IRQn 0 */
113 /* USER CODE BEGIN SVC_IRQn 1 */
114
115 /* USER CODE END SVC_IRQn 1 */
116}
117
118/**
119 * @brief This function handles Pendable request for system service.
120 */
121void PendSV_Handler(void)
122{
123 /* USER CODE BEGIN PendSV_IRQn 0 */
124
125 /* USER CODE END PendSV_IRQn 0 */
126 /* USER CODE BEGIN PendSV_IRQn 1 */
127
128 /* USER CODE END PendSV_IRQn 1 */
129}
130
131/**
132 * @brief This function handles System tick timer.
133 */
134void SysTick_Handler(void)
135{
136 /* USER CODE BEGIN SysTick_IRQn 0 */
137
138 /* USER CODE END SysTick_IRQn 0 */
139 HAL_IncTick();
140 /* USER CODE BEGIN SysTick_IRQn 1 */
141
142 /* USER CODE END SysTick_IRQn 1 */
143}
144
145/******************************************************************************/
146/* STM32C0xx Peripheral Interrupt Handlers */
147/* Add here the Interrupt Handlers for the used peripherals. */
148/* For the available peripheral interrupt handler names, */
149/* please refer to the startup file (startup_stm32c0xx.s). */
150/******************************************************************************/
151
152/**
153 * @brief This function handles DMA1 channel 1 interrupt.
154 */
155void DMA1_Channel1_IRQHandler(void)
156{
157 /* USER CODE BEGIN DMA1_Channel1_IRQn 0 */
158
159 /* USER CODE END DMA1_Channel1_IRQn 0 */
160 HAL_DMA_IRQHandler(&hdma_adc1);
161 /* USER CODE BEGIN DMA1_Channel1_IRQn 1 */
162
163 /* USER CODE END DMA1_Channel1_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/* USER CODE BEGIN 1 */
181
182void HAL_TIM_IC_CaptureCallback(TIM_HandleTypeDef* htim)
183{
184 if (htim->Channel == HAL_TIM_ACTIVE_CHANNEL_1) {
185 captureValue = HAL_TIM_ReadCapturedValue(htim, TIM_CHANNEL_1);
186 frequency = HAL_RCC_GetPCLK1Freq() / (htim->Instance->PSC + 1) / (captureValue);
187 //previousCaptureValue = captureValue;
188 htim->Instance->CNT=0; //Timer zurücksetzen, damit normalerweise kein Overflow auftritt. Nur bei Drehzahl 0 oder Nahe 0 wird OVL ausgelöst
189 ic_overflows=0;
190 }
191}
192
193//-----------------------------------------------------------------------------
194
195void HAL_TIM_PeriodElapsedCallback(TIM_HandleTypeDef* htim)
196{
197
198
199 if (htim->Instance == TIM16)
200 {
201 ic_overflows++;
202 if (ic_overflows > 0) frequency = 0;
203 }
204}
205
206/* USER CODE END 1 */
Note: See TracBrowser for help on using the repository browser.