参考自《安富莱STM32-V4开发板RTX教程》
延迟函数
- os_dly_wait函数
- os_itv_set函数
- os_itv_wait函数
- os_time_get函数
os_dly_wait延迟函数
函数 os_dly_wait 用于任务的延迟.参数 delay_time 用于设置延迟的时钟节拍个数,范围 1-0xFFFE。
注意:同一个任务中 os_dly_wait 和 os_itv_wait 不能混合调用,只能选择其中一个。
os_itv_set延迟函数
函数 os_itv_set 用于设置周期性延迟的时间间隔,此函数必须配合 os_itv_wait 函数一起使用。用户调用函数 os_itv_set 设置了周期性时间延迟的时间间隔后,然后调用函数 os_itv_wait 函数等待时间到。
参数 interval_time 用于设置周期性延迟的时间间隔,单位时钟节拍数,参数范围 1-0x7FFF。
os_itv_wait延迟函数
函数 os_itv_wait 函数用于等待周期性延迟时间到,此函数必须配合 os_itv_set 函数一起使用。用户调用函数 os_itv_set 设置了周期性时间延迟的时间间隔后,然后调用函数 os_itv_wait 函数等待时间到。
os_time_get延迟函数
函数 os_time_get 用于获取系统当前运行时钟节拍数。
函数 os_dly_wait 和 os_itv_wait 的区别
函数 os_dly_wait 实现的是周期性延迟,而函数 os_itv_wait 实现的是相对性延迟。
举例:
运行条件:
有一个 bsp_KeyScan 函数,这个函数处理时间大概耗时 2ms。 有两个任务,一个任务 Task1 是用的 os_dly_wait 延迟,延迟 10ms,另一个任务 Task2 是用的os_itv_wait 延迟,延迟 10ms。
不考虑任务被抢占而造成的影响。
实际运行过程效果:
Task1:
bsp_KeyScan+ os_dly_wait(10) ---> bsp_KeyScan + os_dly_wait(10)
|----2ms + 10ms 为一个周期------| |----2ms + 10ms 为一个周期----|
这个就是相对性的含义 。
Task2:
bsp_KeyScan + os_itv_wait ------> bsp_KeyScan + os_itv_wait
|----10ms 为一个周期(2ms 包含在 10ms 内)---| |----10ms 为一个周期------|
这就是周期性的含义。
标签:函数,V4,延迟,itv,dly,随笔,os,RTX,wait
From: https://www.cnblogs.com/yinsua/p/18586316