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

cc2540 怎么能得到1/1024秒?

cyclingsensor的profile要求的。系统的timer都是1ms

CZ:

OSAL系统的计时单位是1ms,如果你需要其它周期的自定义时间,可以启动一个Timer单独做计时。

Yan:

Hi tony,

给个例子, 如果你用的是32M 的clock, 则每32个"nop" 就是 1 us.

void delayUs(uint16 microSecs)

{ while(microSecs–) { /* 32 NOPs == 1 usecs */ asm("nop"); asm("nop"); asm("nop"); asm("nop"); asm("nop"); asm("nop"); asm("nop"); asm("nop"); asm("nop"); asm("nop"); asm("nop"); asm("nop"); asm("nop"); asm("nop"); asm("nop"); asm("nop"); asm("nop"); asm("nop"); asm("nop"); asm("nop"); asm("nop"); asm("nop"); asm("nop"); asm("nop"); asm("nop"); asm("nop"); asm("nop"); asm("nop"); asm("nop"); asm("nop"); asm("nop"); asm("nop"); }}

tony zhang1:

回复 CZ:

怎么启动呢?我只找到osal timer和hal timer。

cyclingsensor profile里面之所以用1/1024是为了计算方便。比如,sensor用32768的时钟,数32个clock就是1/1024秒,不用做算数运算。

这样我就必须找到系统滴答来计数,但是没找到在哪儿。。。

tony zhang1:

回复 Yan:

谢谢!但是应用场景不是延时,而是要在两个event之间计数,每1/1024秒计数加1,最后结果乘以1024就是两个event发生的时间间隔

tony zhang1:

回复 CZ:

ll_McuPrecisionCount是不是systick的计数器?应该是625us计一次。这样我还得把得到的数据乘以0.64再发送。好别扭

tony zhang1:

回复 Yan:

系统timer就是hal_timer吧?hal_timer.c是空的。。。

赞(0)
未经允许不得转载:TI中文支持网 » cc2540 怎么能得到1/1024秒?
分享到: 更多 (0)