|
#define DELAY_US(A) DSP28x_usDelay(((((long double) A * 1000.0L) / (long double)CPU_RATE) - 9.0L) / 5.0L)
.def _DSP28x_usDelay
.sect "ramfuncs"
.global __DSP28x_usDelay
_DSP28x_usDelay:
SUB ACC,#1
BF _DSP28x_usDelay,GEQ ;; Loop if ACC >= 0
LRETR
放于工程的source中;
2,在MOTOR.H文件中定义
#define CPU_RATE 6.667L // for a 150MHz CPU clock speed (SYSCLKOUT)
#define DELAY_US(A) DSP28x_usDelay(((((long double) A * 1000.0L) / (long double)CPU_RATE) - 9.0L) / 5.0L)
3,在GlobalPrototypes.h中定义
extern void DSP28x_usDelay(Uint32 Count);
4, 在程序中直接调用DELAY_US(A),例如 DELAY_US(1000L);,表示延迟1ms 。
#define DELAY_US(A) DSP28x_usDelay(((((long double) A * 1000.0L) / (long double)CPU_RATE) - 9.0L) / 5.0L)
这里的这个运算到底是为什么这么弄,实在是看不懂 |
阿莫论坛20周年了!感谢大家的支持与爱护!!
该献的血还是要献的。你不献他不献。难道让我去献? --- 出自坛友:lovejp1981
|