工具与软件:
您好!
我将从 Tb0.4生成 PWM 脉冲。
param.clockSource = TIMER_B_CLOCKSOURCE_SMCLK;
param.clockSourceDivider = TIMER_B_CLOCKSOURCE_DIVIDER_4;
param.timerPeriod = timePeriod-1;
param.timerInterruptEnable_TBIE = TIMER_B_CCIE_CCR0_INTERRUPT_DISABLE;
param.captureCompareInterruptEnable_CCR0_CCIE =
TIMER_B_CCIE_CCR0_INTERRUPT_DISABLE;
param.timerClear = TIMER_B_DO_CLEAR;
param.startTimer = false;
Timer_B_initUpMode(TIMER_B0_BASE, ¶m);
//Initialize compare mode to generate PWM1
param1.compareRegister = TIMER_B_CAPTURECOMPARE_REGISTER_4;
param1.compareInterruptEnable = TIMER_B_CCIE_CCR0_INTERRUPT_DISABLE;
param1.compareOutputMode = TIMER_B_OUTPUTMODE_SET_RESET;
param1.compareValue = timePeriod*0;
Timer_B_initCompareMode(TIMER_B0_BASE, ¶m1);
执行一次 100us、 我必须将占空比0%更改为100%(比较值)。 使用 TimerA0生成100us 循环。
#pragma vector = TIMER0_A0_VECTOR
__interrupt void Timer0_A0_ISR (void){
#if 1
if(flag==1)
{
if(dCuS<50)
{
Dutycycle=(timePeriod*dcArray1[dCuS]);
if(Dutycycle!=0)
{
Timer_B_setCompareValue(TB0_BASE,TIMER_B_CAPTURECOMPARE_REGISTER_4,(uint16_t)Dutycycle);
dCuS+=1;
}
else
{
Timer_B_setCompareValue(TB0_BASE,TIMER_B_CAPTURECOMPARE_REGISTER_4,0);
dCuS+=1;
}
}
else
{
Timer_B_setCompareValue(TB0_BASE,TIMER_B_CAPTURECOMPARE_REGISTER_4,timePeriod*0.50);
dCuS=1;
}
count+=1;
}
#endif
Timer_A_clearTimerInterrupt(TIMER_A0_BASE);
}
当在示波器中观察到每个波形时、我观察到 PWM 生成中出现一个骤降/尖峰、这正在影响我的整体波形。

如何纠正此问题?
此致、
Sarwath