华大PWM动态调节出现占空比丢失现象(静态没问题),芯片005,使用TIM5定时器,void App_constant_power(uint16_t u16CHB_PWMDuty)
{
en_adt_compare_t enAdtCompareB;
stc_adt_basecnt_cfg_t stcAdtBaseCntCfg;
stc_adt_CHxX_port_cfg_t stcAdtTIM5BCfg;
DDL_ZERO_STRUCT(stcAdtBaseCntCfg);
DDL_ZERO_STRUCT(stcAdtTIM5BCfg);
stcAdtBaseCntCfg.enCntMode = AdtSawtoothMode; //锯齿波模式
stcAdtBaseCntCfg.enCntDir = AdtCntDown; //递减计数
stcAdtBaseCntCfg.enCntClkDiv = AdtClkPClk0; //不分频
Adt_Init(M0P_ADTIM5, &stcAdtBaseCntCfg); //ADT载波、计数模式、时钟配置
Adt_SetPeriod(M0P_ADTIM5, 0x5DC0); //周期设置
enAdtCompareB = AdtCompareB;
Adt_SetCompareValue(M0P_ADTIM5, enAdtCompareB, u16CHB_PWMDuty); //通用比较基准值寄存器B设置
stcAdtTIM5BCfg.enCap = AdtCHxCompareOutput; //比较输出
stcAdtTIM5BCfg.bOutEn = TRUE; //CHB输出使能
stcAdtTIM5BCfg.enPerc = AdtCHxPeriodLow; //计数值与周期匹配时CHB电平保持不变
stcAdtTIM5BCfg.enCmpc = AdtCHxCompareHigh; //计数值与比较值B匹配时,CHB电平翻转
stcAdtTIM5BCfg.enStaStp = AdtCHxStateSelSS; //CHB起始结束电平由STACB与STPCB控制
stcAdtTIM5BCfg.enStaOut = AdtCHxPortOutLow; //CHB起始电平为低
stcAdtTIM5BCfg.enStpOut = AdtCHxPortOutLow; //CHB结束电平为低
Adt_CHxXPortCfg(M0P_ADTIM5, AdtCHxB, &stcAdtTIM5BCfg); //端口CHB配置
Adt_StartCount(M0P_ADTIM5); //AdvTimer5运行
}
|