TI中文支持网
TI专业的中文技术问题搜集分享网站

DSP2812中,如何调用DELAY_US,需要注意什么?需要同时在哪些文件中添加什么语句?

  初学dsp,想要调用dsp自身带的时间延时函数,请各位大神指点一下如何操作,以及需要在工程中添加什么文件等等。

mangui zhang:

在很多程序中都会调用延时程序DELAY_US(A),在文件DSP281x_Examples.h中有如下宏定义:#define DELAY_US(A) DSP28x_usDelay(((((long double) A * 1000.0L) / (long double)CPU_RATE) – 9.0L) / 5.0L)从定义很容易推算出,需要延时A微妙就把DELAY_US()的参数设置为A即可。

在仿真调试的情况下运行程序,延时是较准确的,但是当把程序烧写到flash里运行时,如果程序上不做修改,就会很容易发现延时的时间比你设置的要长(通过延时控制LED灯闪烁,很直观)。这是因为,DSP访问flash时需要等待时间的,而访问RAM时几乎是零等待,所以在使用DELAY_US(A)时要想延时时间准确必须使其在RAM里运行,在程序上需做如下修改:

1、在DSP2833x_usDelay.asm中,有如下代码:

       .def _DSP28x_usDelay       .sect "ramfuncs"

        .global  __DSP28x_usDelay_DSP28x_usDelay:        SUB    ACC,#1        BF     _DSP28x_usDelay,GEQ    ;; Loop if ACC >= 0        LRETR

其中.sect "ramfuncs"语句的作用就是就把用汇编写的函数DSP28x_usDelay定位在ramfuncs段。

  初学dsp,想要调用dsp自身带的时间延时函数,请各位大神指点一下如何操作,以及需要在工程中添加什么文件等等。

xiujing qin:

回复 mangui zhang:

我就是把#define DELAY_US(A) DSP28x_usDelay(((((long double) A * 1000.0L) / (long double)CPU_RATE) – 9.0L) / 5.0L)放在了程序里,可是他显示的有错误啊

  初学dsp,想要调用dsp自身带的时间延时函数,请各位大神指点一下如何操作,以及需要在工程中添加什么文件等等。

xiujing qin:

回复 mangui zhang:

我就是把#define DELAY_US(A) DSP28x_usDelay(((((long double) A * 1000.0L) / (long double)CPU_RATE) – 9.0L) / 5.0L)放在了程序里,可是他显示的有错误啊

  初学dsp,想要调用dsp自身带的时间延时函数,请各位大神指点一下如何操作,以及需要在工程中添加什么文件等等。

mangui zhang:

回复 xiujing qin:

只是宏定义怎么也有错啊    没有加封号吧

http://www.deyisupport.com/question_answer/microcontrollers/c2000/f/56/t/83021.aspx

赞(0)
未经允许不得转载:TI中文支持网 » DSP2812中,如何调用DELAY_US,需要注意什么?需要同时在哪些文件中添加什么语句?
分享到: 更多 (0)