2015-01-12 81 views
0

我正在开发一个项目,我希望将pwm占空比从0增加到50%。我的周期是16000计数或1ms(16MHz默认计时器计数)。出于某种原因,不是每个周期更新工作周期,而是更新速度慢得多。我想知道是不是因为我正在计算定时器中断内的新占空比?下面是我使用的是什么:STM32F4 PWM斜坡

void TIM4_IRQHandler() 
{ 
if (TIM_GetITStatus(TIM4, TIM_IT_Update) != RESET) 
{ 
    TIM_ClearITPendingBit(TIM4, TIM_IT_Update); 

    if (loop <= 8000) { 
     TIM4 -> CCR1 = CCR_i; 
     uint16_t y = CCR_i; 
     CCR_i = y + 1; 
     int x = loop; 
     loop = x + 1; 
    } 
    if (loop == 8001) { 
     TIM4 -> CCR1 = 0; 
     uint16_t x = CCR_i; 
     CCR_i = x + 1; 
     int c = loop; 
     loop = c + 1; 
    } 

    if (loop > 8001) { 

     int t; 
     for(t = 0; t < 10; t++){ 
      // wait 
     } 

     GPIO_SetBits(GPIOG, GPIO_Pin_8); 
     //Stop2(); 
     TIM_ITConfig(TIM4, TIM_IT_Update, DISABLE); 
     NVIC_DisableIRQ(TIM4_IRQn); 
     } 
    } 
} 

回答

0

爆炸,它看起来像我是傻 - 定时器做什么,我希望它 - 它只是需要8秒的时间1ms的斜坡,以脉宽500us,每周增加62.5ns。