DSP中的ConfigCpuTimer

来源:本站
导读:目前正在解读《DSP中的ConfigCpuTimer》的相关信息,《DSP中的ConfigCpuTimer》是由用户自行发布的知识型内容!下面请观看由(电工技术网 - www.9ddd.net)用户发布《DSP中的ConfigCpuTimer》的详细说明。
简介:如果你在System中的系统时钟倍频后设置为150M的话,Cputimer0定时时间可以这样理解
ConfigCpuTimer(&CpuTimer2, 75, 1000000)中
定时频率为75MHZ(即:1个计时周期计75M个系统时钟), 计时周期为1000000,系统时钟频率150M
则定时时间这样计算
(1/150M)*75MHZ*1000000=500000us(M对应us)=0.5s

如果你在System中的系统时钟倍频后设置为150M的话,Cputimer0定时时间可以这样理解ConfigCpuTimer(&CpuTimer2, 75, 1000000)中

定时频率为75MHZ(即:1个计时周期计75M个系统时钟), 计时周期为1000000,系统时钟频率150M

则定时时间这样计算

(1/150M)*75MHZ*1000000=500000us(M对应us)=0.5s

频率可以自己设置的

DSP的晶振为30M

可以根据自己频率的需要 设置自己想要的值 具体设置在System中

SysCtrlRegs.PLLCR 是用来设置频率的

如果频率需要150M则

SysCtrlRegs.PLLCR=0X0A; //

120M则

SysCtrlRegs.PLLCR=0X08 //

计算公式

频率=30M*SysCtrlRegs.PLLCR/2;

ConfigCpuTimer(&CpuTimer0, 10, 1000000);

/////////////////////////////////////////////////////////////////////////////////////////////////////

void ConfigCpuTimer(struct CPUTIMER_VARS *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 pide by 1 (SYSCLKOUT):

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

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

// Initialize timer control register:

Timer->RegsAddr->TCR.bit.POL = 0; // 0 = Pulse Low

Timer->RegsAddr->TCR.bit.TOG = 0; // 0 = No Toggle, POL bit defines action

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.FRCEN = 0; // Force output enable (not used)

Timer->RegsAddr->TCR.bit.PWIDTH = 7; // 7+1 = 8 SYSCLKOUT cycle pulse width

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

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

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

// Reset interrupt counter:

Timer->InterruptCount = 0;

}///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

由此可知

10的单位为MHz, 1000000的单位为Us。定时器的周期为两者的乘积即10*1000000。

现在的学习板大多数采用30M的晶振,则当系统时钟(SYSCLKOUT)为150M时,定时一秒中断的程序为ConfigCpuTimer(&CpuTimer0, 150, 1000000)。

对于ConfigCpuTimer(&CpuTimer0, NMHz, Nus)来讲,如果设置的频率不是SYSCLKOUT,那么中断时间应是Freq乘以Period(参照上面定时函数的形参),再除以SYSCLKOUT。即:

Time=Freq*Period/SYSCLKOUT

这样可以根据你设置的频率来计算你的定时时间了!

提醒:《DSP中的ConfigCpuTimer》最后刷新时间 2024-03-14 01:10:32,本站为公益型个人网站,仅供个人学习和记录信息,不进行任何商业性质的盈利。如果内容、图片资源失效或内容涉及侵权,请反馈至,我们会及时处理。本站只保证内容的可读性,无法保证真实性,《DSP中的ConfigCpuTimer》该内容的真实性请自行鉴别。