我想写一个延时函数,调用它的时候就延时一定的时间。看下我写的,我发现不管CCR1的值是多少,红灯闪烁的速度都一样啊,郁闷,不知道哪里出问题了。
设备用的是lunchpad,我知道实现闪烁LED不必这么写,我只是为了看看延时函数的效果。
另外,应该怎么写延时函数更好呢?
#include <msp430g2553.h>
void delay()
{
CCR1=1200;
CCTL1 = CCIE;
TACTL = TASSEL_1 + MC_2; // ACLK, Contmode
_BIS_SR(LPM0_bits + GIE);
}
void main(void)
{
WDTCTL = WDTPW + WDTHOLD; // Stop WDT
BCSCTL3 |= LFXT1S_2; // LFXT1 = VLO
IFG1 &= ~OFIFG; // Clear OSCFault flag
P1DIR |= 0x01; // P1.0 output
while(1)
{
P1OUT ^=BIT0 ;
delay();
}
}
// Timer_A3 Interrupt Vector (TA0IV) handler
#pragma vector=TIMER0_A1_VECTOR
__interrupt void Timer_A(void)
{
switch( TA0IV )
{
case 2: // CCR1
{
LPM0_EXIT;
CCTL1 &=~CCIE;
}
break;
case 4: break; // CCR2 not used
case 10: break; // overflow not used
}
}
此帖出自
小平头技术问答
一周热门 更多>