Обновление

This commit is contained in:
cfif 2026-01-15 12:08:29 +03:00
parent 89e6ae702c
commit 7145e0c1dc
2 changed files with 16 additions and 9 deletions

View File

@ -22,10 +22,11 @@ typedef struct {
void PWM_Initial(
tPwmFlagchip *env,
bool isDeInit,
uint32_t PeriodTime,
uint32_t ActiveTime,
uint8_t TPU_PWM_CHANNEL,
uint8 TPU0_CH_PRIORITY,
uint8 TPU_PRIORITY,
TPU_EventCallbackType Bsp_Tpu_PwmCallback,
TPU_TCR1OverflowCallbackType Bsp_Tpu_OverflowCallBack);

View File

@ -12,10 +12,11 @@ void Get_Set_Tpu_PwmCallback(tPwmFlagchip *env) {
void PWM_Initial(
tPwmFlagchip *env,
bool isDeInit,
uint32_t PeriodTime,
uint32_t ActiveTime,
uint8_t TPU_PWM_CHANNEL,
uint8 TPU0_CH_PRIORITY,
uint8 TPU_PRIORITY,
TPU_EventCallbackType Bsp_Tpu_PwmCallback,
TPU_TCR1OverflowCallbackType Bsp_Tpu_OverflowCallBack) {
@ -41,23 +42,25 @@ void PWM_Initial(
env->TPU_PWM_CHANNEL = TPU_PWM_CHANNEL;
TPU_DeInit();
if (isDeInit) {
TPU_DeInit();
}
TPU_Init();
TPU_PwmModeInit(TPU_PWM_CHANNEL, &env->etpu_pwmconfig_tbl);
TPU_InitChannelInterrupt(TPU_PWM_CHANNEL, &env->etpu_Int_config_tbl);
if (TPU_PWM_CHANNEL <= 7) {
NVIC_SetPriority(TPU0_CH0_7_IRQn, TPU_PRIORITY);
NVIC_EnableIRQ(TPU0_CH0_7_IRQn);
NVIC_SetPriority(TPU0_CH0_7_IRQn, TPU0_CH_PRIORITY);
} else if (TPU_PWM_CHANNEL <= 15) {
NVIC_SetPriority(TPU0_CH8_15_IRQn, TPU_PRIORITY);
NVIC_EnableIRQ(TPU0_CH8_15_IRQn);
NVIC_SetPriority(TPU0_CH8_15_IRQn, TPU0_CH_PRIORITY);
} else if (TPU_PWM_CHANNEL <= 23) {
NVIC_SetPriority(TPU0_CH16_23_IRQn, TPU_PRIORITY);
NVIC_EnableIRQ(TPU0_CH16_23_IRQn);
NVIC_SetPriority(TPU0_CH16_23_IRQn, TPU0_CH_PRIORITY);
} else if (TPU_PWM_CHANNEL <= 31) {
NVIC_SetPriority(TPU0_CH24_31_IRQn, TPU_PRIORITY);
NVIC_EnableIRQ(TPU0_CH24_31_IRQn);
NVIC_SetPriority(TPU0_CH24_31_IRQn, TPU0_CH_PRIORITY);
}
}
@ -68,8 +71,11 @@ static void vPwmRun(tPwmFlagchip *env) {
static void setActivePercent(tPwmFlagchip *env, uint8_t percent) {
if (percent > 100)
percent = 100;
if (percent >= 100)
percent = 85;
if (percent == 0)
percent = 5;
// Расчет времени активности в тактах
env->etpu_pwmconfig_tbl.u32ActiveTime = PERIOD_TICKS * percent / 100;