标题: 基于msp430f5529的PWM波控制程序 [打印本页]

作者: gysworld    时间: 2020-12-28 17:44
标题: 基于msp430f5529的PWM波控制程序
  1. ///*
  2. // *
  3. // * 按钮调节PWM占空比
  4. // *
  5. // /*


  6. #include <msp430f5529.h>

  7. int pwm = 32;                                  //给pwm附一个初始值
  8. volatile unsigned int flag =0;                 //优化赋值初始值flag=0
  9. void Keyscan();                                //键盘扫描
  10. int main(void)
  11. {
  12.         WDTCTL = WDTPW + WDTHOLD;              // 关闭看门狗
  13.         P1DIR |= BIT2;                         //设置1.2输出波
  14.         P1SEL |= BIT2;

  15.         P4DIR |= BIT7;                         //灯LED2
  16.         P4OUT &=~BIT7;

  17.         P2OUT |= BIT1;                         //按钮S1
  18.         P2REN |= BIT1;

  19.         TA0CCR0 = 64;                       //PWM周期定义

  20.         TA0CTL = TASSEL_1 + MC_1 + TACLR;      //参考时钟选择ACLK,增计数模式,清除TAR计数器

  21.         while(1)
  22.         {
  23.             Keyscan();

  24.             if(flag!=0)                        //当flag不等于0时
  25.             {
  26.                 P4OUT |= BIT7;                 //4.7LED灯亮,高电平
  27.             }
  28.             else
  29.             {
  30.                 P4OUT &=~ BIT7;
  31.             }
  32.             TA0CCTL1 = OUTMOD_7;               //CCR1比较输出模式7:复位,定位。
  33.             TA0CCR1 =pwm;                      //pwm占空比的定义,随pwm的变化,占空比不同
  34.         }
  35. }
  36. void Keyscan()
  37. {
  38.     if((P2IN&BIT1) ==0)
  39.     {
  40.         __delay_cycles(10000);
  41.         if((P2IN& BIT1)==0)
  42.         {
  43.             while((P2IN& BIT1)==0)
  44.             {
  45.                 flag = ~flag;                  //取反
  46.             }
  47.             pwm = pwm-2;                 //先接示波器上看,占空比上升沿所占时间,启动的时候要低于1ms,然后按按钮,让占空比上升沿时间在1~2ms内
  48.                                                //超过2ms,不转,低于1ms也停转。
  49.         }
  50.     }
  51. }
复制代码







欢迎光临 (http://www.51hei.com/bbs/) Powered by Discuz! X3.1