OSTimeDlyHMSM()是ucos ii里的一个高精度任务延迟函数,允许以时、分、秒、毫秒为单位指定延迟时间,比OSTimeDly()函数提供更加直观的时间控制。
函数原型
void OSTimeDlyHMSM (INT8U hours,
INT8U minutes,
INT8U seconds,
INT16U milliseconds);
参数 hours,延迟的小时数,数据范围:0~99
参数 minutes,延迟的分钟数,数据范围:0~59
参数 seconds,延迟的秒数,数据范围:0~59
参数 milliseconds,延迟的毫秒数,数据范围:0~999
函数特性:
任务挂起,调用该函数的任务将进入等待状态;
系统调度,触发任务调度,让出CPU给其他就绪任务;
时间基准,依赖系统的ticks(OS_TICKS_PER_SEC);
非阻塞,不会阻塞中断或其他任务。
示例:
1、基本延时;
void Task(void *p_arg) {
while (1) {
/* 任务主体代码 */
/* 延时1小时1分1秒1毫秒 */
OSTimeDlyHMSM(1, 1, 1, 1);
/* 延时100毫秒 */
OSTimeDlyHMSM(0, 0, 0, 100);
}
}
2、周期性任务;
void Task(void *p_arg) {
while (1) {
/* 每5秒执行一次 */
OSTimeDlyHMSM(0, 0, 5, 0);
}
}