- 1、本文档共8页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
DSP(TMS320C6713)入门之旅三、中断的理解和使用
学习一个芯片的功能时,我的建议是先学会如何用C语言点亮一个LED灯,然后就是学习一下使用他的中断,因为在做芯片的时候,各个厂家有自己的一套自己的方法。所以使用中断的就必须了解很多概念,比如如何打开中断,如何安装自己的中断子服务程序,等等!
??????? 先介绍一下什么叫中断:你在下象棋,突然电话响了,你回屋接电话,然后回来继续下象棋,这个过程就叫做中断响应过程(中断过程)。??????????? CPU执行正常任务———————下象棋?????????????保护现场———————————-你已经想好要“将军”,先在脑海中记下来。??????????? 中断发生———————————-电话响-??????????? 中断服务程序—————————-接电话???????????? 恢复现场———————————-回来后恢复刚才想法??????????? 中断返回———————————-你回来继续下象棋??????????? 中断屏蔽———————————-Boss 正在训话,要求所有电话关机,你不能接电话了。???????????非屏蔽中断——————————-你内急,即使是 Boss 在训话,你还是得到外面去嘘嘘。???????????可屏蔽中断——————————-你在“闭关修炼”,可以不受外界干扰
所以我们在使用中断之前先得告诉CPU,我们要使用那个中断,当中断发生的时候,你的执行程序的去向(也就是中断服务子程序),最后在返回我们被中断的函数。这样就完成了我们的中断历程!
看看6713执行中断的流程:
?????? 一、使能了全局中断和子中断,那么CPU每执行一条指令之前就去查询一下有没有中断被置位,如果有产生的,那么CPU就要跳转!
?????? 二、软件把CPU内部的寄存器A0~A15,B0~B15,等等这些寄存器的值推入堆栈保存,把当前PC寄存器的值放入IRP寄存器中以备中断返回能找到当前被打断的位置(保存现场,中断函数前面得加interrupt关键字)
?????? 三、CPU的PC指针读出中断向量表的地址,也就是把(ISTP寄存器的值+子中断向量偏移量)装入PC寄存器,这样就执行跳转。
?????? 四、在中断向量表里一般有就用跳转指令,这样就可以跳转到我们用C语言编写的中断服务子程序中。由于我们在一般的中断服务子程序函数前面加入了interrupt关键字。那么编译器就会在函数返回的语句改成B IRP,这样就把IRP的值送给PC寄存器。(中断服务)
?????? 五、CPU在执行跳转之前会把堆栈中以前保存的那些值出栈到自己的相应的寄存器中。(恢复现场)
OK,明白了中断执行的一个大概流程,我们就来看看6713或者说是C6000系列的中断如何安装和使用(以上一章的timer1中断为实例)。
???? 由于本来6713有32个中断源,也就是中断CPU的信号可以来自这个32信号源。但是DSP却安排了在同一时刻置最多服务16个中断号,但是有一个reset,nmi和2个保留的,这些我们不能使用其他的中断源占用,所以我们外设能占用的中断号为4~15。那么怎么办呢,TI在次想了一个办法,就是使用多路选择开关来决定哪个中断源连接到我们的某一中断号上。MUXL和MUXH两个寄存器,就是这个选择开关!
由于我们使用的是Timer1中断,从图中可以看出15号中断号默认为Timer1的中断服务号,但是我这儿想用14号来服务我们的中断,这样以后大家想用其他的就依样画葫芦了。那么我这儿就得把MUXH[26:21]=0×02;这样就把14号中断和我们的timer1中断源接上了。当定时器到时时就CPU就会跳转到中断向量表的14号向量那儿。接下来我就来安装和使用定时器中断吧。
???????
??1、安装中断向量表,一般用汇编编写:取名为vector.asm
*——————————————————————————* Global symbols defined here and exported out of this file*——————————————————————————??? .global _vectors//全局标号,可以在别处使用.??? .global _c_int00??? .global _vector1??? .global _vector2??? .global _vector3??? .global _vector4??? .global _vector5??? .global _vector6??? .global _vector7??? .global _vector8?? .global _vector9????????????? .global _vector
您可能关注的文档
- AWK 编程实例.doc
- matlab5.ppt
- C++习题集.doc
- C++作业题及答案.doc
- C++程序设计 第11章 C++的IO流类库.ppt
- C#程序的流程控制.ppt
- C#第5章 控制结构与算法1 2H.ppt
- C++ chapter2.ppt
- C++程序设计习题.doc
- C++程序设计1.ppt
- 期中学情评估卷(含答案)部编版历史八年级上册.doc
- 第五、六单元学情评估卷(含答案)部编版历史八年级上册.doc
- 期末学情评估卷 (二 )(含答案)部编版历史八年级上册.doc
- 期末学情评估卷 (一)(含答案)部编版历史八年级上册.doc
- galileo-水泵品质多级泵.pdf
- 洛阳万基水泥3000td蓖式冷却机买卖合同.doc
- 7 leading an star staffjco 7带领全明星员工.pdf
- 中冶自动化fameview driver驱动手册a005 scalancex.pdf
- 灰指甲项给药指套.pdf
- 成果文案整流器300v60ato-247ab vfr60l300pt.pdf
文档评论(0)