source: trunk/firmware_v5/CubeMX/Core/Src/tim.c

Last change on this file was 42, checked in by f.jahn, 5 days ago
File size: 6.6 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) 2026 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/* USER CODE END 0 */
26
27TIM_HandleTypeDef htim16;
28TIM_HandleTypeDef htim17;
29
30/* TIM16 init function */
31void MX_TIM16_Init(void)
32{
33
34 /* USER CODE BEGIN TIM16_Init 0 */
35
36 /* USER CODE END TIM16_Init 0 */
37
38 TIM_IC_InitTypeDef sConfigIC = {0};
39
40 /* USER CODE BEGIN TIM16_Init 1 */
41
42 /* USER CODE END TIM16_Init 1 */
43 htim16.Instance = TIM16;
44 htim16.Init.Prescaler = 119;
45 htim16.Init.CounterMode = TIM_COUNTERMODE_UP;
46 htim16.Init.Period = 65535;
47 htim16.Init.ClockDivision = TIM_CLOCKDIVISION_DIV1;
48 htim16.Init.RepetitionCounter = 0;
49 htim16.Init.AutoReloadPreload = TIM_AUTORELOAD_PRELOAD_ENABLE;
50 if (HAL_TIM_Base_Init(&htim16) != HAL_OK)
51 {
52 Error_Handler();
53 }
54 if (HAL_TIM_IC_Init(&htim16) != HAL_OK)
55 {
56 Error_Handler();
57 }
58 sConfigIC.ICPolarity = TIM_INPUTCHANNELPOLARITY_FALLING;
59 sConfigIC.ICSelection = TIM_ICSELECTION_DIRECTTI;
60 sConfigIC.ICPrescaler = TIM_ICPSC_DIV1;
61 sConfigIC.ICFilter = 0;
62 if (HAL_TIM_IC_ConfigChannel(&htim16, &sConfigIC, TIM_CHANNEL_1) != HAL_OK)
63 {
64 Error_Handler();
65 }
66 /* USER CODE BEGIN TIM16_Init 2 */
67
68 /* USER CODE END TIM16_Init 2 */
69
70}
71/* TIM17 init function */
72void MX_TIM17_Init(void)
73{
74
75 /* USER CODE BEGIN TIM17_Init 0 */
76
77 /* USER CODE END TIM17_Init 0 */
78
79 TIM_OC_InitTypeDef sConfigOC = {0};
80 TIM_BreakDeadTimeConfigTypeDef sBreakDeadTimeConfig = {0};
81
82 /* USER CODE BEGIN TIM17_Init 1 */
83
84 /* USER CODE END TIM17_Init 1 */
85 htim17.Instance = TIM17;
86 htim17.Init.Prescaler = 0;
87 htim17.Init.CounterMode = TIM_COUNTERMODE_UP;
88 htim17.Init.Period = 479;
89 htim17.Init.ClockDivision = TIM_CLOCKDIVISION_DIV1;
90 htim17.Init.RepetitionCounter = 0;
91 htim17.Init.AutoReloadPreload = TIM_AUTORELOAD_PRELOAD_ENABLE;
92 if (HAL_TIM_Base_Init(&htim17) != HAL_OK)
93 {
94 Error_Handler();
95 }
96 if (HAL_TIM_PWM_Init(&htim17) != HAL_OK)
97 {
98 Error_Handler();
99 }
100 sConfigOC.OCMode = TIM_OCMODE_PWM1;
101 sConfigOC.Pulse = 0;
102 sConfigOC.OCPolarity = TIM_OCPOLARITY_LOW;
103 sConfigOC.OCNPolarity = TIM_OCNPOLARITY_HIGH;
104 sConfigOC.OCFastMode = TIM_OCFAST_DISABLE;
105 sConfigOC.OCIdleState = TIM_OCIDLESTATE_RESET;
106 sConfigOC.OCNIdleState = TIM_OCNIDLESTATE_RESET;
107 if (HAL_TIM_PWM_ConfigChannel(&htim17, &sConfigOC, TIM_CHANNEL_1) != HAL_OK)
108 {
109 Error_Handler();
110 }
111 sBreakDeadTimeConfig.OffStateRunMode = TIM_OSSR_DISABLE;
112 sBreakDeadTimeConfig.OffStateIDLEMode = TIM_OSSI_DISABLE;
113 sBreakDeadTimeConfig.LockLevel = TIM_LOCKLEVEL_OFF;
114 sBreakDeadTimeConfig.DeadTime = 0;
115 sBreakDeadTimeConfig.BreakState = TIM_BREAK_DISABLE;
116 sBreakDeadTimeConfig.BreakPolarity = TIM_BREAKPOLARITY_HIGH;
117 sBreakDeadTimeConfig.BreakFilter = 0;
118 sBreakDeadTimeConfig.AutomaticOutput = TIM_AUTOMATICOUTPUT_DISABLE;
119 if (HAL_TIMEx_ConfigBreakDeadTime(&htim17, &sBreakDeadTimeConfig) != HAL_OK)
120 {
121 Error_Handler();
122 }
123 /* USER CODE BEGIN TIM17_Init 2 */
124
125 /* USER CODE END TIM17_Init 2 */
126 HAL_TIM_MspPostInit(&htim17);
127
128}
129
130void HAL_TIM_Base_MspInit(TIM_HandleTypeDef* tim_baseHandle)
131{
132
133 GPIO_InitTypeDef GPIO_InitStruct = {0};
134 if(tim_baseHandle->Instance==TIM16)
135 {
136 /* USER CODE BEGIN TIM16_MspInit 0 */
137
138 /* USER CODE END TIM16_MspInit 0 */
139 /* TIM16 clock enable */
140 __HAL_RCC_TIM16_CLK_ENABLE();
141
142 __HAL_RCC_GPIOA_CLK_ENABLE();
143 /**TIM16 GPIO Configuration
144 PA6 ------> TIM16_CH1
145 */
146 GPIO_InitStruct.Pin = FAN_TACHO_Pin;
147 GPIO_InitStruct.Mode = GPIO_MODE_AF_PP;
148 GPIO_InitStruct.Pull = GPIO_PULLUP;
149 GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW;
150 GPIO_InitStruct.Alternate = GPIO_AF5_TIM16;
151 HAL_GPIO_Init(FAN_TACHO_GPIO_Port, &GPIO_InitStruct);
152
153 /* TIM16 interrupt Init */
154 HAL_NVIC_SetPriority(TIM16_IRQn, 0, 0);
155 HAL_NVIC_EnableIRQ(TIM16_IRQn);
156 /* USER CODE BEGIN TIM16_MspInit 1 */
157
158 /* USER CODE END TIM16_MspInit 1 */
159 }
160 else if(tim_baseHandle->Instance==TIM17)
161 {
162 /* USER CODE BEGIN TIM17_MspInit 0 */
163
164 /* USER CODE END TIM17_MspInit 0 */
165 /* TIM17 clock enable */
166 __HAL_RCC_TIM17_CLK_ENABLE();
167 /* USER CODE BEGIN TIM17_MspInit 1 */
168
169 /* USER CODE END TIM17_MspInit 1 */
170 }
171}
172void HAL_TIM_MspPostInit(TIM_HandleTypeDef* timHandle)
173{
174
175 GPIO_InitTypeDef GPIO_InitStruct = {0};
176 if(timHandle->Instance==TIM17)
177 {
178 /* USER CODE BEGIN TIM17_MspPostInit 0 */
179
180 /* USER CODE END TIM17_MspPostInit 0 */
181
182 __HAL_RCC_GPIOA_CLK_ENABLE();
183 /**TIM17 GPIO Configuration
184 PA7 ------> TIM17_CH1
185 */
186 GPIO_InitStruct.Pin = FAN_PWM_Pin;
187 GPIO_InitStruct.Mode = GPIO_MODE_AF_PP;
188 GPIO_InitStruct.Pull = GPIO_NOPULL;
189 GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW;
190 GPIO_InitStruct.Alternate = GPIO_AF5_TIM17;
191 HAL_GPIO_Init(FAN_PWM_GPIO_Port, &GPIO_InitStruct);
192
193 /* USER CODE BEGIN TIM17_MspPostInit 1 */
194
195 /* USER CODE END TIM17_MspPostInit 1 */
196 }
197
198}
199
200void HAL_TIM_Base_MspDeInit(TIM_HandleTypeDef* tim_baseHandle)
201{
202
203 if(tim_baseHandle->Instance==TIM16)
204 {
205 /* USER CODE BEGIN TIM16_MspDeInit 0 */
206
207 /* USER CODE END TIM16_MspDeInit 0 */
208 /* Peripheral clock disable */
209 __HAL_RCC_TIM16_CLK_DISABLE();
210
211 /**TIM16 GPIO Configuration
212 PA6 ------> TIM16_CH1
213 */
214 HAL_GPIO_DeInit(FAN_TACHO_GPIO_Port, FAN_TACHO_Pin);
215
216 /* TIM16 interrupt Deinit */
217 HAL_NVIC_DisableIRQ(TIM16_IRQn);
218 /* USER CODE BEGIN TIM16_MspDeInit 1 */
219
220 /* USER CODE END TIM16_MspDeInit 1 */
221 }
222 else if(tim_baseHandle->Instance==TIM17)
223 {
224 /* USER CODE BEGIN TIM17_MspDeInit 0 */
225
226 /* USER CODE END TIM17_MspDeInit 0 */
227 /* Peripheral clock disable */
228 __HAL_RCC_TIM17_CLK_DISABLE();
229 /* USER CODE BEGIN TIM17_MspDeInit 1 */
230
231 /* USER CODE END TIM17_MspDeInit 1 */
232 }
233}
234
235/* USER CODE BEGIN 1 */
236
237/* USER CODE END 1 */
238
Note: See TracBrowser for help on using the repository browser.