⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 ta.c

📁 MSP430-EX44X实验内容
💻 C
字号:
/****************************************************************************
*  文件名称:
*          TB.c
*  文件说明:
*          使用TB输出PWM波形,可通过set_TB设定不同的模式
*****************************************************************************/
#include  "msp430x44x.h"
/******************************************************************************
* 设置TimerB输出PWM的工作模式
********************************************************************************/
void set_TB(int mode)
{
     if (mode==2)
     {                          // 翻转/复位模式,CCR1=25%,CCR2=75%
         TBCCR0  = 11;           // PWM 周期
         TBCCTL1 = OUTMOD_2;      // PWM toggle/reset
         TBCCR1  = 9;           // ccr1 Pwm cycle
         TBCCTL2 = OUTMOD_2;      // PWM toggle/reset
         TBCCR2  = 3;           // ccr2 Pwm cycle
         P2DIR |= 0x02;         // p2.1 模式设置
         P2SEL |= 0x02;         // p2.1 option select
         P2DIR |= 0x08;         // P2.3 output mode
         P2SEL |= 0x08;         // P2.3 option select
         TBCTL |= MC0;          // 设置递增模式
      }else if (mode==0x03)
      {                         //置位/复位模式,CCR1=25%,CCR2=75%

         TBCCR0  = 11;           // PWM 周期
         TBCCTL1 = OUTMOD_3;      // PWM toggle/reset
         TBCCR1  = 9;           // ccr1 Pwm cycle
         TBCCTL2 = OUTMOD_3;      // PWM toggle/reset
         TBCCR2  = 3;           // ccr2 Pwm cycle
         P2DIR |= 0x02;         // p2.1 output mode
         P2SEL |= 0x02;         // p2.1 option select
         P2DIR |= 0x08;         // P2.3 output mode
         P2SEL |= 0x08;         // P2.3 option select
         TBCTL |= MC0;          // 设置递增模式
      }else if (mode==0x04)
      {                         // 翻转模式,CCR1=50%,CCR2=50%
         TBCCR0  = 11;           // PWM 周期
         TBCCTL1 = OUTMOD_4;      // PWM toggle/reset
         TBCCR1  = 9;           // ccr1 Pwm cycle
         TBCCTL2 = OUTMOD_4;      // PWM toggle/reset
         TBCCR2  = 3;           // ccr2 Pwm cycle
         P2DIR |= 0x02;         // p2.1 output mode
         P2SEL |= 0x02;         // p2.1 option select
         P2DIR |= 0x08;         // P2.3 output mode
         P2SEL |= 0x08;         // P2.3 option select
         TBCTL |= MC0;          // 设置递增模式
      }else if (mode==0x06)
      {                         //翻转/置位模式,CCR1=75%,CCR2=25%

         TBCCR0  = 11;           // PWM 周期
         TBCCTL1 = OUTMOD_6;      // PWM toggle/reset
         TBCCR1  = 9;           // ccr1 Pwm cycle
         TBCCTL2 = OUTMOD_6;      // PWM toggle/reset
         TBCCR2  = 3;           // ccr2 Pwm cycle
         P2DIR |= 0x02;         // p2.1 output mode
         P2SEL |= 0x02;         // p2.1 option select
         P2DIR |= 0x08;         // P2.3 output mode
         P2SEL |= 0x08;         // P2.3 option select
        TBCTL |= MC0;           // 设置递增模式
      }else if (mode==0x07)
      {                         // 复位/置位模式

         TBCCR0  = 11;           // P1.2--> CCR1 - 75% PWM
                                // P2.0--> CCR2 - 25% PWM
                                // PWM 周期
         TBCCTL1 = OUTMOD_7;      // ccrl reset/set
         TBCCR1  = 9;           // ccr1 Pwm cycle
         TBCCTL2 = OUTMOD_7;      // ccr1 reset/set
         TBCCR2  = 3;           // ccr2 Pwm cycle
         P2DIR |= 0x02;         // p2.1 output mode
         P2SEL |= 0x02;         // p2.1 option select
         P2DIR |= 0x08;         // P2.3 output mode
         P2SEL |= 0x08;         // P2.3 option select
         TBCTL |= MC0;          // 设置递增模式
      }
}
/******  在Timer B的不同工作模式下输出PWM波形  *****/
void main()
{
     unsigned int pwm_Delay;
     char tmpv,tmp[5] = {2,3,4,6,7};

     WDTCTL = WDTHOLD + WDTPW;  //关闭看门狗
     FLL_CTL0 |= XCAP14PF;
     TBCTL = TBSSEL0 + TBCLR;  //ACLK,清除TAR
     tmpv=0;
     while(1)
     {
        set_TB(tmp[tmpv]);      //选择 PWM 模式
        tmpv = (tmpv + 1) % 5;  //改变模式
        for(pwm_Delay=0;pwm_Delay<0xffff;pwm_Delay++);//delay
     };
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -