msp430 定时中断问题

anne82820 2008-10-15 10:01:51
我的程序大概如下
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;
}

}
} 不知道中断能不能这样写的,要是可以的话,为何我的中断进不去
...全文
642 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
zyzhang365 2008-10-15
  • 打赏
  • 举报
回复
还有就是中断号和配置是否匹配,初始化是不是正确,也就这些东西了。 Good luck!
anne82820 2008-10-15
  • 打赏
  • 举报
回复
void main()
{
.... //定时器初始化
_EINT(); //打开全局中断控制
}

我在主程序中加了上面中断控制,也进不去呀
zyzhang365 2008-10-15
  • 打赏
  • 举报
回复
在使能全局中断之前,定时中断也是不能工作的。应该在初始化定时中断之后就使能全局中断。 供你参考。
anne82820 2008-10-15
  • 打赏
  • 举报
回复
是。打开全局中断控制
zyzhang365 2008-10-15
  • 打赏
  • 举报
回复
_BIS_SR(GIE); //开中断

这是什么意思? 使能全局中断?
anne82820 2008-10-15
  • 打赏
  • 举报
回复
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次时应该进行数据处理的,可是我的中断进不去的
zyzhang365 2008-10-15
  • 打赏
  • 举报
回复
定时中断是否工作只和中断配置或者说初始化有关系, 和什么m=1以及main函数没有直接关系。
anne82820 2008-10-15
  • 打赏
  • 举报
回复
中断没有问题,我把主频搞错了,应该用DCO的,我用了XT2,忘了改了。谢谢

27,374

社区成员

发帖
与我相关
我的任务
社区描述
硬件/嵌入开发 单片机/工控
社区管理员
  • 单片机/工控社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧