打印

按键中断调节PWM脉冲占空比以调节LED光亮

[复制链接]
1116|3
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
jinpaidianzi|  楼主 | 2015-1-31 21:36 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
小弟初学MSP430,接触到TA时,按着例子编写了一个可以利用《按键中断调节PWM脉冲占空比以调节LED光亮》的程序
在调试过程中,发现设定了初始占空比时有效,可以改变LED亮度,但是利用按键调节占空比的功能无法实现。
在单步执行过程中,发现中断输入时TACCR1发生变化,但是亮度却不变
想请教各位高手问题处在哪里。

相关帖子

沙发
jinpaidianzi|  楼主 | 2015-1-31 21:36 | 只看该作者
/*实验板MSP-EXP430G2
* 利用定时器编写PWM电路,驱动LED,并可以通过按键调节亮度
* MCLK=SMCLK=DCOCLK=32×ACLK=1.048576MHz,
*/
#include <msp430g2553.h>
void main(void)
{
P1DIR |= BIT6+BIT0;
P1DIR &=~BIT3;       //P1.3作为按键输入
P1SEL |= BIT6;       //P1.6作为PWM输出
P1IE |= BIT3;                         // P1.3 interrupt enabled
P1IES |= BIT3;                          // P1.3 Hi/lo edge
P1REN |= BIT3;                          // P1.3 pullup
P1OUT|=BIT0;       //P1.0作为一个指示灯输出
_EINT();
CCR0 = 9;// PWM 周期  =(CCRO+1)/1048576,频率=1.048576MHz/(CCRO+1))
CCTL1 = OUTMOD_7;// CCR1 reset/set
CCR1 = 1;// CCR1 PWM 占空比% = (CCR1+1)/(CCRO+1)
TACTL = TASSEL_2 + MC_1+TACLR;// MCLK, up mode,适用于高频率
  for (;;)
   {
  _BIS_SR(GIE);                 // 进入 LPM3
     _NOP();
   }
}
#pragma vector=PORT1_VECTOR
__interrupt void PORT1_ISR(void)
{
P1OUT ^= BIT0;    //每读一次中断,指示灯状态取反
TACCR1++;
if(TACCR1==CCR0)
  TACCR1=1;
    P1IFG &= ~BIT3;                       // P1.3 IFG cleared

使用特权

评论回复
板凳
blueblueblue| | 2015-2-15 11:33 | 只看该作者
我也刚开始学。。。同样功能的自己也编译过一次,要看看么

使用特权

评论回复
地板
blueblueblue| | 2015-2-15 11:35 | 只看该作者
纯手打

PWM_LED.zip

49.11 KB

使用特权

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

本版积分规则

115

主题

1489

帖子

1

粉丝