Example_281xCpuTimer.c
上传用户:qingfan3
上传日期:2014-10-27
资源大小:31439k
文件大小:4k
源码类别:

DSP编程

开发平台:

C/C++

  1. //###########################################################################
  2. //
  3. // FILE:    Example_281xCpuTimer.c
  4. //
  5. // TITLE:   DSP281x Device Getting Started Program.
  6. //
  7. // ASSUMPTIONS:
  8. //
  9. //          This program requires the DSP281x V1.00 header files.  
  10. //          As supplied, this project is configured for "boot to H0" operation.
  11. //
  12. //          Other then boot mode configuration, no other hardware configuration
  13. //          is required.   
  14. //
  15. // DESCRIPTION:
  16. //
  17. //          This example configures CPU Timer0 and increments
  18. //          a counter each time the timer asserts an interrupt.
  19. //      
  20. //          Watch Variables:
  21. //                 CpuTimer0.InterruptCount
  22. //
  23. //###########################################################################
  24. //
  25. //  Ver | dd mmm yyyy | Who  | Description of changes
  26. // =====|=============|======|===============================================
  27. //  1.00| 11 Sep 2003 | L.H. | No change since previous version (v.58 Alpha)
  28. //###########################################################################
  29. #include "DSP281x_Device.h"     // DSP281x Headerfile Include File
  30. #include "DSP281x_Examples.h"   // DSP281x Examples Include File
  31. // Prototype statements for functions found within this file.
  32. interrupt void cpu_timer0_isr(void);
  33. void main(void)
  34. {
  35. // Step 1. Initialize System Control:
  36. // PLL, WatchDog, enable Peripheral Clocks
  37. // This example function is found in the DSP281x_SysCtrl.c file.
  38.    InitSysCtrl();
  39. // Step 2. Initalize GPIO: 
  40. // This example function is found in the DSP281x_Gpio.c file and
  41. // illustrates how to set the GPIO to it's default state.
  42. // InitGpio();  // Skipped for this example  
  43. // Step 3. Clear all interrupts and initialize PIE vector table:
  44. // Disable CPU interrupts 
  45.    DINT;
  46. // Initialize the PIE control registers to their default state.
  47. // The default state is all PIE interrupts disabled and flags
  48. // are cleared.  
  49. // This function is found in the DSP281x_PieCtrl.c file.
  50.    InitPieCtrl();
  51.    
  52. // Disable CPU interrupts and clear all CPU interrupt flags:
  53.    IER = 0x0000;
  54.    IFR = 0x0000;
  55. // Initialize the PIE vector table with pointers to the shell Interrupt 
  56. // Service Routines (ISR).  
  57. // This will populate the entire table, even if the interrupt
  58. // is not used in this example.  This is useful for debug purposes.
  59. // The shell ISR routines are found in DSP281x_DefaultIsr.c.
  60. // This function is found in DSP281x_PieVect.c.
  61.    InitPieVectTable();
  62. // Interrupts that are used in this example are re-mapped to
  63. // ISR functions found within this file.  
  64.    EALLOW;  // This is needed to write to EALLOW protected registers
  65.    PieVectTable.TINT0 = &cpu_timer0_isr;
  66.    EDIS;    // This is needed to disable write to EALLOW protected registers
  67. // Step 4. Initialize all the Device Peripherals:
  68. // This function is found in DSP281x_InitPeripherals.c
  69. // InitPeripherals(); // Not required for this example
  70.    InitCpuTimers();   // For this example, only initialize the Cpu Timers
  71. // Configure CPU-Timer 0 to interrupt every second:
  72. // 100MHz CPU Freq, 1 second Period (in uSeconds)
  73.    ConfigCpuTimer(&CpuTimer0, 100, 1000000);
  74.    StartCpuTimer0();
  75. // Step 5. User specific code, enable interrupts:
  76. // Enable CPU INT1 which is connected to CPU-Timer 0:
  77.    IER |= M_INT1;
  78. // Enable TINT0 in the PIE: Group 1 interrupt 7
  79.    PieCtrlRegs.PIEIER1.bit.INTx7 = 1;
  80. // Enable global Interrupts and higher priority real-time debug events:
  81.    EINT;   // Enable Global interrupt INTM
  82.    ERTM;   // Enable Global realtime interrupt DBGM
  83. // Step 6. IDLE loop. Just sit and loop forever (optional):
  84.    for(;;);
  85. interrupt void cpu_timer0_isr(void)
  86. {
  87.    CpuTimer0.InterruptCount++;
  88.    // Acknowledge this interrupt to receive more interrupts from group 1
  89.    PieCtrlRegs.PIEACK.all = PIEACK_GROUP1;
  90. }
  91. //===========================================================================
  92. // No more.
  93. //===========================================================================