Обновление
This commit is contained in:
parent
89e6ae702c
commit
7145e0c1dc
|
|
@ -22,10 +22,11 @@ typedef struct {
|
||||||
|
|
||||||
void PWM_Initial(
|
void PWM_Initial(
|
||||||
tPwmFlagchip *env,
|
tPwmFlagchip *env,
|
||||||
|
bool isDeInit,
|
||||||
uint32_t PeriodTime,
|
uint32_t PeriodTime,
|
||||||
uint32_t ActiveTime,
|
uint32_t ActiveTime,
|
||||||
uint8_t TPU_PWM_CHANNEL,
|
uint8_t TPU_PWM_CHANNEL,
|
||||||
uint8 TPU0_CH_PRIORITY,
|
uint8 TPU_PRIORITY,
|
||||||
TPU_EventCallbackType Bsp_Tpu_PwmCallback,
|
TPU_EventCallbackType Bsp_Tpu_PwmCallback,
|
||||||
TPU_TCR1OverflowCallbackType Bsp_Tpu_OverflowCallBack);
|
TPU_TCR1OverflowCallbackType Bsp_Tpu_OverflowCallBack);
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -12,10 +12,11 @@ void Get_Set_Tpu_PwmCallback(tPwmFlagchip *env) {
|
||||||
|
|
||||||
void PWM_Initial(
|
void PWM_Initial(
|
||||||
tPwmFlagchip *env,
|
tPwmFlagchip *env,
|
||||||
|
bool isDeInit,
|
||||||
uint32_t PeriodTime,
|
uint32_t PeriodTime,
|
||||||
uint32_t ActiveTime,
|
uint32_t ActiveTime,
|
||||||
uint8_t TPU_PWM_CHANNEL,
|
uint8_t TPU_PWM_CHANNEL,
|
||||||
uint8 TPU0_CH_PRIORITY,
|
uint8 TPU_PRIORITY,
|
||||||
TPU_EventCallbackType Bsp_Tpu_PwmCallback,
|
TPU_EventCallbackType Bsp_Tpu_PwmCallback,
|
||||||
TPU_TCR1OverflowCallbackType Bsp_Tpu_OverflowCallBack) {
|
TPU_TCR1OverflowCallbackType Bsp_Tpu_OverflowCallBack) {
|
||||||
|
|
||||||
|
|
@ -41,23 +42,25 @@ void PWM_Initial(
|
||||||
env->TPU_PWM_CHANNEL = TPU_PWM_CHANNEL;
|
env->TPU_PWM_CHANNEL = TPU_PWM_CHANNEL;
|
||||||
|
|
||||||
|
|
||||||
|
if (isDeInit) {
|
||||||
TPU_DeInit();
|
TPU_DeInit();
|
||||||
|
}
|
||||||
TPU_Init();
|
TPU_Init();
|
||||||
TPU_PwmModeInit(TPU_PWM_CHANNEL, &env->etpu_pwmconfig_tbl);
|
TPU_PwmModeInit(TPU_PWM_CHANNEL, &env->etpu_pwmconfig_tbl);
|
||||||
TPU_InitChannelInterrupt(TPU_PWM_CHANNEL, &env->etpu_Int_config_tbl);
|
TPU_InitChannelInterrupt(TPU_PWM_CHANNEL, &env->etpu_Int_config_tbl);
|
||||||
|
|
||||||
if (TPU_PWM_CHANNEL <= 7) {
|
if (TPU_PWM_CHANNEL <= 7) {
|
||||||
|
NVIC_SetPriority(TPU0_CH0_7_IRQn, TPU_PRIORITY);
|
||||||
NVIC_EnableIRQ(TPU0_CH0_7_IRQn);
|
NVIC_EnableIRQ(TPU0_CH0_7_IRQn);
|
||||||
NVIC_SetPriority(TPU0_CH0_7_IRQn, TPU0_CH_PRIORITY);
|
|
||||||
} else if (TPU_PWM_CHANNEL <= 15) {
|
} else if (TPU_PWM_CHANNEL <= 15) {
|
||||||
|
NVIC_SetPriority(TPU0_CH8_15_IRQn, TPU_PRIORITY);
|
||||||
NVIC_EnableIRQ(TPU0_CH8_15_IRQn);
|
NVIC_EnableIRQ(TPU0_CH8_15_IRQn);
|
||||||
NVIC_SetPriority(TPU0_CH8_15_IRQn, TPU0_CH_PRIORITY);
|
|
||||||
} else if (TPU_PWM_CHANNEL <= 23) {
|
} else if (TPU_PWM_CHANNEL <= 23) {
|
||||||
|
NVIC_SetPriority(TPU0_CH16_23_IRQn, TPU_PRIORITY);
|
||||||
NVIC_EnableIRQ(TPU0_CH16_23_IRQn);
|
NVIC_EnableIRQ(TPU0_CH16_23_IRQn);
|
||||||
NVIC_SetPriority(TPU0_CH16_23_IRQn, TPU0_CH_PRIORITY);
|
|
||||||
} else if (TPU_PWM_CHANNEL <= 31) {
|
} else if (TPU_PWM_CHANNEL <= 31) {
|
||||||
|
NVIC_SetPriority(TPU0_CH24_31_IRQn, TPU_PRIORITY);
|
||||||
NVIC_EnableIRQ(TPU0_CH24_31_IRQn);
|
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) {
|
static void setActivePercent(tPwmFlagchip *env, uint8_t percent) {
|
||||||
|
|
||||||
if (percent > 100)
|
if (percent >= 100)
|
||||||
percent = 100;
|
percent = 85;
|
||||||
|
|
||||||
|
if (percent == 0)
|
||||||
|
percent = 5;
|
||||||
|
|
||||||
// Расчет времени активности в тактах
|
// Расчет времени активности в тактах
|
||||||
env->etpu_pwmconfig_tbl.u32ActiveTime = PERIOD_TICKS * percent / 100;
|
env->etpu_pwmconfig_tbl.u32ActiveTime = PERIOD_TICKS * percent / 100;
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue