tms320lf2407考试_tms320lf2407 开发环境_tms320lf2407(77)

电脑杂谈  发布时间:2017-01-30 03:04:38  来源:网络整理

LF240x 内核提供一个不可屏蔽的中断 NMI 和 6 个按优先级获得服务的可屏蔽中断INT1至INT6。而这6个中断级的每一个都可被很多外设中断请求共享。通过中断请求系统中的一个两级中断来扩展系统可响应的中断个数。

为了让 CPU 能区分引起中断的事件,在每个外设中断请求有效时都会产生一个唯一的外设中断向量,保存于外设中断向量寄存器(PIVR )中。实际上有两个中断向量表,CPU 的向量表用于得到一级通用中断服务子程序(GISR);外设向量表指定外设中断子程序(SISR)。GISR 程序根据 PIVR 中的外设中断向量取值决定执行哪个

SISR。

3,中断响应过程

外设事件要引起CPU中断,必须保证:外设事件的中断使能为被使能,CPU内核级的6个可屏蔽中断中,相应中断也被使能。

在外设事件发生时,首先将其在外设中断控制器中的标志位置1,从而引起CPU

内核的INT1—INT6中的一个产生中断。中断服务过程中,其他可屏蔽中断将会自动被屏蔽,直到中断返回。

在软件中,当设置好相应中断标志后,开中断,进入等待中断发生的状态;外设(如定时器)中断发生时,首先跳转到相应中断高级的服务程序中(如:定时器1

会引起 INT2 中断),在相应 GISR 子程序中,取出 PIVR 的值,根据其值再转向相应的SISR;SISR程序在进行服务操作之后,应将本外设的中断标志位清除以便能继续中断,然后返回。

4,中断程序设计

用C语言设计中断服务程序需要用intterupt关键字修饰定义的中断服务函数,

例如,

void interrupt gptime1(void);

中断服务函数应尽量短小,在中断服务函数中 要注意对中断标志寄存器、中断屏蔽寄存器的设置,避免中断嵌套或中断丢失现象的发生。

四,实验程序

本实验设计的程序是在上一个实验基础上修改 得来,由于上一实验控制指示灯闪烁的延时控制是用循环计算方法得到的,延 时不精确也不均匀,采用中断方式可哈尔滨工业大学——DSP 原理与应用实验指导书

III-11

以实现指示灯的定时闪烁,时间更加准确。

对于定时器的周期寄存器为计数40000次产生1个中断,由于DSP工作在40MHz

主频,正好是 1ms 中断一次,所以在中断服务程序中计算中断 500 次时改变指示灯状态,实现指示灯亮0.5秒,再灭0.5秒,即每秒闪烁1次。

实验程序的工程中包含了两种源代码,主程序采用 C 语言编制利于控制,中断向量表在vector.asm汇编语言文件中,利于直观地控制存储区分配。在工程中只需将它们添加进来即可,编译系统会自动识别分别处理完成整合工作。

实验程序的 C 语言主程序中包含了内嵌汇编语句,提供一种在需要更直接控制

DSP状态的方法,同样的方法也能提高C语言部分程序的计算效率。

实验程序代码,

#include "2407c.h"

ioport unsigned int port000c;

#define T1MS 0x9c3f /* 9c3fH=40000-1 */

void interrupt gptime1(void); /* 中断服务程序,定时器计数T1MS次时中断调用 */

void gp_init(void); /* 定时器初始化 */

unsigned int uWork,nCount,uWork1;

int * pf;

int j = 0;

main()

{

int i;

nCount=0;

asm(" setc INTM"); /* 关中断,进行关键设置时不允许发生中断,以免干扰 */


本文来自电脑杂谈,转载请注明本文网址:
https://www.pc-fly.com/a/ruanjian/article-29489-77.html

相关阅读
    发表评论  请自觉遵守互联网相关的政策法规,严禁发布、暴力、反动的言论

    • 知玄
      知玄

      感觉千玺和里面的小王子形象好贴近

    • 王丽君
      王丽君

      太完美了

    • 曹成公姬负刍
      曹成公姬负刍

      那里的岛礁有许多在自然状况下是当涨潮时处于海面以下的

    热点图片
    拼命载入中...