Сделано чтобы софтварный режим пачки импульсов выбирался по одному дефайну

This commit is contained in:
Razvalyaev 2025-11-21 10:23:45 +03:00
parent b21d72b728
commit f3965db204
3 changed files with 26 additions and 2 deletions

View File

@ -30,7 +30,7 @@
#define TEMP_1 0
#define TEMP_2 1
//#define UPP_SIMULATE_I ///< Симулировт токи (Iref/2) а не брать с АЦП
#define UPP_SIMULATE_I ///< Симулировт токи (Iref/2) а не брать с АЦП
/**
* @addtogroup UPP_PARAMS_DEFAULT Default params for external flash

View File

@ -9,6 +9,7 @@
#include "tim.h"
static HAL_StatusTypeDef __PWM_SetOutputState(PWM_Channel_t *hCh, uint32_t state);
static HAL_StatusTypeDef __PWM_ReConfigToSoftwarePulses(void);
/**
* @brief Инициализация ШИМ тиристоров.
@ -69,6 +70,7 @@ HAL_StatusTypeDef PWM_Init(PWM_Handle_t *hpwm)
PWM_Stop(hpwm, 0, 1);
#ifndef PWM_HARDWARE_IMPULSES_CONTROL
__PWM_ReConfigToSoftwarePulses();
HAL_TIM_Base_Start_IT(&hpwm1);
#endif
@ -407,4 +409,22 @@ static HAL_StatusTypeDef __PWM_SetOutputState(PWM_Channel_t *hCh, uint32_t state
}
return HAL_OK;
}
/**
* @brief Переконфигурация таймером для софтварного формирования пачки импульсов.
* @return HAL Status.
*/
static HAL_StatusTypeDef __PWM_ReConfigToSoftwarePulses(void)
{
/* One Pulse и Repetitive не используем */
hpwm1.Instance->RCR = 0;
hpwm1.Instance->CR1 &= ~TIM_CR1_OPM;
hpwm2.Instance->RCR = 0;
hpwm2.Instance->CR1 &= ~TIM_CR1_OPM;
/* Настраиваем Slave на втором таймере*/
TIM_SlaveConfigTypeDef sSlaveConfig = {0};
sSlaveConfig.SlaveMode = TIM_SLAVEMODE_TRIGGER;
sSlaveConfig.InputTrigger = TIM_TS_ITR0;
return HAL_TIM_SlaveConfigSynchro(&htim8, &sSlaveConfig);
}

View File

@ -9,7 +9,11 @@
#include "main.h"
/**
* @brief Вкоючить хардварный способ формирования пачки импульсов
* @note При отключении сильно возрастет нагрузка на контроллер из-за прерываний ШИМ!
* Они поак работают всегда, независимо от того есть импулсь или нет
*/
#define PWM_HARDWARE_IMPULSES_CONTROL