dsp5509的中断系统

1. DSP5509有32个中断,中断分为软件中断和硬件中断,同时软件中断不可以屏蔽。软件中断由指令触发。55x在中断时DSP会自动保存ST0_55、ST1_55、ST2_55三个寄存器。

2. 其中中断最关键的,但是用户也不必关心的是,进入中断之前,需要把关键寄存器的值都入栈,就是把当前寄存器的值保存起来(在栈里面备份),因为进入中断可能需要改变这些寄存器的值,然后退出中断,再把栈里面的备份值重新写到关键寄存器,叫做恢复现场。

3. 看下工程,首先写一个中断ISR服务函数,5509A有5个外部中断,INT0-INT4,本次使用INT2

void interrupt XINT()
{
    nCount++; nCount%=2;
    if ( nCount==0 )
        PCR1^=8;
}

4. 中断配置初始化函数

void INTR_init( void )
{
    IVPD=0x80;
    IVPH=0x80;
    IER0=8;
    DBIER0=8;
    IFR0=0xffff;
    asm(" BCLR INTM");
}

5. 相关的asm文件,主要是用来配置中断向量表

ISR序号 硬件中断优先级 中断名称 24位中断向量地址低八位 中断子程序功能
0 0(最高) RESET 0H 复位(硬件或软件)
1 1 NMI 8H 外部不可屏蔽中断
2 2 INT0 10H 外部硬件中断0
3 5 INT2 18H 外部硬件中断2
4 6 INT0 20H 定时器0中断
5 7 RINT0 28H McBSP0接收中断
6 9 RINT1 30H McBSP1接收中断
7 10 XINT1 38H McBSP1发送中断
8 11 --- 40H 软件中断8
9 13 DMAC1 48H DMA通道1中断
10 14 DSPINT 50H 主机中断
11 15 INT3 58H 外部硬件中断3
12 17 RINT2 60H McBSP2接收中断
13 18 XINT2 68H McBSP2发送中断
14 21 DMAC4 70H DMA通道4中断
15 22 DMAC5 78H DMA通道5中断
16 4 INT1 80H 外部硬件中断1
17 8 XINT0 88H McBSP0发送中断
18 12 DMAC0 90H DMA通道0中断
19 16 INT4 98H 外部硬件中断4或RTC中断
20 19 DMAC2 A0H DMA通道2中断
21 20 DMAC3 A8H DMA通道3中断
22 23 TINT1 B0H 定时器1中断
23 24 I2C B8H I2C总线中断
24 2 BERR C0H 总线出错中断
25 25 DLOG C8H 数据记录中断
26 26(最低) RTOS D0H 实时操作系统中断
27 27 --- D8H 软件中断27
28 28 --- E0H 软件中断28
29 29 --- E8H 软件中断29
30 30 --- F0H 软件中断30
31 31 --- F8H 软件中断31
        .sect ".vectors"

        .ref _c_int00           ; C entry point
    .ref _XINT

        .if (.MNEMONIC)

rsv:                            ; reset vector
        B _c_int00                              ; branch to C entry point
        NOP
        .align 8
nmi:
    .loop 8
    nop
    .endloop
int0:
    .loop 8
    nop
    .endloop
int2:
    b _XINT
    nop
    .align 8

 

posted @ 2018-08-19 16:15  429512065  阅读(785)  评论(0编辑  收藏  举报