source: trunk/firmware_v2/Core/Src/tim.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: 6.7 KB
Line 
1/* USER CODE BEGIN Header */
2/**
3 ******************************************************************************
4 * @file tim.c
5 * @brief This file provides code for the configuration
6 * of the TIM instances.
7 ******************************************************************************
8 * @attention
9 *
10 * Copyright (c) 2025 STMicroelectronics.
11 * All rights reserved.
12 *
13 * This software is licensed under terms that can be found in the LICENSE file
14 * in the root directory of this software component.
15 * If no LICENSE file comes with this software, it is provided AS-IS.
16 *
17 ******************************************************************************
18 */
19/* USER CODE END Header */
20/* Includes ------------------------------------------------------------------*/
21#include "tim.h"
22
23/* USER CODE BEGIN 0 */
24
25#include <stdio.h>
26
27
28
29
30
31/* USER CODE END 0 */
32
33TIM_HandleTypeDef htim16;
34TIM_HandleTypeDef htim17;
35
36/* TIM16 init function */
37void MX_TIM16_Init(void)
38{
39
40 /* USER CODE BEGIN TIM16_Init 0 */
41
42 /* USER CODE END TIM16_Init 0 */
43
44 TIM_IC_InitTypeDef sConfigIC = {0};
45
46 /* USER CODE BEGIN TIM16_Init 1 */
47
48 /* USER CODE END TIM16_Init 1 */
49 htim16.Instance = TIM16;
50 htim16.Init.Prescaler = 119;
51 htim16.Init.CounterMode = TIM_COUNTERMODE_UP;
52 htim16.Init.Period = 65535;
53 htim16.Init.ClockDivision = TIM_CLOCKDIVISION_DIV1;
54 htim16.Init.RepetitionCounter = 0;
55 htim16.Init.AutoReloadPreload = TIM_AUTORELOAD_PRELOAD_ENABLE;
56 if (HAL_TIM_Base_Init(&htim16) != HAL_OK)
57 {
58 Error_Handler();
59 }
60 if (HAL_TIM_IC_Init(&htim16) != HAL_OK)
61 {
62 Error_Handler();
63 }
64 sConfigIC.ICPolarity = TIM_INPUTCHANNELPOLARITY_FALLING;
65 sConfigIC.ICSelection = TIM_ICSELECTION_DIRECTTI;
66 sConfigIC.ICPrescaler = TIM_ICPSC_DIV1;
67 sConfigIC.ICFilter = 0;
68 if (HAL_TIM_IC_ConfigChannel(&htim16, &sConfigIC, TIM_CHANNEL_1) != HAL_OK)
69 {
70 Error_Handler();
71 }
72 /* USER CODE BEGIN TIM16_Init 2 */
73
74 /* USER CODE END TIM16_Init 2 */
75
76}
77/* TIM17 init function */
78void MX_TIM17_Init(void)
79{
80
81 /* USER CODE BEGIN TIM17_Init 0 */
82
83 // FAN PWM at 25kHz
84
85 /* USER CODE END TIM17_Init 0 */
86
87 TIM_OC_InitTypeDef sConfigOC = {0};
88 TIM_BreakDeadTimeConfigTypeDef sBreakDeadTimeConfig = {0};
89
90 /* USER CODE BEGIN TIM17_Init 1 */
91
92 /* USER CODE END TIM17_Init 1 */
93 htim17.Instance = TIM17;
94 htim17.Init.Prescaler = 0;
95 htim17.Init.CounterMode = TIM_COUNTERMODE_UP;
96 htim17.Init.Period = 479;
97 htim17.Init.ClockDivision = TIM_CLOCKDIVISION_DIV1;
98 htim17.Init.RepetitionCounter = 0;
99 htim17.Init.AutoReloadPreload = TIM_AUTORELOAD_PRELOAD_ENABLE;
100 if (HAL_TIM_Base_Init(&htim17) != HAL_OK)
101 {
102 Error_Handler();
103 }
104 if (HAL_TIM_PWM_Init(&htim17) != HAL_OK)
105 {
106 Error_Handler();
107 }
108 sConfigOC.OCMode = TIM_OCMODE_PWM1;
109 sConfigOC.Pulse = 0;
110 sConfigOC.OCPolarity = TIM_OCPOLARITY_LOW;
111 sConfigOC.OCNPolarity = TIM_OCNPOLARITY_HIGH;
112 sConfigOC.OCFastMode = TIM_OCFAST_DISABLE;
113 sConfigOC.OCIdleState = TIM_OCIDLESTATE_RESET;
114 sConfigOC.OCNIdleState = TIM_OCNIDLESTATE_RESET;
115 if (HAL_TIM_PWM_ConfigChannel(&htim17, &sConfigOC, TIM_CHANNEL_1) != HAL_OK)
116 {
117 Error_Handler();
118 }
119 sBreakDeadTimeConfig.OffStateRunMode = TIM_OSSR_DISABLE;
120 sBreakDeadTimeConfig.OffStateIDLEMode = TIM_OSSI_DISABLE;
121 sBreakDeadTimeConfig.LockLevel = TIM_LOCKLEVEL_OFF;
122 sBreakDeadTimeConfig.DeadTime = 0;
123 sBreakDeadTimeConfig.BreakState = TIM_BREAK_DISABLE;
124 sBreakDeadTimeConfig.BreakPolarity = TIM_BREAKPOLARITY_HIGH;
125 sBreakDeadTimeConfig.BreakFilter = 0;
126 sBreakDeadTimeConfig.AutomaticOutput = TIM_AUTOMATICOUTPUT_DISABLE;
127 if (HAL_TIMEx_ConfigBreakDeadTime(&htim17, &sBreakDeadTimeConfig) != HAL_OK)
128 {
129 Error_Handler();
130 }
131 /* USER CODE BEGIN TIM17_Init 2 */
132
133
134
135 /* USER CODE END TIM17_Init 2 */
136 HAL_TIM_MspPostInit(&htim17);
137
138}
139
140void HAL_TIM_Base_MspInit(TIM_HandleTypeDef* tim_baseHandle)
141{
142
143 GPIO_InitTypeDef GPIO_InitStruct = {0};
144 if(tim_baseHandle->Instance==TIM16)
145 {
146 /* USER CODE BEGIN TIM16_MspInit 0 */
147
148 /* USER CODE END TIM16_MspInit 0 */
149 /* TIM16 clock enable */
150 __HAL_RCC_TIM16_CLK_ENABLE();
151
152 __HAL_RCC_GPIOA_CLK_ENABLE();
153 /**TIM16 GPIO Configuration
154 PA6 ------> TIM16_CH1
155 */
156 GPIO_InitStruct.Pin = FAN_TACHO_Pin;
157 GPIO_InitStruct.Mode = GPIO_MODE_AF_PP;
158 GPIO_InitStruct.Pull = GPIO_PULLUP;
159 GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW;
160 GPIO_InitStruct.Alternate = GPIO_AF5_TIM16;
161 HAL_GPIO_Init(FAN_TACHO_GPIO_Port, &GPIO_InitStruct);
162
163 /* TIM16 interrupt Init */
164 HAL_NVIC_SetPriority(TIM16_IRQn, 0, 0);
165 HAL_NVIC_EnableIRQ(TIM16_IRQn);
166 /* USER CODE BEGIN TIM16_MspInit 1 */
167
168 /* USER CODE END TIM16_MspInit 1 */
169 }
170 else if(tim_baseHandle->Instance==TIM17)
171 {
172 /* USER CODE BEGIN TIM17_MspInit 0 */
173
174 /* USER CODE END TIM17_MspInit 0 */
175 /* TIM17 clock enable */
176 __HAL_RCC_TIM17_CLK_ENABLE();
177 /* USER CODE BEGIN TIM17_MspInit 1 */
178
179 /* USER CODE END TIM17_MspInit 1 */
180 }
181}
182void HAL_TIM_MspPostInit(TIM_HandleTypeDef* timHandle)
183{
184
185 GPIO_InitTypeDef GPIO_InitStruct = {0};
186 if(timHandle->Instance==TIM17)
187 {
188 /* USER CODE BEGIN TIM17_MspPostInit 0 */
189
190 /* USER CODE END TIM17_MspPostInit 0 */
191
192 __HAL_RCC_GPIOA_CLK_ENABLE();
193 /**TIM17 GPIO Configuration
194 PA7 ------> TIM17_CH1
195 */
196 GPIO_InitStruct.Pin = FAN_PWM_Pin;
197 GPIO_InitStruct.Mode = GPIO_MODE_AF_PP;
198 GPIO_InitStruct.Pull = GPIO_NOPULL;
199 GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW;
200 GPIO_InitStruct.Alternate = GPIO_AF5_TIM17;
201 HAL_GPIO_Init(FAN_PWM_GPIO_Port, &GPIO_InitStruct);
202
203 /* USER CODE BEGIN TIM17_MspPostInit 1 */
204
205 if (HAL_TIM_PWM_Start(timHandle, TIM_CHANNEL_1) != HAL_OK) Error_Handler();
206
207 /* USER CODE END TIM17_MspPostInit 1 */
208 }
209
210}
211
212void HAL_TIM_Base_MspDeInit(TIM_HandleTypeDef* tim_baseHandle)
213{
214
215 if(tim_baseHandle->Instance==TIM16)
216 {
217 /* USER CODE BEGIN TIM16_MspDeInit 0 */
218
219 /* USER CODE END TIM16_MspDeInit 0 */
220 /* Peripheral clock disable */
221 __HAL_RCC_TIM16_CLK_DISABLE();
222
223 /**TIM16 GPIO Configuration
224 PA6 ------> TIM16_CH1
225 */
226 HAL_GPIO_DeInit(FAN_TACHO_GPIO_Port, FAN_TACHO_Pin);
227
228 /* TIM16 interrupt Deinit */
229 HAL_NVIC_DisableIRQ(TIM16_IRQn);
230 /* USER CODE BEGIN TIM16_MspDeInit 1 */
231
232 /* USER CODE END TIM16_MspDeInit 1 */
233 }
234 else if(tim_baseHandle->Instance==TIM17)
235 {
236 /* USER CODE BEGIN TIM17_MspDeInit 0 */
237
238 /* USER CODE END TIM17_MspDeInit 0 */
239 /* Peripheral clock disable */
240 __HAL_RCC_TIM17_CLK_DISABLE();
241 /* USER CODE BEGIN TIM17_MspDeInit 1 */
242
243 /* USER CODE END TIM17_MspDeInit 1 */
244 }
245}
246
247/* USER CODE BEGIN 1 */
248
249
250/* USER CODE END 1 */
Note: See TracBrowser for help on using the repository browser.