创龙TMS320C6748开发板———中断介绍(1)中断及中断相关寄存器

一、中断模块寄存器介绍      
        本节我们主要介绍 C6748 的中断模块。
        中断是硬件系统的基本功能, DSP 通过中断实现和其他芯片的实时交互。中断是指 DSP 在执行程序的过程中,当出现异常情况或特殊请求时, DSP 停止现行程序的运行,转向这些异常情况或特殊请求的处理,处理结束后再返回现行程序的间断处,继续执行原程序。中断是实时处理内部或外部时间的一种内部机制。
        TMS320C6748 中一共有 127 个中断事件。如图所示。
        由中断事件可以看到前 4 个事件是复用中断事件,通过 EVTMASKn 寄存器将 4~127 个中断事件复用到这四个中断事件中,见下图。例如, EVTMASK1 中复用了 EVT38 ,当 EVT38 发出中断请求,想应的 EVT1 同时发出中断请求。另外在 MEVTFLAGn 可以查看具体是哪个事件在请求中断。也许这里你会疑问,这样的设计有什么好处呢?在下面我们详细说明。
        DSP 是通过中断向量表作为相应的中断服务程序的入口,中断优先级自高至低。在 TMS320C6748 中共有 16 个中断。
      
  
中断优先级
  
中断名称
描述
0
Reset
复位中断
1
NMI
不可屏蔽中断
2
Reserved
预留(不可操作)
3
Reserved
预留(不可操作)
4
INT4
用户自定义中断
5
INT5
用户自定义中断
6
INT6
用户自定义中断
7~13
INT7~13
用户自定义中断
14
INT14
用户自定义中断
15
INT15
用户自定义中断
        4 个中断,编程一般用不到, Ti 公司总共留给用户 12 个可自定义的中断,所以当使用到的中断特别多的情况下,复用中断事件有非常重要的意义。到此,相信大家也能猜到,我们需要把用到的中断事件分配到 12 个可用的中断。具体的寄存器为 INTMUXn( 中断复用寄存器 )
        7-35~7-37 12 个中断选择在寄存器中的位置,表 7-9 是中断选择的格式。事件到中断的映射如下图所示:
        另外,常用的中断寄存器有以下几个:
       ISTP :中断向量表起始地址寄存器;
       IER :中断使能寄存器;
       ICR :中断清除寄存器;
       ISR :中断设置寄存器等等。
以上几个寄存器我们在具体介绍中断向量表汇编文件时再详细介绍。
        在调制过程中,我们如果想调试其中一个中断,但是这个中断需要相关外设才能发起请求,这时我们可以设置 EVENTSETn 寄存器,设置事件发生。相应地,还有 EVENTCLRn (中断事件清除寄存器) [ 每次完成中断设置后一定要清除所有中断标志,处理完中断后最好清除下相应标志位 ] EVENTFLAGn (中断事件标志寄存器)
        在主程序中中断函数使用如下的关键字:
interrupt   void  [ 用户定义名]()
{
}
    二、 CCS 调试的一些经验
        在编写 DSP 子函数时,你也许会使用一些变量,最好不要使用数据量较大的数组,因为 DSP 在运行子函数程序时,所涉及到的局部变量在内存中有一个临时存储区域,但是 DSP 不能识别这段区域中有没有别的程序段,这样很可能造成数组被中途截断,一部分数据出错或者程序运行出错。
        解决方法:
       1 、直接定义全局变量,在主程序中分配确定的内存地址;
       2 、使用指针传递变量,子函数中不要定义新变量;
       3 、运用函数 *UTIL_allocMem(Uint32size) 在子函数中分配内存块。
// Allocatememory from the ad-hoc heap
void*UTIL_allocMem(Uint32 size)
{
    void *cPtr;
    Uint32 size_temp;
    // Ensure word boundaries
    size_temp = ((size + 4) >> 2 )<< 2;
    if((currMemPtr + size_temp) > ((Uint32)&EXTERNAL_RAM_END))
    {
        return NULL;
    }
    cPtr = (void *) (((Uint32)&EXTERNAL_RAM_START) + currMemPtr);
    currMemPtr += size_temp;
    return cPtr;
}

  • 1
    点赞
  • 21
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值