28335做28335浮点运算算需要哪个头文件

DSP28335—&DELAY_US总结
在很多程序中都会调用延时程序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:
_DSP28x_usDelay,GEQ&&&
;; Loop if ACC &= 0
"ramfuncs"语句的作用就是就把用汇编写的函数DSP28x_usDelay定位在ramfuncs段。
2、在工程中添加源文件DSP2833x_MemCopy.c,该文件中的函数void MemCopy(Uint16
*SourceAddr, Uint16* SourceEndAddr, Uint16*
DestAddr),实现把你想复制的代码从装载地址RamfuncsLoadStart—RamfuncsLoadEnd拷贝到RamfuncsRunStart开始的SARAM空间中。
3、在文件DSP2833x_SysCtrl.c开头,通过伪指令定义一个代码段,注意位置一定要放在函数前面(如下图所示)。
4、在main函数中要调用MemCopy函数,注意该函数放置的位置。
5、修改用于烧写的CMD文件
关于这里面语句的解释可以参考博文:
6、注意在头文件DSP281x_GlobalPrototypes.h
别忘做如下声明:
本文原创,如有不正确的地方请指出~O(∩_∩)O谢谢~
除了上面这种方式即通过MemCopy函数复制外,还可以把整个程序代码都复制到RAM里,验证过一个简单的通过延时控制LED灯闪烁的程序。
把整个程序代码都复制到RAM里需要注意一些事项,具体可参考博文:
以上网友发言只代表其个人观点,不代表新浪网的观点或立场。

我要回帖

更多关于 js 浮点运算 的文章

 

随机推荐