if(TIM_GetITStatus(TIM3,TIM_IT_CC1)!=RESET) { TIM_ClearITPendingBit(TIM3,TIM_IT_CC1); Cnt[0]=(~Cnt[0])&0x01; if(Cnt[0]==0x01) R[0]+=Rl[0]; else R[0]+= Rh[0]; if(R[0]>65535) R[0]=R[0]-65535; CCR1=R[0]; TIM_SetCompare1(TIM3,CCR1); }
Cnt[0]=(~Cnt[0])&0x01; 根据这条语句就能判断PWM输出的是高电平还是低电平? Cnt这个数组不是初始化之后一直清零,没有变动过吗?
若 Cnt[0] 结果为1,为什么执行加低电平的步进值R[0]+=Rl[0]; ? 否则 Cnt[0] 为0,则执行加高电平的步进值R[0] += Rh[0]; ?
unsigned char Cnt[4]; //一个数组,这个数组的每个元素对应一个通道,用来判断装PWM得高电平还是低电平数 这个地方实在不明白,请赐教。 |