F2812CMD.txt
上传用户:heyong2055
上传日期:2014-10-20
资源大小:131k
文件大小:11k
源码类别:

DSP编程

开发平台:

C/C++

  1. 关于F2812中用C语言来实现中断的说明:
  2. 1.首先在.cmd中定位系统中断表:
  3. MEMORY
  4. {
  5. PAGE 0 : 
  6.  ......................................
  7. PAGE 1 : 
  8.  ......................................
  9.    PIE_VECT   : origin = 0x000D00, length = 0x000100
  10.  ......................................         
  11. }
  12.  
  13.  
  14. SECTIONS
  15. {
  16.    ................................... 
  17.    PieVectTable      : > PIE_VECT,   PAGE = 1
  18.  .....................................
  19. }
  20. 2.在C中制定该中断的结构体:
  21. #pragma DATA_SECTION(PieVectTable,"PieVectTable");
  22. struct PIE_VECT_TABLE PieVectTable;(在DSP28_GlobalVariableDefs.C中初始化)
  23. 3.用一组常数(按照中断向量的顺序)初始化该名字为PIE_VECT_TABLE的表:
  24. typedef interrupt void(*PINT)(void);这里有些一问,一下应该为函数名??
  25. // Define Vector Table:
  26. struct PIE_VECT_TABLE {
  27. // Reset is never fetched from this table.  
  28. // It will always be fetched from 0x3FFFC0 in either
  29. // boot ROM or XINTF Zone 7 depending on the state of
  30. // the XMP/MC input signal.  On the F2810 it is always
  31. // fetched from boot ROM. 
  32.       PINT     PIE1_RESERVED;  
  33.       PINT     PIE2_RESERVED;
  34.       PINT     PIE3_RESERVED;
  35.       PINT     PIE4_RESERVED;
  36.       PINT     PIE5_RESERVED;
  37.       PINT     PIE6_RESERVED;
  38.       PINT     PIE7_RESERVED;
  39.       PINT     PIE8_RESERVED;
  40.       PINT     PIE9_RESERVED;
  41.       PINT     PIE10_RESERVED;
  42.       PINT     PIE11_RESERVED;
  43.       PINT     PIE12_RESERVED;
  44.       PINT     PIE13_RESERVED;
  45. // Non-Peripheral Interrupts:
  46.       PINT     XINT13;    // XINT13
  47.       PINT     TINT2;     // CPU-Timer2
  48.       PINT     DATALOG;   // Datalogging interrupt
  49.       PINT     RTOSINT;   // RTOS interrupt
  50.       PINT     EMUINT;    // Emulation interrupt
  51.       PINT     XNMI;      // Non-maskable interrupt
  52.       PINT     ILLEGAL;   // Illegal operation TRAP
  53.       PINT     USER0;     // User Defined trap 0
  54.       PINT     USER1;     // User Defined trap 1
  55.       PINT     USER2;     // User Defined trap 2
  56.       PINT     USER3;     // User Defined trap 3
  57.       PINT     USER4;     // User Defined trap 4
  58.       PINT     USER5;     // User Defined trap 5
  59.       PINT     USER6;     // User Defined trap 6
  60.       PINT     USER7;     // User Defined trap 7
  61.       PINT     USER8;     // User Defined trap 8
  62.       PINT     USER9;     // User Defined trap 9
  63.       PINT     USER10;    // User Defined trap 10
  64.       PINT     USER11;    // User Defined trap 11
  65.       
  66. // Group 1 PIE Peripheral Vectors:
  67.       PINT     PDPINTA;   // EV-A
  68.       PINT     PDPINTB;   // EV-B
  69.       PINT     rsvd1_3;
  70.       PINT     XINT1;     
  71.       PINT     XINT2;
  72.       PINT     ADCINT;    // ADC
  73.       PINT     TINT0;     // Timer 0
  74.       PINT     WAKEINT;   // WD
  75.            
  76. // Group 2 PIE Peripheral Vectors:
  77.       PINT     CMP1INT;   // EV-A
  78.       PINT     CMP2INT;   // EV-A
  79.       PINT     CMP3INT;   // EV-A
  80.       PINT     T1PINT;    // EV-A
  81.       PINT     T1CINT;    // EV-A
  82.       PINT     T1UFINT;   // EV-A
  83.       PINT     T1OFINT;   // EV-A
  84.       PINT     rsvd2_8;
  85.       
  86. // Group 3 PIE Peripheral Vectors:
  87.       PINT     T2PINT;    // EV-A
  88.       PINT     T2CINT;    // EV-A
  89.       PINT     T2UFINT;   // EV-A
  90.       PINT     T2OFINT;   // EV-A
  91.       PINT     CAPINT1;   // EV-A
  92.       PINT     CAPINT2;   // EV-A
  93.       PINT     CAPINT3;   // EV-A
  94.       PINT     rsvd3_8;
  95.       
  96. // Group 4 PIE Peripheral Vectors:
  97.       PINT     CMP4INT;   // EV-B
  98.       PINT     CMP5INT;   // EV-B
  99.       PINT     CMP6INT;   // EV-B
  100.       PINT     T3PINT;    // EV-B
  101.       PINT     T3CINT;    // EV-B
  102.       PINT     T3UFINT;   // EV-B
  103.       PINT     T3OFINT;   // EV-B
  104.       PINT     rsvd4_8;      
  105.      
  106. // Group 5 PIE Peripheral Vectors:
  107.       PINT     T4PINT;    // EV-B
  108.       PINT     T4CINT;    // EV-B
  109.       PINT     T4UFINT;   // EV-B
  110.       PINT     T4OFINT;   // EV-B
  111.       PINT     CAPINT4;   // EV-B
  112.       PINT     CAPINT5;   // EV-B
  113.       PINT     CAPINT6;   // EV-B
  114.       PINT     rsvd5_8;      
  115. // Group 6 PIE Peripheral Vectors:
  116.       PINT     SPIRXINTA; // SPI-A
  117.       PINT     SPITXINTA; // SPI-A
  118.       PINT     rsvd6_3;
  119.       PINT     rsvd6_4;
  120.       PINT     MRINTA;    // McBSP-A
  121.       PINT     MXINTA;    // McBSP-A
  122.       PINT     rsvd6_7;
  123.       PINT     rsvd6_8;
  124.       
  125. // Group 7 PIE Peripheral Vectors:
  126.       PINT     rsvd7_1;
  127.       PINT     rsvd7_2;
  128.       PINT     rsvd7_3;
  129.       PINT     rsvd7_4;
  130.       PINT     rsvd7_5;
  131.       PINT     rsvd7_6;
  132.       PINT     rsvd7_7;
  133.       PINT     rsvd7_8;
  134. // Group 8 PIE Peripheral Vectors:
  135.       PINT     rsvd8_1;
  136.       PINT     rsvd8_2;
  137.       PINT     rsvd8_3;
  138.       PINT     rsvd8_4;
  139.       PINT     rsvd8_5;
  140.       PINT     rsvd8_6;
  141.       PINT     rsvd8_7;
  142.       PINT     rsvd8_8; 
  143. // Group 9 PIE Peripheral Vectors:   
  144.       PINT     RXAINT;    // SCI-A
  145.       PINT     TXAINT;    // SCI-A
  146.       PINT     RXBINT;    // SCI-B
  147.       PINT     TXBINT;    // SCI-B
  148.       PINT     ECAN0INTA; // eCAN
  149.       PINT     ECAN1INTA; // eCAN
  150.       PINT     rsvd9_7;
  151.       PINT     rsvd9_8;
  152. // Group 10 PIE Peripheral Vectors:
  153.       PINT     rsvd10_1;
  154.       PINT     rsvd10_2;
  155.       PINT     rsvd10_3;
  156.       PINT     rsvd10_4;
  157.       PINT     rsvd10_5;
  158.       PINT     rsvd10_6;
  159.       PINT     rsvd10_7;
  160.       PINT     rsvd10_8;
  161.             
  162. // Group 11 PIE Peripheral Vectors:
  163.       PINT     rsvd11_1;
  164.       PINT     rsvd11_2;
  165.       PINT     rsvd11_3;
  166.       PINT     rsvd11_4;
  167.       PINT     rsvd11_5;
  168.       PINT     rsvd11_6;
  169.       PINT     rsvd11_7;
  170.       PINT     rsvd11_8;
  171. // Group 12 PIE Peripheral Vectors:
  172.       PINT     rsvd12_1;
  173.       PINT     rsvd12_2;
  174.       PINT     rsvd12_3;
  175.       PINT     rsvd12_4;
  176.       PINT     rsvd12_5;
  177.       PINT     rsvd12_6;
  178.       PINT     rsvd12_7;
  179.       PINT     rsvd12_8;
  180. };
  181. 然后在使我们在.cmd文件中定义的表有以上属性:
  182. extern struct PIE_VECT_TABLE PieVectTable;(在.h文件中)
  183. 4.初始化该表(在.c文件中)使之能够为主程序所使用:
  184. const struct PIE_VECT_TABLE PieVectTableInit = {
  185.       PIE_RESERVED,  // Reserved space
  186.       PIE_RESERVED,   
  187.       PIE_RESERVED,   
  188.       PIE_RESERVED,   
  189.       PIE_RESERVED,   
  190.       PIE_RESERVED,   
  191.       PIE_RESERVED,   
  192.       PIE_RESERVED,   
  193.       PIE_RESERVED,   
  194.       PIE_RESERVED,   
  195.       PIE_RESERVED,   
  196.       PIE_RESERVED,   
  197.       PIE_RESERVED,   
  198. // Non-Peripheral Interrupts
  199.       INT13_ISR,     // XINT13 or CPU-Timer 1
  200.       INT14_ISR,     // CPU-Timer2
  201.       DATALOG_ISR,   // Datalogging interrupt
  202.       RTOSINT_ISR,   // RTOS interrupt
  203.       EMUINT_ISR,    // Emulation interrupt
  204.       NMI_ISR,       // Non-maskable interrupt
  205.       ILLEGAL_ISR,   // Illegal operation TRAP
  206.       USER0_ISR,     // User Defined trap 0
  207.       USER1_ISR,     // User Defined trap 1
  208.       USER2_ISR,     // User Defined trap 2
  209.       USER3_ISR,     // User Defined trap 3
  210.       USER4_ISR,     // User Defined trap 4
  211.       USER5_ISR,     // User Defined trap 5
  212.       USER6_ISR,     // User Defined trap 6
  213.       USER7_ISR,     // User Defined trap 7
  214.       USER8_ISR,     // User Defined trap 8
  215.       USER9_ISR,     // User Defined trap 9
  216.       USER10_ISR,    // User Defined trap 10
  217.       USER11_ISR,    // User Defined trap 11
  218. // Group 1 PIE Vectors
  219.       PDPINTA_ISR,   // EV-A
  220.       PDPINTB_ISR,   // EV-B
  221.       rsvd_ISR,
  222.       XINT1_ISR,     
  223.       XINT2_ISR,
  224.       ADCINT_ISR,    // ADC
  225.       TINT0_ISR,     // Timer 0
  226.       WAKEINT_ISR,   // WD
  227. // Group 2 PIE Vectors
  228.       CMP1INT_ISR,   // EV-A
  229.       CMP2INT_ISR,   // EV-A
  230.       CMP3INT_ISR,   // EV-A
  231.       T1PINT_ISR,    // EV-A
  232.       T1CINT_ISR,    // EV-A
  233.       T1UFINT_ISR,   // EV-A
  234.       T1OFINT_ISR,   // EV-A
  235.       rsvd_ISR,
  236.       
  237. // Group 3 PIE Vectors
  238.       T2PINT_ISR,    // EV-A
  239.       T2CINT_ISR,    // EV-A
  240.       T2UFINT_ISR,   // EV-A
  241.       T2OFINT_ISR,   // EV-A
  242.       CAPINT1_ISR,   // EV-A
  243.       CAPINT2_ISR,   // EV-A
  244.       CAPINT3_ISR,   // EV-A
  245.       rsvd_ISR,
  246.       
  247. // Group 4 PIE Vectors
  248.       CMP4INT_ISR,   // EV-B
  249.       CMP5INT_ISR,   // EV-B
  250.       CMP6INT_ISR,   // EV-B
  251.       T3PINT_ISR,    // EV-B
  252.       T3CINT_ISR,    // EV-B
  253.       T3UFINT_ISR,   // EV-B
  254.       T3OFINT_ISR,   // EV-B
  255.       rsvd_ISR,      
  256.      
  257. // Group 5 PIE Vectors
  258.       T4PINT_ISR,    // EV-B
  259.       T4CINT_ISR,    // EV-B
  260.       T4UFINT_ISR,   // EV-B
  261.       T4OFINT_ISR,   // EV-B
  262.       CAPINT4_ISR,   // EV-B
  263.       CAPINT5_ISR,   // EV-B
  264.       CAPINT6_ISR,   // EV-B
  265.       rsvd_ISR,      
  266. // Group 6 PIE Vectors
  267.       SPIRXINTA_ISR,   // SPI-A
  268.       SPITXINTA_ISR,   // SPI-A
  269.       rsvd_ISR,
  270.       rsvd_ISR,
  271.       MRINTA_ISR,    // McBSP-A
  272.       MXINTA_ISR,    // McBSP-A
  273.       rsvd_ISR,
  274.       rsvd_ISR,
  275.       
  276. // Group 7 PIE Vectors
  277.       rsvd_ISR,   
  278.       rsvd_ISR,   
  279.       rsvd_ISR,   
  280.       rsvd_ISR,   
  281.       rsvd_ISR,   
  282.       rsvd_ISR,   
  283.       rsvd_ISR,   
  284.       rsvd_ISR,   
  285. // Group 8 PIE Vectors
  286.       rsvd_ISR,   
  287.       rsvd_ISR,   
  288.       rsvd_ISR,   
  289.       rsvd_ISR,   
  290.       rsvd_ISR,   
  291.       rsvd_ISR,   
  292.       rsvd_ISR,   
  293.       rsvd_ISR,   
  294.       
  295. // Group 9 PIE Vectors     
  296.       SCIRXINTA_ISR, // SCI-A
  297.       SCITXINTA_ISR, // SCI-A
  298.       SCIRXINTB_ISR, // SCI-B
  299.       SCITXINTB_ISR, // SCI-B
  300.       ECAN0INTA_ISR, // eCAN
  301.       ECAN1INTA_ISR, // eCAN
  302.       rsvd_ISR,   
  303.       rsvd_ISR,   
  304.       
  305. // Group 10 PIE Vectors
  306.       rsvd_ISR,   
  307.       rsvd_ISR,   
  308.       rsvd_ISR,   
  309.       rsvd_ISR,   
  310.       rsvd_ISR,   
  311.       rsvd_ISR,   
  312.       rsvd_ISR,   
  313.       rsvd_ISR,   
  314.             
  315. // Group 11 PIE Vectors
  316.       rsvd_ISR,   
  317.       rsvd_ISR,   
  318.       rsvd_ISR,   
  319.       rsvd_ISR,   
  320.       rsvd_ISR,   
  321.       rsvd_ISR,   
  322.       rsvd_ISR,   
  323.       rsvd_ISR,   
  324. // Group 12 PIE Vectors
  325.       rsvd_ISR,   
  326.       rsvd_ISR,   
  327.       rsvd_ISR,   
  328.       rsvd_ISR,   
  329.       rsvd_ISR,   
  330.       rsvd_ISR,   
  331.       rsvd_ISR,   
  332.       rsvd_ISR,   
  333. };
  334. //---------------------------------------------------------------------------
  335. // InitPieVectTable: 
  336. //---------------------------------------------------------------------------
  337. // This function initializes the PIE vector table to a known state.
  338. // This function must be executed after boot time.
  339. //
  340. void InitPieVectTable(void)
  341. {
  342. int16 i;
  343. Uint32 *Source = (void *) &PieVectTableInit;
  344. Uint32 *Dest = (void *) &PieVectTable;
  345. EALLOW;
  346. for(i=0; i < 128; i++)
  347. *Dest++ = *Source++;
  348. EDIS;
  349. // Enable the PIE Vector Table
  350. PieCtrl.PIECRTL.bit.ENPIE = 1;
  351. }
  352. 5.中断服务程序:
  353. 让以上的数值指向你所要的服务程序,例如:
  354. PieVectTable.TINT2 = &ISRTimer2;
  355. 那么,ISRTimer2也就成了中断服务程序,
  356. ×××切记:一定要在主程序的开始先声明该程序:
  357. interrupt void ISRTimer2(void);
  358. .............
  359. .............
  360. 然后按照您的需要编制该程序:
  361. interrupt void ISRTimer2(void)
  362. {
  363. CpuTimer2.InterruptCount++;
  364. }