本帖最后由 ayb_ice 于 2011-3-25 09:43 编辑
N年前买了本书,仔细研究了一段时间,好久没有搞了,都快忘了
其实没有rtx51 tiny实用,而更没有裸奔高效,
作为学习可以,主要是学习OS的编程思想,那些东西其实用裸奔也很好实现
刚下了源码分析了一下
OS_TICKS_PER_SEC这个定义确实没有起作用,是对的,因为程序根本就没有使用这个宏,这个宏是给用户程序用的
分析如下:
因为系统T0中断中没有重装初值,所以计时周期是65.536周期
OSWait(K_TMO,10);其实等待了65.536*10周期,近似0.5S,周期近似1S
要想达到LZ的目的,必须修改程序
首先使能 EN_USER_TICK_TIMER等于1,然后定义UserTickTimer()函数,在其中重装初值,中断周期为10MS,
那么OS_TICKS_PER_SEC=(1000MS/10MS)=100就有意义了,其实这个宏只是给用户用的,系统并不使用这个宏,更实用的宏应该定义成(假设10MS系统中断,1次)
#define MS /10
#define S *100
OSWait(K_TMO,100MS); // 延时100MS
OSWait(K_TMO,1.5S); // 延时1500MS
|