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

Last change on this file was 24, checked in by f.jahn, 5 days 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.