4292|2

299

帖子

3814

TA的资源

纯净的硅(初级)

楼主
 

DSP—使用定时器0中断 [复制链接]

定时器0 中断设置定时器0 中断设置由以下几个步骤组成。
1)定时器0 中断的基本条件
除了对周期寄存器及定时器分频器进行必要的设置之外,使能定时器0 中断有两条必须的指令:
CpuTimer0Regs.TCR.bit.TSS= 0; //启动定时器
Timer->RegsAddr->TCR.bit.TIE=1; //使能定时器中断
如果缺少上面两条指令中的一条,将不会产生中断。

2)确定中断向量的入口地址
主程序通过“DSP281x_PieVect.c”文件中的InitPieVectTable()函数,已经为PIE 向量表中的所有中断向量配置了对应向量的入口地址。如果针对某一个外设中断专门有一个中断服务程序,则这个中断服务程序的入口地址必须取代前面配置的入口地址,它由下面的指令完成:
EALLOW; //允许访问受保护的寄存器
PieVectTable.TINT0= &cpu_timer0_isr; //取cpu_timer0_isr 地址赋值给
//TINT0中断向量
EDIS; //禁止访问受保护的寄存器
上面指令中,cpu_timer0_isr()函数是针对TINT0 中断向量的一个中断服务程序,&cpu_timer0_isr 是该程序的入口地址。
3)使能PIE级及CPU级中断向量
这个步骤由下面4 类指令完成:
先找出中断向量在PIE 向量表中所在的组及在这组中所处的优先级。经查TINT0是第1 组第7 个中断,因此先通过PIE 级指令“PieCtrlRegs.PIEIER1.bit.INTx7 =1;”,使能PIE 第1 组第7 个TINT0 中断(INTx7 由头文件定义为PIE 中断使能寄存器(PIEIER)的第7 位)。
通过CPU 级的赋值指令“IER |= M_INT1;”,使能第1 组(M_INT1 由头文件定义为0x0001,指向第1 组),即把TINT0 中断汇集到CPU 级的INT1 中断线上。
通过“EINT;”指令使能全局中断,实际指令为:
PieCtrlRegs.PIEIER1.bit.INTx7= 1; //使能PIE 中的TINT0,1 组第7 个中断
IER |= M_INT1; //使能第1 组中断
EINT; //使能INTM 全局中断
注意:这里用了按位或复合运算符“|=”,其用意是不破坏IER 原有结构。如果程序仅此一个中断,可以用 “IER = 0x0001;”指令,否则,会破坏IER 原有结构。
使能PIE 向量表,由下面一条指令完成。
PieCtrlRegs.PIECRTL.bit.ENPIE=1;
实际上这条指令包含在初始化PIE 向量表InitPieVectTable()函数中,主程序对这个函数已经调用。因此可省略。
4)中断服务程序
中断服务程序是以关键字interrupt 开头的一个程序。通常在中断服务程序中有两条必须的指令:一条是中断应答,另一条是将中断标志位清0。
定时器0 中断应答指令为:
PieCtrlRegs.PIEACK.all=PIEACK_GROUP1; //PIEACK_GROUP1=0x0001
PIE 应答寄存器PIEACK 是中断从PIE 级进入CPU 级的门禁。一个中断在进入CPU级之前,其对应的PIEACK[x.1]必须通过软件清0,打开后续INTx 的PIE 级到CPU 的通道。而当这个中断进入CPU 级INTx 中断线时,硬件将PIEACK[x.1]位置1,关闭后续INTx 的PIE 级到CPU 的通道。这条指令通过向PIEACK[x.1]写1,将PIEACK[x.1]位清0,从而打开后续INT1 的PIE 级到CPU 级的中断。
源码的中断服务程序中没有将中断标志位清0 的指令。当程序开始运行并执行到指令“CpuTimer0Regs.TCR.bit.TSS = 0;”时,定时器中断标志位TIF(TCR[15])即从0 变成1。这意味着一旦启动定时器即触发定时器中断之后,即使通过软件将该位置1,也不能将其清0。
5)中断服务程序及中断初始化函数声明
如果中断服务程序及中断初始化函数放在主函数的下面,则在主函数头部要对中断服务程序及中断初始化函数进行声明:
interrupt void cpu_timer0_isr();如果中断服务函数放在主函数的上面,则不必进行声明。

最新回复

学习了啊中断服务程序是以关键字interrupt 开头的一个程序。通常在中断服务程序中有两条必须的指令:一条是中断应答,另一条是将中断标志位清0。  详情 回复 发表于 2014-10-22 14:53
点赞 关注
 

回复
举报

2856

帖子

260

TA的资源

五彩晶圆(高级)

沙发
 
不错。介绍的很详细
 
 

回复

3025

帖子

0

TA的资源

五彩晶圆(初级)

板凳
 
学习了啊中断服务程序是以关键字interrupt 开头的一个程序。通常在中断服务程序中有两条必须的指令:一条是中断应答,另一条是将中断标志位清0。
 
 
 

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

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/10 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表