参考网上例程总结出初始化函数
#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;
}
『本文转载自网络,版权归原作者所有,如有侵权请联系删除』