[资料分享] MSP430G2253 产生占空比可调的PWM

fish001   2018-11-7 20:19 楼主
配置完成这些自然就能产生相应的PWM了  但是我们如何改变占空比呢  其实比较简单  只需要我们按键改变一下CCR1或者CCR2里面的值皆就可以了
下面附上一段代码 仅供参考  按键接P1.3和P1.4  P1.2产生PWM  在示波器上可以明显看到用按键控制波形的变化
代码如下:

#include
long int flag=10;//决定PWM占空比的变量
/****************************************************************************
函数名称 :delay
函数功能:延时   延时的长短由tmp的数值决定
函数参数:无
函数返回值:无
*****************************************************************************/
void delay(void)
{
    unsigned int tmp;
    for(tmp = 120;tmp > 0;tmp--);
}

/*****************************************************************************
函数名称 :Key
函数功能 :检测按键  用来改变flag的值 进而改变PWM的占空比  目前PWM的精确度为1%
函数参数:无
函数返回值:无
*****************************************************************************/
void Key()
{
  P1DIR&=~(BIT3+BIT3);//设置IO为输入模式
  P1REN|=BIT3+BIT4;//启用上拉/下拉模式
  P1OUT|=BIT3+BIT4;//设置为上拉模式               
  {         
    if((P1IN&BIT3)==0)//按键按下
    {
      delay();                  //延时用来消除按键的抖动
      while(!(P1IN&BIT3));      //等待按键松手
      flag+=1;                  //flag+1   用来改变占空比
      if(flag>100)              //占空比到100  清零
        flag=0;
    }
    if((P1IN&BIT4)==0)//同上注释
    {
      delay();
      while(!(P1IN&BIT4));
      flag-=1;
      if(flag>100)
        flag=0;
    }
  }
}

/**************************************************************************
函数名称: PWM_Init
函数功能:初始化PWM
函数参数:无
函数返回值:无
***************************************************************************/
void  PWM_Init()
{
  P1DIR |= BIT2;                            // 设置P1.2为输出
  P1SEL |= BIT2;                            // 选择P1.2的PWM功能
  P1SEL2 = 0;                                    //选择默认引脚功能
  CCR0 = 100;                              // 设定PWM  周期  
  CCTL1 = OUTMOD_7;                        
  TACTL = TASSEL_2 + MC_1;                  // SMCLK时钟  增计数模式
}

int main(void)
{
  WDTCTL = WDTPW + WDTHOLD;                 // 关闭看门狗
  PWM_Init();
  for (;;)
  {
    Key();
    CCR1 = flag;
  }
}



回复评论

暂无评论,赶紧抢沙发吧
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 京公网安备 11010802033920号
    写回复