我的程序大概如下
void main()
{
.... //初始化
.....
}
在我的主函数里我调用一个函数,这个函数产生变量m=1
现在我想进入中断定时
#pragma vector = TIMERA0_VECTOR
__interrupt void Timer_A0(void)
{
TIMER_Count++;
//_BIS_SR(GIE); //开中断
//50ms定时
if(m=1)
{
if(TIMER_Count >50 )
{
TIMER_Count =0;
}
}
} 不知道中断能不能这样写的,要是可以的话,为何我的中断进不去
定时中断是否工作只和中断配置或者说初始化有关系, 和什么m=1以及main函数没有直接关系。
void TIMER_Init() //定时器初始化
{
TACTL = (TASSEL_2 + TACLR); //SMCLK,clear TAR,SMCLK = MCLK
TACCTL0 = CCIE; //CCR0中断允许
TACCR0 = (INT16U)((FP32)TIMER_TIME * CPU_Frequency / 1000); //定时时间
//TBCTL &= ~(MC0 + MC1); //定时器关闭
TACTL |= MC0; //增计数模式
}
void main()
{
.... //定时器初始化
}
#pragma vector = TIMERA0_VECTOR
__interrupt void Timer_A0(void)
{
TIMER_Count++;
_BIS_SR(GIE); //开中断
//50ms定时
if(TIMER_Count >50 )
{
TIMER_Count =0;
//进行一些数据处理
}
} 我定时器定时1ms,所以应该在计数到50次时应该进行数据处理的,可是我的中断进不去的
_BIS_SR(GIE); //开中断
这是什么意思? 使能全局中断?
在使能全局中断之前,定时中断也是不能工作的。应该在初始化定时中断之后就使能全局中断。 供你参考。
void main()
{
.... //定时器初始化
_EINT(); //打开全局中断控制
}
我在主程序中加了上面中断控制,也进不去呀
还有就是中断号和配置是否匹配,初始化是不是正确,也就这些东西了。 Good luck!
中断没有问题,我把主频搞错了,应该用DCO的,我用了XT2,忘了改了。谢谢