/* USER CODE BEGIN Header */ /** ****************************************************************************** * @file tim.h * @brief This file contains all the function prototypes for * the tim.c file ****************************************************************************** * @attention * * Copyright (c) 2024 STMicroelectronics. * All rights reserved. * * This software is licensed under terms that can be found in the LICENSE file * in the root directory of this software component. * If no LICENSE file comes with this software, it is provided AS-IS. * ****************************************************************************** */ /* USER CODE END Header */ /* Define to prevent recursive inclusion -------------------------------------*/ #ifndef __TIM_H__ #define __TIM_H__ #ifdef __cplusplus extern "C" { #endif /* Includes ------------------------------------------------------------------*/ #include "main.h" /* USER CODE BEGIN Includes */ #define FREQ_SYS 82944000 #define freq_operation(FREQ, PULSE, CHAN) \ do \ { \ HAL_TIMEx_PWMN_Stop(&htim1, TIM_CHANNEL_2); \ HAL_TIM_PWM_Stop(&htim1, TIM_CHANNEL_3); \ if (FREQ <= 0 || FREQ >= 500000 || PULSE <= 0 || PULSE >= 100) \ { \ __HAL_TIM_SET_PRESCALER(&htim1, 1500-1); \ __HAL_TIM_SET_AUTORELOAD(&htim1, 55-1); \ __HAL_TIM_SET_COMPARE(&htim1, CHAN, 28-1); \ break; \ } \ int fre_duty = 0; \ if( (0 < FREQ )&&(FREQ <= 650) ) \ { \ __HAL_TIM_SET_PRESCALER(&htim1, 1500-1); \ fre_duty = ( (float32)FREQ_SYS / (float32)1500.0 / (float32)FREQ + (float32)0.5 ); \ } \ else if(FREQ > 650) \ { \ __HAL_TIM_SET_PRESCALER(&htim1, 2-1); \ fre_duty = ( (float32)FREQ_SYS / (float32)2.0 / (float32)FREQ + (float32)0.5 ); \ } \ __HAL_TIM_SET_AUTORELOAD(&htim1, fre_duty -1); \ __HAL_TIM_SET_COMPARE(&htim1, CHAN, fre_duty *PULSE / 100 - 1); \ if( CHAN == TIM_CHANNEL_2) \ { \ HAL_TIMEx_PWMN_Start(&htim1, CHAN); \ } \ else \ { \ HAL_TIM_PWM_Start(&htim1, CHAN); \ } \ } while (0) /* USER CODE END Includes */ extern TIM_HandleTypeDef htim1; extern TIM_HandleTypeDef htim2; extern TIM_HandleTypeDef htim3; extern TIM_HandleTypeDef htim6; /* USER CODE BEGIN Private defines */ /* USER CODE END Private defines */ void MX_TIM1_Init(void); void MX_TIM2_Init(void); void MX_TIM3_Init(void); void MX_TIM6_Init(void); void HAL_TIM_MspPostInit(TIM_HandleTypeDef *htim); /* USER CODE BEGIN Prototypes */ /* USER CODE END Prototypes */ #ifdef __cplusplus } #endif #endif /* __TIM_H__ */