OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 7249|回复: 8

关于mini板ucosii里的延时函数问题 求解释!

[复制链接]

86

主题

417

帖子

0

精华

高级会员

Rank: 4

积分
781
金钱
781
注册时间
2013-2-20
在线时间
0 小时
发表于 2013-9-29 17:31:31 | 显示全部楼层 |阅读模式
原子老师 是把ucosii里的延时函数OSTimeDlyHMSM(INT8U hours, INT8U minutes, INT8U seconds, INT16U ms) 的任务调度功能整到void delay_us(u32 nus)函数里去了。我想问下 这是不是就导致ucosii任务里的函数只要用到了delay_us(u32 nus)函数就会发生任务调度啊?有时候像一些和时序有关的延时 本来是不需要发生任务调度 但用了delay_us(u32 nus)后 也会发生任务调度,这样貌似不太好吧?所以我还是想 不要把任务调度的功能整到delay_us(u32 nus)里好些吧,但不晓得怎么修改。求助。。。
乐于思考,敢于请教;问人不累,诲人不倦!本人CSDN博客:http://blog.csdn.net/dcx1205 学习嵌入式的同学不要错过啊!
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

38

主题

2061

帖子

6

精华

论坛大神

Rank: 7Rank: 7Rank: 7

积分
3273
金钱
3273
注册时间
2012-1-16
在线时间
37 小时
发表于 2013-9-30 00:37:21 | 显示全部楼层
delay_us只是普通延时方式,禁止的任务调度的,delay_ms可以发生任务调度。
站在巨人的肩膀上不断的前进。。。
回复 支持 反对

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165540
金钱
165540
注册时间
2010-12-1
在线时间
2117 小时
发表于 2013-9-30 04:17:02 | 显示全部楼层
回复【楼主位】可乐虎:
---------------------------------
我有判断时间长短的啊,时间长,才调用os的延时函数,才会产生调度。
而时间短,则不会,请仔细看代码!
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复 支持 反对

使用道具 举报

4

主题

37

帖子

0

精华

初级会员

Rank: 2

积分
73
金钱
73
注册时间
2013-9-30
在线时间
0 小时
发表于 2013-9-30 16:23:34 | 显示全部楼层

需要延时的时间超过ucos的最少时间周期以后就会使用OSTimeDly()来进行延时以及调度
好好学习,天天向上
回复 支持 反对

使用道具 举报

5

主题

45

帖子

0

精华

初级会员

Rank: 2

积分
158
金钱
158
注册时间
2012-8-31
在线时间
15 小时
发表于 2013-9-30 16:39:34 | 显示全部楼层
回复的好,我也正有此疑问。豁然开朗
回复 支持 反对

使用道具 举报

86

主题

417

帖子

0

精华

高级会员

Rank: 4

积分
781
金钱
781
注册时间
2013-2-20
在线时间
0 小时
 楼主| 发表于 2013-9-30 17:47:29 | 显示全部楼层
回复【3楼】正点原子:
---------------------------------
回复【4楼】人民币的幻想:
---------------------------------
嗯 谢谢二位!
乐于思考,敢于请教;问人不累,诲人不倦!本人CSDN博客:http://blog.csdn.net/dcx1205 学习嵌入式的同学不要错过啊!
回复 支持 反对

使用道具 举报

86

主题

417

帖子

0

精华

高级会员

Rank: 4

积分
781
金钱
781
注册时间
2013-2-20
在线时间
0 小时
 楼主| 发表于 2013-10-1 18:03:05 | 显示全部楼层
回复【4楼】人民币的幻想:
---------------------------------
我的ucosii的时间片是10ms,为什么我用下面的延时方式还是会产生任务调度??

void NoOS_delay_ms(u16 nms)
{
    while (nms--)
    {
        delay_ms(1); //小于os的时间片(10ms)
    }       
}

我原以为当OS时间片大于1ms时,此延时不会进行OS任务调度

乐于思考,敢于请教;问人不累,诲人不倦!本人CSDN博客:http://blog.csdn.net/dcx1205 学习嵌入式的同学不要错过啊!
回复 支持 反对

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165540
金钱
165540
注册时间
2010-12-1
在线时间
2117 小时
发表于 2013-10-3 23:37:21 | 显示全部楼层
回复【7楼】可乐虎:
---------------------------------
因为每次都是小于10ms,不足以引起调度。
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复 支持 反对

使用道具 举报

86

主题

417

帖子

0

精华

高级会员

Rank: 4

积分
781
金钱
781
注册时间
2013-2-20
在线时间
0 小时
 楼主| 发表于 2013-10-5 18:52:35 | 显示全部楼层
回复【7楼】可乐虎:
---------------------------------
我错了 
void NoOS_delay_ms(u16 nms) 

    while (nms--) 
    { 
        delay_ms(1); //小于os的时间片(10ms) 
    }        
}
这个函数是不能引起任务调度的。原来的可能是因为任务其它函数里有能引起调度的延时
乐于思考,敢于请教;问人不累,诲人不倦!本人CSDN博客:http://blog.csdn.net/dcx1205 学习嵌入式的同学不要错过啊!
回复 支持 反对

使用道具 举报

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

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-7-11 19:39

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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