关于ARM在中断中的一个语句或者宏定义的意义

[复制链接]
查看11 | 回复2 | 2011-3-24 18:12:27 | 显示全部楼层 |阅读模式
我在中断的示例中看到BIT_TIMER1这样一个寄存器。 这个示例是用来设置定时器1作为中断源的。里面在设置SRCPND和 INTPND时这样用:
if(rINTPND&BIT_TIMER1)
{
SRCPND|=BIT_TIMER1;
}
pISR_TIMER1=(int)Timer1_ISR;
//这句我理解,是把中断程序的地址给中断指针。
rINTMSK&=~(BIT_TIMER1);
//这句话书上解释是 开中断 。请问BIT_TIMER1到底是个什么东西! 他的值是多少? 程序开头没有这个的宏定义 ,希望大家帮我解释一下 或者猜测一下 它是什么东西 。谢谢!

回复

使用道具 举报

千问 | 2011-3-24 18:12:27 | 显示全部楼层
这个程序的意思是先查看定时器1是否有中断请求,如果有请求就打开定时器1的中断。分析如下:INTPND是中断挂起寄存器,它的每一位都对应着一个中断,如果某一位写1,就表示这个中断提出请求,0表示无情求。由于不知道你这个是arm7还是arm9,分别说一下吧,arm7中定时器1在INTPND寄存器中对应的位置是第12位,所以BIT_TIMER1的值是(1<<12),即第12位为1,剩下的为0.在arm9中BIT_TIMER1的值是(1<<11),即第11位为1,剩下的为0.if(rINTPND&BIT_TIMER1)的意思就是查看定时器1是否发出请求。如果有请求,就将SRCPND的对应的位置置1.rINTMSK&=~(BIT_TIMER1
回复

使用道具 举报

千问 | 2011-3-24 18:12:27 | 显示全部楼层
一定是在关联文件或头文件中有定义可以用右键 选择 找到定义处你试试
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

主题

0

回帖

4882万

积分

论坛元老

Rank: 8Rank: 8

积分
48824836
热门排行