//TIM12中断服务函数
int j=0;
void TIM8_BRK_TIM12_IRQHandler(void)
{
int t;
extern int8_t ADSB[117];
if(TIM_GetITStatus(TIM12,TIM_IT_Update)==SET) //溢出中断
{
if(j==117)
{
TIM_Cmd(TIM12, DISABLE);
TIM_ForcedOC1Config(TIM12, TIM_ForcedAction_Active);
j=0;
DS4=!DS4;
delay_ms(200);
TIM12_PWM_Init(84-1,1-1);// PWM~1MHz
TIM_SetCompare1(TIM12,42);
}
else
{
t=ADSB[j];
if(t==0)
{
TIM12->CCER|=(uint16_t)0x0002; //TIM_OCPolarity_Low
TIM12->ARR =84;
}
else if(t==1)
{
TIM12->CCER &=~(uint16_t)0x0002; //TIM_OCPolarity_High
TIM12->ARR =84;
}
else if(t==2)
{
TIM12->CCER &=~(uint16_t)0x0002; //TIM_OCPolarity_High
TIM12->ARR =210;
}
else if(t==3)
{
TIM12->CCER &=~(uint16_t)0x0002; //TIM_OCPolarity_High
TIM12->ARR =294;
}
}
j++;
}
TIM_ClearITPendingBit(TIM12,TIM_IT_Update); //清除中断标志位
}
|