嵌入式实时操作系统uc/OS-ll中中断如果将头文件OS_CFG.H中的宏OS_TICKS_PER_SEC的值修改为200后,任务TASK1中的延时时间仍是注释中要求的时间吗?若不是,怎样修改才能使任务TASK1中的延时时间与注释中要求的时间一致?
时间: 2024-02-01 07:14:20 浏览: 68
μC/OS-II实时操作系统中任务延时的研究与改进
如果将头文件OS_CFG.H中的宏OS_TICKS_PER_SEC的值修改为200,那么每秒钟会产生200个时钟节拍(tick),也就是每个时钟节拍的时间间隔会变为5ms。因此,任务TASK1中的延时时间不再是注释中要求的时间。
如果要使任务TASK1中的延时时间与注释中要求的时间一致,需要将任务中的延时时间从原来的20个时钟节拍修改为40个时钟节拍。这是因为原来的延时时间是20 * 10ms = 200ms,而现在每个时钟节拍的时间间隔变为5ms,因此需要延时40个时钟节拍才能得到相同的延时时间,即40 * 5ms = 200ms。
修改后的任务代码如下:
```c
void Task1(void *p_arg)
{
while (1) {
// 40个时钟节拍,延时200ms
OSTimeDly(40);
printf("Task1 is running\n");
}
}
```
需要注意的是,在修改了OS_TICKS_PER_SEC的值后,所有使用了延时函数的任务都需要相应地修改延时时间才能保持原来的延时效果。
阅读全文