请教大家:
利用定时器中断控制PWM输出,预期输出为:当指示信号为1时先高电平再低电平输出,当指示信号为0时先低电平再高电平输出。我在定时器中断里无论是对PWM模式110/111进行配置或是对其输出极性高/低进行配置都达不到预期效果,无法按照指示信号改变PWM的输出;然而在中断函数里对于PWM进行占空比的配置,PWM的占空比却是可以被成功调节的,请问这是什么原因呢?
我该怎样编码才能够达到预期效果呐?
在做毕设,还请大家帮忙呀
我的中断服务函数代码如下:
void TIM2_IRQHandler(void)
{
extern int i;
extern int t;
extern int adsb[42];
if(TIM_GetITStatus(TIM2,TIM_IT_Update)==SET) //Òç³öÖжÏ
{
t=adsb[i];
if(t)
//TIM2->CCER|=(uint16_t)0x0200; //TIM_OCPolarity_Low
//TIM2->CCMR2|= (uint16_t)0x0060; //TIM_OCMode_PWM1
TIM2->CCR3 = 250; //Õ¼¿Õ±È
else
//TIM2->CCER|=(uint16_t)0x0000; //TIM_OCPolarity_High
//TIM2->CCMR2|= (uint16_t)0x0070; //TIM_OCMode_PWM2
TIM2->CCR3 = 20;
i++;
if(i==42) i=0;
}
TIM_ClearITPendingBit(TIM2,TIM_IT_Update);
}
一周热门 更多>