我需要死区是右边这种,死区时刻是都为高电平,之前用其他ST 新唐 东软都可以调出来,这个用华大的005就调不出来,希望大家帮我看下,谢谢了,我的程序下面
void App_full_bridge(uint16_t u16Period, uint16_t u16CHA_PWMDuty)
{
en_adt_compare_t enAdtCompare;
stc_adt_basecnt_cfg_t stcAdtBaseCntCfg;
stc_adt_CHxX_port_cfg_t stcAdtTIM4ACfg;
stc_adt_CHxX_port_cfg_t stcAdtTIM4BCfg;
DDL_ZERO_STRUCT(stcAdtBaseCntCfg);
DDL_ZERO_STRUCT(stcAdtTIM4ACfg);
DDL_ZERO_STRUCT(stcAdtTIM4BCfg);
stcAdtBaseCntCfg.enCntMode = AdtTriangleModeA; //三角波A
stcAdtBaseCntCfg.enCntClkDiv = AdtClkPClk0Div16; //分频/16
Adt_Init(M0P_ADTIM4, &stcAdtBaseCntCfg); //ADT载波、计数模式、时钟配置
Adt_SetPeriod(M0P_ADTIM4, u16Period); //周期值
enAdtCompare = AdtCompareA; //通用比较基准A
Adt_SetCompareValue(M0P_ADTIM4, enAdtCompare, u16CHA_PWMDuty); //通用比较基准值寄存器A设置
enAdtCompare = AdtCompareB;
Adt_SetCompareValue(M0P_ADTIM4, enAdtCompare, 0); //通用比较基准值寄存器B设置
enAdtCompare = AdtCompareC;
Adt_SetCompareValue(M0P_ADTIM4, enAdtCompare, u16CHA_PWMDuty); //通用比较基准值寄存器C设置
Adt_EnableValueBuf(M0P_ADTIM4, AdtCHxA, TRUE); //缓存传送A使能 GCMCR--->GCMAR,三角波A模式在下溢点传送
stcAdtTIM4ACfg.enCap = AdtCHxCompareOutput; //比较输出模式
stcAdtTIM4ACfg.bOutEn = TRUE; //CHA输出使能
stcAdtTIM4ACfg.enPerc = AdtCHxPeriodKeep; //计数值与周期匹配时CHA电平保持不变
stcAdtTIM4ACfg.enCmpc = AdtCHxCompareInv; //计数值与比较值A匹配时,CHA电平翻转
stcAdtTIM4ACfg.enStaStp = AdtCHxStateSelSS; //CHA起始结束电平由STACA与STPCA控制
stcAdtTIM4ACfg.enStaOut = AdtCHxPortOutLow; //CHA起始电平为低
stcAdtTIM4ACfg.enStpOut = AdtCHxPortOutLow; //CHA结束电平为低
Adt_CHxXPortCfg(M0P_ADTIM4, AdtCHxA, &stcAdtTIM4ACfg); //端口CHA配置
stcAdtTIM4BCfg.enCap = AdtCHxCompareOutput;
stcAdtTIM4BCfg.bOutEn = TRUE;
stcAdtTIM4BCfg.enPerc = AdtCHxPeriodKeep;
stcAdtTIM4BCfg.enCmpc = AdtCHxCompareInv;
stcAdtTIM4BCfg.enStaStp = AdtCHxStateSelSS;
stcAdtTIM4BCfg.enStaOut = AdtCHxPortOutHigh; //CHB起始电平为高(为了上下桥互补)
stcAdtTIM4BCfg.enStpOut = AdtCHxPortOutLow; //CHB结束电平为低
Adt_CHxXPortCfg(M0P_ADTIM4, AdtCHxB, &stcAdtTIM4BCfg); //端口CHB配置
Adt_SetDTUA(M0P_ADTIM4, 6); //CNT向上计数时的死区时间,GCMBR = GCMAR - DTUAR
Adt_SetDTDA(M0P_ADTIM4, 6); //CNT向下计数时的死区时间,GCMBR = GCMAR - DTDAR
Adt_CfgDT(M0P_ADTIM4, TRUE, TRUE); //中断使能,并且DTUAR和DTDAR自动相等
Adt_StartCount(M0P_ADTIM4); //AdvTimer4运行
}
|