野火电子论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 6304|回复: 3

[ucos] ucos III的时间管理延时 能当普通延时使用么?

[复制链接]
发表于 2017-8-31 15:56:34 | 显示全部楼层 |阅读模式
看到ucos III 的时间管理中OSTimeDly()   和 OSTimeDlyHMSM()都用作任务的延时,但是能把这两个函数相当于裸机的delay( )来使用么?

例如建立了多个任务,在其中一个任务是IIC读写eeprom的过程(IO口模拟IIC),这里要等待事件,代码段如下:
void delay(uint16_t time)
{
        while(time--);
}

void I2C_Start(void)
{
        I2C_SDA_HIGH;
        I2C_SDA_OUTPUT;
        delay(50);
        I2C_SCL_HIGH;
        I2C_SCL_OUTPUT;
        delay(50);
        I2C_SDA_LOW;
        delay(50);
        I2C_SCL_LOW;
        delay(50);
}

不想在这里死等delay( ),会白白浪费MCU资源,但是又要等IIC电平稳定后才能操作EEPROM,
请问把这段代码移植到ucos III里,这里的 delay() 等待能用 OSTimeDly()之类的替代么?
回复

使用道具 举报

发表于 2017-8-31 18:23:27 | 显示全部楼层
这个IO操作时间很短,延时不过来吧,都是us级的,ucos延时都是ms级的
回复 支持 反对

使用道具 举报

 楼主| 发表于 2017-9-1 11:30:54 | 显示全部楼层
额,us级别的,那只能用while(1)循环了;如果是ms级别的,可以直接用OSTimeDly()   和 OSTimeDlyHMSM(),不是任务也可以使用这两个函数?
回复 支持 反对

使用道具 举报

发表于 2017-10-23 15:05:17 | 显示全部楼层
给我的感觉不能调UCOS里的函数,时间太长了,us级别的延时,还得自己敲
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

联系站长|手机版|野火电子官网|野火淘宝店铺|野火电子论坛 ( 粤ICP备14069197号 ) 大学生ARM嵌入式2群

GMT+8, 2024-5-9 10:00 , Processed in 0.027478 second(s), 23 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表