1、在TINY配置文件中配置
NT_REGBANK 指定制RTX51 Tiny时钟中断使用的寄存器组,默认的是寄存器组1;
INT_CLOCK 指定时钟产生中断前的周期数据,这个值的范围是1000~65535,较小的值产生中断较快。这个值用来计算时钟的重新装载值(65536-INT_CLOCK),缺省值是10000。
TIMESHARING 指定任务在进行Round-robin切换前执行的RTX51 Tiny时钟节拍数。当这个值为0时禁止Round-robin切换,缺省值是5个时钟节拍。Round-robin切换是默认使能的,以下参数用来设定Round-robin切换的时间或禁能Round-robin切换。
INT_CLOCK和TIMESHARING参数,这两个参数决定了每个任务使用时间片的大小:INT_CLOCK是时钟中断使用的周期数,也就是基本时间片;TIMESHARING是每个任务一次使用的时间片数目。两者决定了一个任务一次使用的最大时间片。如假设一个系统中INT_CLOCK设置为10000,即10ms,那么TIMESHARING=1时,一个任务使用的最大时间片是 10ms;TIMESHARING=2时,任务使用最大的时间片是20ms;TIMESHARING=5时,任务使用最大的时间片是50ms;当 TIMESHARING设置为0时,系统就不会进行自动任务切换了,这时需要用os_switch_task函数进行任务切换。这部分功能是RTX51 Tiny 2.0中新增加的。
2、在任务函数中,使用os_wait()函数
os_wait(K_TMO, 100, 0);
第一个参数为等待时间,有三个选项K_SIG(启动信号),K_TMO(超时信号),K_IVL(周期信号)或是组合使用。
第二个参数为等待的滴答时间,设置为10的话就是基准时间片*10,
第三个参数未使用,默认设置为0*/
如下如,任务1是等待100个时钟周期,任务2是等待50个时钟周期。另外INT_CLOCK EQU 10000,所以任务1延迟理论上是100*10000*1us=1s;任务2理论延迟理论上为500ms。
3、实际仿真下
这是为啥,只有0.25s,难道我理解错了???