www.pudn.com > PMSM.zip > Example_281xCpuTimer.c, change:2003-09-11,size:4086b


//########################################################################### 
// 
// FILE:    Example_281xCpuTimer.c 
// 
// TITLE:   DSP281x Device Getting Started Program. 
// 
// ASSUMPTIONS: 
// 
//          This program requires the DSP281x V1.00 header files.   
//          As supplied, this project is configured for "boot to H0" operation. 
// 
//          Other then boot mode configuration, no other hardware configuration 
//          is required.    
// 
// DESCRIPTION: 
// 
//          This example configures CPU Timer0 and increments 
//          a counter each time the timer asserts an interrupt. 
//       
//          Watch Variables: 
//                 CpuTimer0.InterruptCount 
// 
//########################################################################### 
// 
//  Ver | dd mmm yyyy | Who  | Description of changes 
// =====|=============|======|=============================================== 
//  1.00| 11 Sep 2003 | L.H. | No change since previous version (v.58 Alpha) 
//########################################################################### 
 
 
#include "DSP281x_Device.h"     // DSP281x Headerfile Include File 
#include "DSP281x_Examples.h"   // DSP281x Examples Include File 
 
// Prototype statements for functions found within this file. 
interrupt void cpu_timer0_isr(void); 
 
void main(void) 
{ 
 
// Step 1. Initialize System Control: 
// PLL, WatchDog, enable Peripheral Clocks 
// This example function is found in the DSP281x_SysCtrl.c file. 
   InitSysCtrl(); 
 
// Step 2. Initalize GPIO:  
// This example function is found in the DSP281x_Gpio.c file and 
// illustrates how to set the GPIO to it's default state. 
// InitGpio();  // Skipped for this example   
 
 
// Step 3. Clear all interrupts and initialize PIE vector table: 
// Disable CPU interrupts  
   DINT; 
 
// Initialize the PIE control registers to their default state. 
// The default state is all PIE interrupts disabled and flags 
// are cleared.   
// This function is found in the DSP281x_PieCtrl.c file. 
   InitPieCtrl(); 
    
// Disable CPU interrupts and clear all CPU interrupt flags: 
   IER = 0x0000; 
   IFR = 0x0000; 
 
// Initialize the PIE vector table with pointers to the shell Interrupt  
// Service Routines (ISR).   
// This will populate the entire table, even if the interrupt 
// is not used in this example.  This is useful for debug purposes. 
// The shell ISR routines are found in DSP281x_DefaultIsr.c. 
// This function is found in DSP281x_PieVect.c. 
   InitPieVectTable(); 
 
// Interrupts that are used in this example are re-mapped to 
// ISR functions found within this file.   
   EALLOW;  // This is needed to write to EALLOW protected registers 
   PieVectTable.TINT0 = &cpu_timer0_isr; 
   EDIS;    // This is needed to disable write to EALLOW protected registers 
 
// Step 4. Initialize all the Device Peripherals: 
// This function is found in DSP281x_InitPeripherals.c 
// InitPeripherals(); // Not required for this example 
   InitCpuTimers();   // For this example, only initialize the Cpu Timers 
 
// Configure CPU-Timer 0 to interrupt every second: 
// 100MHz CPU Freq, 1 second Period (in uSeconds) 
   ConfigCpuTimer(&CpuTimer0, 100, 1000000); 
   StartCpuTimer0(); 
 
// Step 5. User specific code, enable interrupts: 
 
 
// Enable CPU INT1 which is connected to CPU-Timer 0: 
   IER |= M_INT1; 
 
// Enable TINT0 in the PIE: Group 1 interrupt 7 
   PieCtrlRegs.PIEIER1.bit.INTx7 = 1; 
 
// Enable global Interrupts and higher priority real-time debug events: 
   EINT;   // Enable Global interrupt INTM 
   ERTM;   // Enable Global realtime interrupt DBGM 
 
// Step 6. IDLE loop. Just sit and loop forever (optional): 
   for(;;); 
 
}  
 
 
interrupt void cpu_timer0_isr(void) 
{ 
   CpuTimer0.InterruptCount++; 
 
   // Acknowledge this interrupt to receive more interrupts from group 1 
   PieCtrlRegs.PIEACK.all = PIEACK_GROUP1; 
} 
 
//=========================================================================== 
// No more. 
//===========================================================================