#中delay函数_DSP中的DELAY_US ( )函数存放在FLASH下执行在RAM中的方法55

01d85f97e6ce8f02fdd407b19cef88ed.gif

DSP程序为了实现精确的定时,通常使用汇编语言编写的延时函数DSP28x_usDelay(),该函数位于文件DSP281x_usDelay.asm。

为了调用该函数,在Main.c中做了如下声明:

1 extern void DSP28x_usDelay(Uint32 time);

在文件DSP281x_Examples.h中做了如下的宏定义:

1 #define DELAY_US(A) DSP28x_usDelay(((((long double) A * 1000.0L) / (long double)CPU_RATE) - 9.0L) / 5.0L)

从定义很容易推算出,需要延时A微妙就把DELAY_US()的参数设置为A即可。(A*1000/CPU_RATE-9≈A*1000/CPU_RATE,一个函数周期有五个CPU指令时间,每个CPU指令时间为CPURATE)

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

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值