<dfn id="is4kg"></dfn>
  • <ul id="is4kg"></ul>
  • <abbr id="is4kg"></abbr>
  • <ul id="is4kg"></ul>
    <bdo id="is4kg"></bdo>
    以文本方式查看主題

    -  曙海教育集團(tuán)論壇  (http://www.hufushizhe.com/bbs/index.asp)
    --  C語(yǔ)言開發(fā)  (http://www.hufushizhe.com/bbs/list.asp?boardid=62)
    ----  關(guān)于F2812中用C語(yǔ)言來實(shí)現(xiàn)中斷的說明  (http://www.hufushizhe.com/bbs/dispbbs.asp?boardid=62&id=2414)

    --  作者:wangxinxin
    --  發(fā)布時(shí)間:2010-12-10 12:04:35
    --  關(guān)于F2812中用C語(yǔ)言來實(shí)現(xiàn)中斷的說明

    關(guān)于F2812中用C語(yǔ)言來實(shí)現(xiàn)中斷的說明:
    1.首先在.cmd中定位系統(tǒng)中斷表:
    MEMORY
    {
    PAGE 0 :
    ......................................
    PAGE 1 :
    ......................................
    PIE_VECT : origin = 0x000D00, length = 0x000100

    7 @\' f# G+ T1 g

    ......................................
    }


    SECTIONS
    {
    ...................................
    PieVectTable : > PIE_VECT, PAGE = 1
    .....................................
    }
    2.在C中制定該中斷的結(jié)構(gòu)體:
    #pragma DATA_SECTION(PieVectTable,"PieVectTable");
    struct PIE_VECT_TABLE PieVectTable;(在DSP28_GlobalVariableDefs.C中初始化)
    3.用一組常數(shù)(按照中斷向量的順序)初始化該名字為PIE_VECT_TABLE的表:
    typedef interrupt void(*PINT)(void);這里有些一問,一下應(yīng)該為函數(shù)名??

    ) M. w, G3 ^+ v) c* h e5 o

    // Define Vector Table:
    struct PIE_VECT_TABLE {

    : y5 r# r\' m( }4 F# \\! d! _7 z

    // Reset is never fetched from this table.
    // It will always be fetched from 0x3FFFC0 in either
    // boot ROM or XINTF Zone 7 depending on the state of
    // the XMP/MC input signal. On the F2810 it is always
    // fetched from boot ROM.

    8 r: r, N5 P. b" o$ J2 C6 ]

    PINT PIE1_RESERVED;
    PINT PIE2_RESERVED;
    PINT PIE3_RESERVED;
    PINT PIE4_RESERVED;
    PINT PIE5_RESERVED;
    PINT PIE6_RESERVED;
    PINT PIE7_RESERVED;
    PINT PIE8_RESERVED;
    PINT PIE9_RESERVED;
    PINT PIE10_RESERVED;
    PINT PIE11_RESERVED;
    PINT PIE12_RESERVED;
    PINT PIE13_RESERVED;

    % ^! U6 d* R6 Q9 ?

    // Non-Peripheral Interrupts:
    PINT XINT13; // XINT13
    PINT TINT2; // CPU-Timer2
    PINT DATALOG; // Datalogging interrupt
    PINT RTOSINT; // RTOS interrupt
    PINT EMUINT; // Emulation interrupt
    PINT XNMI; // Non-maskable interrupt
    PINT ILLEGAL; // Illegal operation TRAP
    PINT USER0; // User Defined trap 0
    PINT USER1; // User Defined trap 1
    PINT USER2; // User Defined trap 2
    PINT USER3; // User Defined trap 3
    PINT USER4; // User Defined trap 4
    PINT USER5; // User Defined trap 5
    PINT USER6; // User Defined trap 6
    PINT USER7; // User Defined trap 7
    PINT USER8; // User Defined trap 8
    PINT USER9; // User Defined trap 9
    PINT USER10; // User Defined trap 10
    PINT USER11; // User Defined trap 11

    // Group 1 PIE Peripheral Vectors:
    PINT PDPINTA; // EV-A
    PINT PDPINTB; // EV-B
    PINT rsvd1_3;
    PINT XINT1;
    PINT XINT2;
    PINT ADCINT; // ADC
    PINT TINT0; // Timer 0
    PINT WAKEINT; // WD

    // Group 2 PIE Peripheral Vectors:
    PINT CMP1INT; // EV-A
    PINT CMP2INT; // EV-A
    PINT CMP3INT; // EV-A
    PINT T1PINT; // EV-A
    PINT T1CINT; // EV-A
    PINT T1UFINT; // EV-A
    PINT T1OFINT; // EV-A
    PINT rsvd2_8;

    // Group 3 PIE Peripheral Vectors:
    PINT T2PINT; // EV-A
    PINT T2CINT; // EV-A
    PINT T2UFINT; // EV-A
    PINT T2OFINT; // EV-A
    PINT CAPINT1; // EV-A
    PINT CAPINT2; // EV-A
    PINT CAPINT3; // EV-A
    PINT rsvd3_8;

    // Group 4 PIE Peripheral Vectors:
    PINT CMP4INT; // EV-B
    PINT CMP5INT; // EV-B
    PINT CMP6INT; // EV-B
    PINT T3PINT; // EV-B
    PINT T3CINT; // EV-B
    PINT T3UFINT; // EV-B
    PINT T3OFINT; // EV-B
    PINT rsvd4_8;

    // Group 5 PIE Peripheral Vectors:
    PINT T4PINT; // EV-B
    PINT T4CINT; // EV-B
    PINT T4UFINT; // EV-B
    PINT T4OFINT; // EV-B
    PINT CAPINT4; // EV-B
    PINT CAPINT5; // EV-B
    PINT CAPINT6; // EV-B
    PINT rsvd5_8;

    # c" P/ a, `\' g. t\' Y\' V: l

    // Group 6 PIE Peripheral Vectors:
    PINT SPIRXINTA; // SPI-A
    PINT SPITXINTA; // SPI-A
    PINT rsvd6_3;
    PINT rsvd6_4;
    PINT MRINTA; // McBSP-A
    PINT MXINTA; // McBSP-A
    PINT rsvd6_7;
    PINT rsvd6_8;

    // Group 7 PIE Peripheral Vectors:
    PINT rsvd7_1;
    PINT rsvd7_2;
    PINT rsvd7_3;
    PINT rsvd7_4;
    PINT rsvd7_5;
    PINT rsvd7_6;
    PINT rsvd7_7;
    PINT rsvd7_8;

    ) X+ e1 w- d" o% S5 `1 h# o

    // Group 8 PIE Peripheral Vectors:
    PINT rsvd8_1;
    PINT rsvd8_2;
    PINT rsvd8_3;
    PINT rsvd8_4;
    PINT rsvd8_5;
    PINT rsvd8_6;
    PINT rsvd8_7;
    PINT rsvd8_8;

    . n) v4 d; T, }9 H% Y7 l7 K

    // Group 9 PIE Peripheral Vectors:
    PINT RXAINT; // SCI-A
    PINT TXAINT; // SCI-A
    PINT RXBINT; // SCI-B
    PINT TXBINT; // SCI-B
    PINT ECAN0INTA; // eCAN
    PINT ECAN1INTA; // eCAN
    PINT rsvd9_7;
    PINT rsvd9_8;

    : F: C6 l( m* Y) x

    // Group 10 PIE Peripheral Vectors:
    PINT rsvd10_1;
    PINT rsvd10_2;
    PINT rsvd10_3;
    PINT rsvd10_4;
    PINT rsvd10_5;
    PINT rsvd10_6;
    PINT rsvd10_7;
    PINT rsvd10_8;

    // Group 11 PIE Peripheral Vectors:
    PINT rsvd11_1;
    PINT rsvd11_2;
    PINT rsvd11_3;
    PINT rsvd11_4;
    PINT rsvd11_5;
    PINT rsvd11_6;
    PINT rsvd11_7;
    PINT rsvd11_8;

    \' R0 L2 H0 L4 M e- X0 p

    // Group 12 PIE Peripheral Vectors:
    PINT rsvd12_1;
    PINT rsvd12_2;
    PINT rsvd12_3;
    PINT rsvd12_4;
    PINT rsvd12_5;
    PINT rsvd12_6;
    PINT rsvd12_7;
    PINT rsvd12_8;
    };
    然后在使我們?cè)?cmd文件中定義的表有以上屬性:
    extern struct PIE_VECT_TABLE PieVectTable;(在.h文件中)
    4.初始化該表(在.c文件中)使之能夠?yàn)橹鞒绦蛩褂茫?br/>const struct PIE_VECT_TABLE PieVectTableInit = {

    0 e/ r* {5 P7 u k. \\7 a

    PIE_RESERVED, // Reserved space
    PIE_RESERVED,
    PIE_RESERVED,
    PIE_RESERVED,
    PIE_RESERVED,
    PIE_RESERVED,
    PIE_RESERVED,
    PIE_RESERVED,
    PIE_RESERVED,
    PIE_RESERVED,
    PIE_RESERVED,
    PIE_RESERVED,
    PIE_RESERVED,

    # T& u6 w: U0 R# J! j


    // Non-Peripheral Interrupts
    INT13_ISR, // XINT13 or CPU-Timer 1
    INT14_ISR, // CPU-Timer2
    DATALOG_ISR, // Datalogging interrupt
    RTOSINT_ISR, // RTOS interrupt
    EMUINT_ISR, // Emulation interrupt
    NMI_ISR, // Non-maskable interrupt
    ILLEGAL_ISR, // Illegal operation TRAP
    USER0_ISR, // User Defined trap 0
    USER1_ISR, // User Defined trap 1
    USER2_ISR, // User Defined trap 2
    USER3_ISR, // User Defined trap 3
    USER4_ISR, // User Defined trap 4
    USER5_ISR, // User Defined trap 5
    USER6_ISR, // User Defined trap 6
    USER7_ISR, // User Defined trap 7
    USER8_ISR, // User Defined trap 8
    USER9_ISR, // User Defined trap 9
    USER10_ISR, // User Defined trap 10
    USER11_ISR, // User Defined trap 11

    : N\' }3 w, d# q7 r

    // Group 1 PIE Vectors
    PDPINTA_ISR, // EV-A
    PDPINTB_ISR, // EV-B
    rsvd_ISR,
    XINT1_ISR,
    XINT2_ISR,
    ADCINT_ISR, // ADC
    TINT0_ISR, // Timer 0
    WAKEINT_ISR, // WD

    _4 }) S" s$ N( k+ k( `5 R# l\' T$ @

    // Group 2 PIE Vectors
    CMP1INT_ISR, // EV-A
    CMP2INT_ISR, // EV-A
    CMP3INT_ISR, // EV-A
    T1PINT_ISR, // EV-A
    T1CINT_ISR, // EV-A
    T1UFINT_ISR, // EV-A
    T1OFINT_ISR, // EV-A
    rsvd_ISR,

    // Group 3 PIE Vectors
    T2PINT_ISR, // EV-A
    T2CINT_ISR, // EV-A
    T2UFINT_ISR, // EV-A
    T2OFINT_ISR, // EV-A
    CAPINT1_ISR, // EV-A
    CAPINT2_ISR, // EV-A
    CAPINT3_ISR, // EV-A
    rsvd_ISR,

    // Group 4 PIE Vectors
    CMP4INT_ISR, // EV-B
    CMP5INT_ISR, // EV-B
    CMP6INT_ISR, // EV-B
    T3PINT_ISR, // EV-B
    T3CINT_ISR, // EV-B
    T3UFINT_ISR, // EV-B
    T3OFINT_ISR, // EV-B
    rsvd_ISR,

    // Group 5 PIE Vectors
    T4PINT_ISR, // EV-B
    T4CINT_ISR, // EV-B
    T4UFINT_ISR, // EV-B
    T4OFINT_ISR, // EV-B
    CAPINT4_ISR, // EV-B
    CAPINT5_ISR, // EV-B
    CAPINT6_ISR, // EV-B
    rsvd_ISR,

    ( A( Z, `9 g8 I, i% t% ~: L2 E

    // Group 6 PIE Vectors
    SPIRXINTA_ISR, // SPI-A
    SPITXINTA_ISR, // SPI-A
    rsvd_ISR,
    rsvd_ISR,
    MRINTA_ISR, // McBSP-A
    MXINTA_ISR, // McBSP-A
    rsvd_ISR,
    rsvd_ISR,

    // Group 7 PIE Vectors
    rsvd_ISR,
    rsvd_ISR,
    rsvd_ISR,
    rsvd_ISR,
    rsvd_ISR,
    rsvd_ISR,
    rsvd_ISR,
    rsvd_ISR,

    + I( b) D4 S\' a5 W

    // Group 8 PIE Vectors
    rsvd_ISR,
    rsvd_ISR,
    rsvd_ISR,
    rsvd_ISR,
    rsvd_ISR,
    rsvd_ISR,
    rsvd_ISR,
    rsvd_ISR,

    // Group 9 PIE Vectors
    SCIRXINTA_ISR, // SCI-A
    SCITXINTA_ISR, // SCI-A
    SCIRXINTB_ISR, // SCI-B
    SCITXINTB_ISR, // SCI-B
    ECAN0INTA_ISR, // eCAN
    ECAN1INTA_ISR, // eCAN
    rsvd_ISR,
    rsvd_ISR,

    // Group 10 PIE Vectors
    rsvd_ISR,
    rsvd_ISR,
    rsvd_ISR,
    rsvd_ISR,
    rsvd_ISR,
    rsvd_ISR,
    rsvd_ISR,
    rsvd_ISR,

    // Group 11 PIE Vectors
    rsvd_ISR,
    rsvd_ISR,
    rsvd_ISR,
    rsvd_ISR,
    rsvd_ISR,
    rsvd_ISR,
    rsvd_ISR,
    rsvd_ISR,

    9 c$ u# B O8 L e- J# ]

    // Group 12 PIE Vectors
    rsvd_ISR,
    rsvd_ISR,
    rsvd_ISR,
    rsvd_ISR,
    rsvd_ISR,
    rsvd_ISR,
    rsvd_ISR,
    rsvd_ISR,
    };

    $ l; q3 G X) h) K+ y


    //---------------------------------------------------------------------------
    // InitPieVectTable:
    //---------------------------------------------------------------------------
    // This function initializes the PIE vector table to a known state.
    // This function must be executed after boot time.
    //

    6 I6 S1 Q9 M4 Q) a/ g$ L

    void InitPieVectTable(void)
    {
    int16 i;
    Uint32 *Source = (void *) &圖片點(diǎn)擊可在新窗口打開查看ieVectTableInit;
    Uint32 *Dest = (void *) &圖片點(diǎn)擊可在新窗口打開查看ieVectTable;

    EALLOW;
    for(i=0; i < 128; i++)
    *Dest++ = *Source++;
    EDIS;

    [/ t; }+ q! a6 n9 W/ |

    // Enable the PIE Vector Table
    PieCtrl.PIECRTL.bit.ENPIE = 1;

    }
    5.中斷服務(wù)程序:
    讓以上的數(shù)值指向你所要的服務(wù)程序,例如:
    PieVectTable.TINT2 = &ISRTimer2;
    那么,ISRTimer2也就成了中斷服務(wù)程序,
    ×××切記:一定要在主程序的開始先聲明該程序:
    interrupt void ISRTimer2(void);

    6 U |2 W: o" G; N* r" {/ S# v* C

    .............
    .............
    然后按照您的需要編制該程序:
    interrupt void ISRTimer2(void)
    {
    CpuTimer2.InterruptCount++;
    }

    " z. p8 _* J1 d% v6 t8 q. o: W$ p
    主站蜘蛛池模板: 欧美成人久久久| 97精品伊人久久大香线蕉| 欧美国产日韩久久久| 国产1区2区3区在线观看| 88国产精品欧美一区二区三区| 很污的视频网站| 亚洲jizzjizz妇女| 波多野结衣大战三个黑鬼| 国产动作大片中文字幕| 97人妻天天爽夜夜爽二区| 巨大黑人极品hdvideo| 久香草视频在线观看免费| 欧美成人鲁丝片在线观看| 噜噜影院无毒不卡| 韩国三级hd中文字幕| 国产超碰人人模人人爽人人喊| 久久97久久97精品免视看秋霞| 最近中文字幕完整国语视频| 做暧暧免费小视频| 美女网站色在线观看| 国产福利一区二区三区在线观看 | 国产欧美亚洲一区在线电影| groupsex娇小紧的5一8| 成人伊人青草久久综合网破解版| 二十四小时日本高清在线www| 欧美日韩一区二区在线| 全彩里番acg里番| 美女大量吞精在线观看456| 国产成人综合欧美精品久久| 99精品国产在热久久无毒不卡| 婷婷五月在线视频| 久久久精品中文字幕麻豆发布| 日韩美女在线观看一区| 亚洲精品亚洲人成在线观看麻豆| 精品久久久久久国产| 国产成人高清在线播放| 99久久国产宗和精品1上映| 孕交动漫h无遮挡肉| 久久噜噜噜久久亚洲va久| 最近2019年中文字幕国语大全| 亚洲精品国产成人|