您的当前位置:首页正文

DSP2833x_CpuTimers

2023-04-04 来源:客趣旅游网


DSP2833x_CpuTimers

// TI File $Revision: /main/3 $

// Checkin $Date: March 16, 2007 08:37:30 $

//###########################################################################

//

// FILE: DSP2833x_CpuTimers.c

//

// TITLE: CPU 32-bit Timers Initialization & Support Functions.

//

// NOTES: CpuTimer1 and CpuTimer2 are reserved for use with DSP BIOS and

// other realtime operating systems.

//

// Do not use these two timers in your application if you ever plan

// on integrating DSP-BIOS or another realtime OS.

//

//

//###########################################################################

// $TI Release: DSP2833x Header Files V1.01 $

// $Release Date: September 26, 2007 $

//###########################################################################

#include \"DSP2833x_Device.h\" // Headerfile Include File

#include \"DSP2833x_Examples.h\" // Examples Include File

struct CPUTIMER_V ARS CpuTimer0;

// CpuTimer 1 and CpuTimer2 are used by DSP BIOS & other RTOS. Comment out if using DSP BIOS or other RTOS.

struct CPUTIMER_V ARS CpuTimer1;

struct CPUTIMER_V ARS CpuTimer2;

//---------------------------------------------------------------------------

// InitCpuTimers:

//---------------------------------------------------------------------------

// This function initializes all three CPU timers to a known state.

//

void InitCpuTimers(void)

{

// CPU Timer 0

// Initialize address pointers to respective timer registers:

CpuTimer0.RegsAddr = &CpuTimer0Regs

// Initialize timer period to maximum:

CpuTimer0Regs.PRD.all = 0xFFFFFFFF;

// Initialize pre-scale counter to divide by 1 (SYSCLKOUT):

CpuTimer0Regs.TPR.all = 0;

CpuTimer0Regs.TPRH.all = 0;

// Make sure timer is stopped:

CpuTimer0Regs.TCR.bit.TSS = 1;

// Reload all counter register with period value:

CpuTimer0Regs.TCR.bit.TRB = 1;

// Reset interrupt counters:

CpuTimer0.InterruptCount = 0;

// CpuTimer 1 and CpuTimer2 are reserved for DSP BIOS & other RTOS // Do not use these two timers if you ever plan on integrating

// DSP-BIOS or another realtime OS.

//

// Initialize address pointers to respective timer registers:

CpuTimer1.RegsAddr = &CpuTimer1Regs

CpuTimer2.RegsAddr = &CpuTimer2Regs

// Initialize timer period to maximum:

CpuTimer1Regs.PRD.all = 0xFFFFFFFF;

CpuTimer2Regs.PRD.all = 0xFFFFFFFF;

// Initialize pre-scale counter to divide by 1 (SYSCLKOUT):

CpuTimer1Regs.TPR.all = 0;

CpuTimer1Regs.TPRH.all = 0;

CpuTimer2Regs.TPR.all = 0;

CpuTimer2Regs.TPRH.all = 0;

// Make sure timers are stopped:

CpuTimer1Regs.TCR.bit.TSS = 1;

CpuTimer2Regs.TCR.bit.TSS = 1;

// Reload all counter register with period value:

CpuTimer1Regs.TCR.bit.TRB = 1;

CpuTimer2Regs.TCR.bit.TRB = 1;

// Reset interrupt counters:

CpuTimer1.InterruptCount = 0;

CpuTimer2.InterruptCount = 0;

}

//---------------------------------------------------------------------------

// ConfigCpuTimer:

//---------------------------------------------------------------------------

// This function initializes the selected timer to the period specified

// by the \"Freq\" and \"Period\" parameters. The \"Freq\" is entered as \"MHz\" // and the period in \"uSeconds\". The timer is held in the stopped state

// after configuration.

//

void ConfigCpuTimer(struct CPUTIMER_V ARS *Timer, float Freq, float Period)

{

Uint32 temp;

// Initialize timer period:

Timer->CPUFreqInMHz = Freq;

Timer->PeriodInUSec = Period;

temp = (long) (Freq * Period);

Timer->RegsAddr->PRD.all = temp;

// Set pre-scale counter to divide by 1 (SYSCLKOUT):

Timer->RegsAddr->TPR.all = 0;

Timer->RegsAddr->TPRH.all = 0;

// Initialize timer control register:

Timer->RegsAddr->TCR.bit.TSS = 1; // 1 = Stop timer, 0 = Start/Restart Timer

Timer->RegsAddr->TCR.bit.TRB = 1; // 1 = reload timer

Timer->RegsAddr->TCR.bit.SOFT = 0;

Timer->RegsAddr->TCR.bit.FREE = 0; // Timer Free Run Disabled

Timer->RegsAddr->TCR.bit.TIE = 1; // 0 = Disable/ 1 = Enable Timer Interrupt

// Reset interrupt counter:

Timer->InterruptCount = 0;

}

//===================================================================== ======

// End of file.

//===================================================================== ======

因篇幅问题不能全部显示,请点此查看更多更全内容