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

Last change on this file was 41, checked in by f.jahn, 8 days ago

V3 Version soweit fertig. Relais ansteuerung, modbus, temperatursensor ist implementiert
Commit vor Änderung auf neuen Controller mit mehr Speicher

File size: 6.4 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;
65extern DMA_HandleTypeDef hdma_usart1_rx;
66extern DMA_HandleTypeDef hdma_usart1_tx;
67extern UART_HandleTypeDef huart1;
68/* USER CODE BEGIN EV */
69 uint32_t captureValue = 0;
70 uint32_t previousCaptureValue = 0;
71 uint32_t frequency = 0;
72 uint32_t ic_overflows = 0;
73/* USER CODE END EV */
74
75/******************************************************************************/
76/* Cortex Processor Interruption and Exception Handlers */
77/******************************************************************************/
78/**
79 * @brief This function handles Non maskable interrupt.
80 */
81void NMI_Handler(void)
82{
83 /* USER CODE BEGIN NonMaskableInt_IRQn 0 */
84
85 /* USER CODE END NonMaskableInt_IRQn 0 */
86 /* USER CODE BEGIN NonMaskableInt_IRQn 1 */
87 while (1)
88 {
89 }
90 /* USER CODE END NonMaskableInt_IRQn 1 */
91}
92
93/**
94 * @brief This function handles Hard fault interrupt.
95 */
96void HardFault_Handler(void)
97{
98 /* USER CODE BEGIN HardFault_IRQn 0 */
99
100 /* USER CODE END HardFault_IRQn 0 */
101 while (1)
102 {
103 /* USER CODE BEGIN W1_HardFault_IRQn 0 */
104 /* USER CODE END W1_HardFault_IRQn 0 */
105 }
106}
107
108/**
109 * @brief This function handles System service call via SWI instruction.
110 */
111void SVC_Handler(void)
112{
113 /* USER CODE BEGIN SVC_IRQn 0 */
114
115 /* USER CODE END SVC_IRQn 0 */
116 /* USER CODE BEGIN SVC_IRQn 1 */
117
118 /* USER CODE END SVC_IRQn 1 */
119}
120
121/**
122 * @brief This function handles Pendable request for system service.
123 */
124void PendSV_Handler(void)
125{
126 /* USER CODE BEGIN PendSV_IRQn 0 */
127
128 /* USER CODE END PendSV_IRQn 0 */
129 /* USER CODE BEGIN PendSV_IRQn 1 */
130
131 /* USER CODE END PendSV_IRQn 1 */
132}
133
134/**
135 * @brief This function handles System tick timer.
136 */
137void SysTick_Handler(void)
138{
139 /* USER CODE BEGIN SysTick_IRQn 0 */
140
141 /* USER CODE END SysTick_IRQn 0 */
142 HAL_IncTick();
143 /* USER CODE BEGIN SysTick_IRQn 1 */
144
145 /* USER CODE END SysTick_IRQn 1 */
146}
147
148/******************************************************************************/
149/* STM32C0xx Peripheral Interrupt Handlers */
150/* Add here the Interrupt Handlers for the used peripherals. */
151/* For the available peripheral interrupt handler names, */
152/* please refer to the startup file (startup_stm32c0xx.s). */
153/******************************************************************************/
154
155/**
156 * @brief This function handles DMA1 channel 1 interrupt.
157 */
158void DMA1_Channel1_IRQHandler(void)
159{
160 /* USER CODE BEGIN DMA1_Channel1_IRQn 0 */
161
162 /* USER CODE END DMA1_Channel1_IRQn 0 */
163 HAL_DMA_IRQHandler(&hdma_adc1);
164 /* USER CODE BEGIN DMA1_Channel1_IRQn 1 */
165
166 /* USER CODE END DMA1_Channel1_IRQn 1 */
167}
168
169/**
170 * @brief This function handles DMA1 channel 2 and channel 3 interrupts.
171 */
172void DMA1_Channel2_3_IRQHandler(void)
173{
174 /* USER CODE BEGIN DMA1_Channel2_3_IRQn 0 */
175
176 /* USER CODE END DMA1_Channel2_3_IRQn 0 */
177 HAL_DMA_IRQHandler(&hdma_usart1_rx);
178 HAL_DMA_IRQHandler(&hdma_usart1_tx);
179 /* USER CODE BEGIN DMA1_Channel2_3_IRQn 1 */
180
181 /* USER CODE END DMA1_Channel2_3_IRQn 1 */
182}
183
184/**
185 * @brief This function handles TIM16 global interrupt.
186 */
187void TIM16_IRQHandler(void)
188{
189 /* USER CODE BEGIN TIM16_IRQn 0 */
190
191 /* USER CODE END TIM16_IRQn 0 */
192 HAL_TIM_IRQHandler(&htim16);
193 /* USER CODE BEGIN TIM16_IRQn 1 */
194
195 /* USER CODE END TIM16_IRQn 1 */
196}
197
198/**
199 * @brief This function handles USART1 interrupt.
200 */
201void USART1_IRQHandler(void)
202{
203 /* USER CODE BEGIN USART1_IRQn 0 */
204
205 /* USER CODE END USART1_IRQn 0 */
206 HAL_UART_IRQHandler(&huart1);
207 /* USER CODE BEGIN USART1_IRQn 1 */
208
209 /* USER CODE END USART1_IRQn 1 */
210}
211
212/* USER CODE BEGIN 1 */
213
214void HAL_TIM_IC_CaptureCallback(TIM_HandleTypeDef* htim)
215{
216 if (htim->Channel == HAL_TIM_ACTIVE_CHANNEL_1) {
217 captureValue = HAL_TIM_ReadCapturedValue(htim, TIM_CHANNEL_1);
218 frequency = HAL_RCC_GetPCLK1Freq() / (htim->Instance->PSC + 1) / (captureValue);
219 //previousCaptureValue = captureValue;
220 htim->Instance->CNT=0; //Timer zurücksetzen, damit normalerweise kein Overflow auftritt. Nur bei Drehzahl 0 oder Nahe 0 wird OVL ausgelöst
221 ic_overflows=0;
222 }
223}
224
225//-----------------------------------------------------------------------------
226
227void HAL_TIM_PeriodElapsedCallback(TIM_HandleTypeDef* htim)
228{
229
230
231 if (htim->Instance == TIM16)
232 {
233 ic_overflows++;
234 if (ic_overflows > 0) frequency = 0;
235 }
236}
237
238/* USER CODE END 1 */
Note: See TracBrowser for help on using the repository browser.