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

📄 ta.c

📁 MSP340例程 适合入门 欢迎大家下载共享
💻 C
字号:
/****************************************************************************
*  文件名称:
*          TA.c
*  文件说明:
*          使用TA输出PWM波形,可通过set_TA设定不同的模式
*****************************************************************************/
#include  "msp430x44x.h"
/******************************************************************************
* 设置TimerA输出PWM的工作模式
********************************************************************************/
void set_TA(int mode)
{
     if (mode==2)
     {                          // 翻转/复位模式,CCR1=25%,CCR2=75%
         CCR0  = 511;           // PWM 周期 
         CCTL1 = OUTMOD_2;      // PWM toggle/reset  
         CCR1  = 384;           // ccr1 Pwm cycle
         CCTL2 = OUTMOD_2;      // PWM toggle/reset
         CCR2  = 128;           // ccr2 Pwm cycle
         P1DIR |= 0x04;         // p1.2 模式设置
         P1SEL |= 0x04;         // p1.2 option select
         P2DIR |= 0x01;         // P2.0 output mode
         P2SEL |= 0x01;         // P2.0 option select
         TACTL |= MC0;          // 设置递增模式
      }else if (mode==0x03)
      {                         //置位/复位模式,CCR1=25%,CCR2=75%
          
         CCR0  = 511;           // PWM 周期 
         CCTL1 = OUTMOD_3;      // PWM toggle/reset          
         CCR1  = 384;           // ccr1 Pwm cycle
         CCTL2 = OUTMOD_3;      // PWM toggle/reset
         CCR2  = 128;           // ccr2 Pwm cycle
         P1DIR |= 0x04;         // p1.2 output mode
         P1SEL |= 0x04;         // p1.2 option select
         P2DIR |= 0x01;         // P2.0 output mode
         P2SEL |= 0x01;         // P2.0 option select
         TACTL |= MC0;          // 设置递增模式          
      }else if (mode==0x04)
      {                         // 翻转模式,CCR1=50%,CCR2=50%
         CCR0  = 511;           // PWM 周期      
         CCTL1 = OUTMOD_4;      // PWM toggle/reset  
         CCR1  = 384;           // ccr1 Pwm cycle
         CCTL2 = OUTMOD_4;      // PWM toggle/reset
         CCR2  = 128;           // ccr2 Pwm cycle
         P1DIR |= 0x04;         // p1.2 output mode
         P1SEL |= 0x04;         // p1.2 option select
         P2DIR |= 0x01;         // P2.0 output mode
         P2SEL |= 0x01;         // P2.0 option select
         TACTL |= MC0;          // 设置递增模式
      }else if (mode==0x06)
      {                         //翻转/置位模式,CCR1=75%,CCR2=25%
        
         CCR0  = 511;           // PWM 周期 
         CCTL1 = OUTMOD_6;      // PWM toggle/reset          
         CCR1  = 384;           // ccr1 Pwm cycle
         CCTL2 = OUTMOD_6;      // PWM toggle/reset
         CCR2  = 128;           // ccr2 Pwm cycle
         P1DIR |= 0x04;         // p1.2 output mode
         P1SEL |= 0x04;         // p1.2 option select
         P2DIR |= 0x01;         // P2.0 output mode
         P2SEL |= 0x01;         // P2.0 option select
        TACTL |= MC0;           // 设置递增模式
      }else if (mode==0x07)
      {                         // 复位/置位模式 
         
         CCR0  = 511;           // P1.2--> CCR1 - 75% PWM
                                // P2.0--> CCR2 - 25% PWM
                                // PWM 周期 
         CCTL1 = OUTMOD_7;      // ccrl reset/set   
         CCR1  = 384;           // ccr1 Pwm cycle
         CCTL2 = OUTMOD_7;      // ccr1 reset/set
         CCR2  = 128;           // ccr2 Pwm cycle
         P1DIR |= 0x04;         // p1.2 output mode
         P1SEL |= 0x04;         // p1.2 option select
         P2DIR |= 0x01;         // P2.0 output mode
         P2SEL |= 0x01;         // P2.0 option select
         TACTL |= MC0;          // 设置递增模式
      }
}
/******  在Timer A的不同工作模式下输出PWM波形  *****/
void main()
{
     unsigned int pwm_Delay;
     char tmpv,tmp[5] = {2,3,4,6,7};
     
     WDTCTL = WDTHOLD + WDTPW;  //关闭看门狗
     tmpv=0;
     while(1)
     {
        set_TA(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 + -