[应用相关] 定时器B的pwm例程

[复制链接]
610|12
 楼主| pengf 发表于 2020-8-14 21:28 | 显示全部楼层 |阅读模式
求一个定时器B的pwm例程
wenfen 发表于 2020-8-14 21:31 | 显示全部楼层
5529舵机的PWM信号控制的程序吗?
chenho 发表于 2020-8-14 21:35 | 显示全部楼层
设定一个变量来选择初始占空比,然后通过Timer_B定时1s,每隔一秒
chuxh 发表于 2020-8-14 21:42 | 显示全部楼层
TB可以输出6路完整的PWM波形。
dingy 发表于 2020-8-14 21:46 | 显示全部楼层

void main(void)
{
  
  WDTCTL = WDTPW + WDTHOLD; // Stop WDT
  
   P1DIR |= 0x0C; // P1.2 and P1.3 output
   P1SEL |= 0x0C; // P1.2 and P1.3 TA1/2 options

   Init_TIMER_B();
   
   TACTL = TASSEL_2 + TACLR; // SMCLK, up mode
   
   CCR0 = 512-1; // PWM Period
   CCTL1 = OUTMOD_7 ; // CCR1 reset/set
   CCTL2 = OUTMOD_7 ; //CCR2 reset/set
   if(v==5)
   {
     CCR1 = 128; // CCR1 PWM duty cycle
     CCR2 = 384; // CCR2 PWM duty cycle
   }
   else if (v==12)
   {
     CCR1 = 384; // CCR1 PWM duty cycle
     CCR2 = 128; // CCR2 PWM duty cycle
   }
   else
   {
     CCR1 = 128; // CCR1 PWM duty cycle
     CCR2 = 384; // CCR2 PWM duty cycle
   }
   
   TACTL |= MC_1;      // Start Timer_A in up mode
   TBCTL |= MC_1;      // Start Timer_B in up mode
  
   _EINT();         //开全局中断
   _BIS_SR(LPM0_bits); // Enter LPM0
   
}




void  Init_TIMER_B()
{
    TBCTL |= TBSSEL0 +TBCLR; //ACLK
    TBCCTL0 = CCIE;
    TBCCR0 =32768;  //定时1s  
}
wenfen 发表于 2020-8-14 21:51 | 显示全部楼层
定时器是单片机常用的其本设备,用来产生精确计时或是其他功能
pangb 发表于 2020-8-14 21:54 | 显示全部楼层
详细参考示例工程和main.c。
xxrs 发表于 2020-8-14 22:03 | 显示全部楼层
TB可以输出6路完整的PWM波形
zhuhuis 发表于 2020-8-14 22:07 | 显示全部楼层
6路PWM很强啊,我输出一路的
dingy 发表于 2020-8-14 22:11 | 显示全部楼层
获取上下沿的持续时间
morrisk 发表于 2020-8-14 22:15 | 显示全部楼层
6路PWM相互之间能同时输出吗
llia 发表于 2020-8-14 22:21 | 显示全部楼层
涨知识了 谢啦
 楼主| pengf 发表于 2020-8-14 22:25 | 显示全部楼层

明白了,多谢大家讨论这么多哈
您需要登录后才可以回帖 登录 | 注册

本版积分规则

718

主题

10129

帖子

3

粉丝
快速回复 在线客服 返回列表 返回顶部