STM8S TIM2 输出PWM初始化函数

来源:互联网 发布:移动硬盘与mac连接 编辑:程序博客网 时间:2024/05/22 12:36
参考网上例程总结出初始化函数

#define TIM2_CLK 16000000 
void  timer2_Init(char channal, ulong hz,int pwm)
{


    TIM2_ARRH = (TIM2_CLK/hz)/256;
    TIM2_ARRL = (TIM2_CLK/hz)%256;
    switch (channal)
    {
    case 1:{
         TIM2_CCMR1 |= 0x70;
         TIM2_CCER1 |= 0x03;      //通道1使能,低电平有效,配置为输出
         TIM2_CCR1H = (((TIM2_CLK/hz)*pwm)/1000)/256;
         TIM2_CCR1L = (((TIM2_CLK/hz)*pwm)/1000)%256;
         break;
      }
    case 2:{
         TIM2_CCMR2 |= 0x70;
         TIM2_CCER1 |= 0x30;      //通道2
         TIM2_CCR2H = (((TIM2_CLK/hz)*pwm)/1000)/256;
         TIM2_CCR2L = (((TIM2_CLK/hz)*pwm)/1000)%256;
         break;
      }
    case 3:{
         TIM2_CCMR3 |= 0x70;       //01110000
         TIM2_CCER2 |= 0x03;     //通道3
         TIM2_CCR3H = (((TIM2_CLK/hz)*pwm)/1000)/256;
         TIM2_CCR3L = (((TIM2_CLK/hz)*pwm)/1000)%256;
         break;
      }
    }
    //TIM2_CCMR3 |= 0X04;     //输出比较3预装载使能
    TIM2_PSCR = 0;
    TIM2_CR1 = TIM2_CR1 | 0x01;
}

原创粉丝点击