打印
[应用相关]

定时器B的pwm例程

[复制链接]
382|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波形。

使用特权

评论回复
5
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  
}

使用特权

评论回复
6
wenfen| | 2020-8-14 21:51 | 只看该作者
定时器是单片机常用的其本设备,用来产生精确计时或是其他功能

使用特权

评论回复
7
pangb| | 2020-8-14 21:54 | 只看该作者
详细参考示例工程和main.c。

使用特权

评论回复
8
xxrs| | 2020-8-14 22:03 | 只看该作者
TB可以输出6路完整的PWM波形

使用特权

评论回复
9
zhuhuis| | 2020-8-14 22:07 | 只看该作者
6路PWM很强啊,我输出一路的

使用特权

评论回复
10
dingy| | 2020-8-14 22:11 | 只看该作者
获取上下沿的持续时间

使用特权

评论回复
11
morrisk| | 2020-8-14 22:15 | 只看该作者
6路PWM相互之间能同时输出吗

使用特权

评论回复
12
llia| | 2020-8-14 22:21 | 只看该作者
涨知识了 谢啦

使用特权

评论回复
13
pengf|  楼主 | 2020-8-14 22:25 | 只看该作者

明白了,多谢大家讨论这么多哈

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

718

主题

10129

帖子

3

粉丝