RTX51-TINY中系统时钟的配置~学习笔记20190424

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,难道我理解错了???

猜你喜欢

转载自blog.csdn.net/qq_20651057/article/details/89493600