|
有两个问题,一个如图,出来的是这种波,我想要的是方波,第二个是不管我用哪个引脚作为输出,P4.2出来的都是方波,占空比也是可调的
#include "msp430x54x.h"
//************************************************************
void main()
{
WDTCTL = WDTPW + WDTHOLD; //关看门狗
P4SEL |= BIT3; // P4.3作为PWM输出
P4DIR |= BIT3;
P4SEL |= BIT5; // P4.5作为PWM输出
P4DIR |= BIT5;
P2DIR |= BIT0 + BIT1 + BIT2 + BIT3; //P2.0~3 按键所在IO设置为输出
P2OUT |= BIT0 + BIT1 + BIT2 + BIT3;
P2DIR &=~( BIT0+BIT1+BIT2+BIT3); //P2.0 P2.1 P2.2 P2.3设置为输入
P2IES |= BIT0+BIT1+BIT2+BIT3; //P2.0 P2.1 P2.2 P2.3下降触发
P2IE |= BIT0+BIT1+BIT2+BIT3; //P2.0 P2.1 P2.2 P2.3中断使能
P2REN |= BIT0 + BIT1 + BIT2 + BIT3; //上拉下拉电阻使能
P2OUT |= BIT0 + BIT1 + BIT2 + BIT3;
P2IFG =0; //中断标志清除,防止配置过程中出现中断标志为1
TBCTL = TBSSEL_2 + TBCLR ; // SMCLK, upmode
TBCTL |= MC_1;
TBCCR0 = 512;
_EINT(); //开总中断
LPM4; //进低功耗4
}
#pragma vector = PORT2_VECTOR
__interrupt void PORT2(void)
{
if((P2IFG&BIT0) == BIT0)
{
P2IFG&=~BIT0;
TBCCTL3 = OUTMOD_7;
TBCCR3 = 128;
TBCCTL5 = OUTMOD_7;
TBCCR5 = 128;
}
else if((P2IFG&BIT1) ==BIT1)
{
P2IFG&=~BIT1;
TBCCTL3 = OUTMOD_7;
TBCCR3 = 256;
TBCCTL5 = OUTMOD_7;
TBCCR5 = 256;
}
else if((P2IFG&BIT2) ==BIT2)
{
P2IFG&=~BIT2;
TBCCTL3 = OUTMOD_7;
TBCCR3 = 384;
TBCCTL5 = OUTMOD_7;
TBCCR5 = 384;
}
else if((P2IFG&BIT3) ==BIT3)
{
P2IFG&=~BIT3;
TBCCTL3 = OUTMOD_7;
TBCCR3 = 512;
TBCCTL5 = OUTMOD_7;
TBCCR5 = 512;
}
}
|
|