DSP中的ConfigCpuTimer
来源:互联网 发布:手机图片标注软件 编辑:程序博客网 时间:2024/05/30 07:12
如果你在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 divide 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 act
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
- DSP中的EDMA是什么?
- DSP/BIOS中的SEM
- dsp中的gel文件
- DSP/BIOS中的线程
- DSP/BIOS中的线程
- DSP中的线程(转载)
- DSP中的Mailbox的学习
- DSP编程中的字节对齐
- dsp中的cache回写
- 关于DSP中的动态内存
- DSP中的Mailbox的学习
- TI DSP中的CMD文件
- DSP中的查询与中断
- #pragma DATA_SECTION DSP中的使用
- 关于dsp中的bootmode资料
- DSP编程中的字节对齐
- 【转】DSP/BIOS中的SEM
- [ACM] HDU 3398 String (从坐标0,0走到m,n且不能与y=x-1相交的方法数,整数唯一分解定理)
- Android系统预置flash插件
- 把Fireshell中的sass模块替换为less编译css
- HDOJ 2196 Computer 树的直径
- ubuntu的一些常用命令
- DSP中的ConfigCpuTimer
- iphone下载进度条,显示下载字节数与百分比
- POJ-1008
- vsftp 500及530错误
- 垃圾的软件,垃圾的系统,垃圾的服务
- 安卓ScrollView实现自动滚屏
- 第十一周项目6---3
- 将bitmap修改为灰阶,减小图片大小
- selenium 数据驱动