关于DSP配置CMD文件的使用

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了关于DSP配置CMD文件的使用相关的知识,希望对你有一定的参考价值。

参考技术A 配置好主程序的CMD文件,才能将FLASH成功烧录,并且将FLASH中的文件拷贝到RAM中运行。关于CMD文件的配置:

首先在F2812.CMD文件中,可以看到有关于加载FLASH到RAM的内容:

ramfuncs : LOAD = FLASHD,

以及在C文件中调用FLASH 到RAM的函数memcpy,将它放在系统初始化(InitSystem();)之后运行。

InitSystem();

memcpy(&RamfuncsRunStart,

Initflash();

关于ramfuncs,则在系统初始化中定义即可。如:sysctrl.c中

关于DSP28335的CPU 定时器的配置问题

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.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; 能给我解释一下这段程序吗?

参考技术A CPUFreqInMHz是DSP的实际工作频率,这个参数的单位是MHz,
PeriodInUSec是要定时的时间长度,单位是微秒
定时值=定时长度/(CPU的周期)=定时长度×CPU的频率
Timer->RegsAddr->PRD.all=
temp
向定时器周期寄存器赋值
Timer->RegsAddr->TPR.all
=
0;
Timer->RegsAddr->TPRH.all
=
0;
上面两句是配置定时器预定标寄存器,每个定时器源时钟周期TIM(定时器计数器)减一
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
上面这五句是配置定时器控制寄存器,TSS写1,停止定时器;TRB写1,使能定时器重新装载;SOFT=0、FREE=0是配置CPU定时器仿真模式;TIE写1,CPU定时器中断使能。
以上是我的理解,我也是刚学,如有错误,还望高三指点

以上是关于关于DSP配置CMD文件的使用的主要内容,如果未能解决你的问题,请参考以下文章

CCS中cmd文件的编写

关于DSP28335的CPU 定时器的配置问题

DSP中CMD文件

要使“/dev/dsp1”存在,我应该启用哪些配置?

关于TI公司DSP工程调用DELAY_US()进入非法中断问题的解决

DSP28335 中DMA的配置和使用