This thread has been locked.
If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.
这个430的中断是怎么进行的?
#include "msp430x14x.h"
void main( void )
{
WDTCTL = WDTPW + WDTHOLD;
P2DIR |=BIT0;
_EINT();
TACCTL0=CCIE;
CCR0=500;
TACTL=TASSEL_2 + MC_1;
LPM0;
}
#pragma vector=TIMERA0_VECTOR
__interrupt void TIMER_A(void)
{
P2OUT ^=BIT0;
CCR0+= 500;
}
这是一个通过TIMERA来让 LED闪烁的程序
现在有些不明白中断是怎么进行的
TACTL=TASSEL_2 + MC_1; 这个是TIMERA的UP模式 当计数器记到CCR0时引发中断进入中断服务程序
但是返回时 是到哪?是继续执行 TACTL=TASSEL_2 + MC_1;?
还有为什么我删去 LPM0;这句 程序就跑不通了?
按照这个程序,LPM0是让CPU进入低功耗,被中断唤醒时去执行中断,返回时仍回到休眠状态,除非用”__bic_SR_register_on_exit(CPUOFF);“来退出休眠,回到休眠前的下一个PC。
去掉LPM0跑不通是因为程序跑飞了,因为没了LPM0,程序PC会继续向下移,对于这个程序,就是进入非用户程序代码区域了,如果不休眠,可以用死循环让其不跑飞。