您好!
我制作了一个使用 DCO 的项目、以及一个使用 LPM3的计时器中断、该项目工作正常。 现在、我尝试使用 VLOCLK 执行相同的操作、但我无法使其正常工作。 之所以使用 VLOCLK、是因为我在唤醒时不需要大量的功耗计算、器件通常处于 LPM4模式、并具有按钮中断(不在代码中)、它仅在 CR2032上运行、并且应该尽可能长。 中断未触发。 我测试了时钟、它具有大约10kHz 的频率、这对于 VLOCLK 来说似乎是正确的(尽管指定的范围为4至20KHz 似乎是不可思议的)。
#include
void sleep_ms()
{
TACTL =(TASSEL1 | TACLR | TAIE);
CCTL0 = CCIE;
CCR0 = 0;
TACCR0 = 3;
TACTL |= MC_1;
_bis_SR_register (LPM3_bits | GIE);
}
int main (void)
{
WDTCTL = WDTPW | WDTHOLD;
P1OUT = 0x00;
P1DIR = 0xFF;
P2OUT = 0x00;
P2DIR = 0xFF;
P3OUT = 0x00;
P3DIR = 0xFF;
//P1SEL = BIT0 //测试频率
BCSCTL3 |= LFXT1S_2;
//_Bis_SR_register (SCG1 | SCG0);
_NOP();
_NOP();
_NOP();
BCSCTL2 |= SELM_3 + DIVM_3;
IFG1 &=~OFIFG;
_enable_interrupt ();
while (1)
{
P1OUT |= 0x02;
sleep_ms();
P1OUT &=~0x02;
sleep_ms();
}
}
#pragma vector=TIMER0_A0_VECTOR
__INTERRUPT void Timer_A (void)
{
LPM3_EXIT;
TACTL = 0;
CCTL0 = 0;
}
那么、我缺少什么呢? 我再也看不到发生了什么。
感谢您的任何提示。