OpenEdv-开源电子网

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

UCOS编写任务函数的时候 插入的delay时间长短 如何处理

[复制链接]

50

主题

243

帖子

1

精华

高级会员

Rank: 4

积分
616
金钱
616
注册时间
2014-2-26
在线时间
1 小时
发表于 2014-6-2 15:40:42 | 显示全部楼层 |阅读模式
5金钱

编写任务函数的时候 总是不知道该延时多久 
延时时间长短要考虑哪些东西? 怎么做才能做到既不影响本任务的实时操作 又不至于严重影响其它任务实时响应

实验45 录音机实验.zip

13.24 MB, 下载次数: 477

最佳答案

查看完整内容[请看2#楼]

尽可能大的延时就对了
我是一只摔不死的蚂蚁!
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165225
金钱
165225
注册时间
2010-12-1
在线时间
2107 小时
发表于 2014-6-2 15:40:43 | 显示全部楼层
尽可能大的延时就对了
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复

使用道具 举报

56

主题

289

帖子

0

精华

高级会员

Rank: 4

积分
865
金钱
865
注册时间
2012-11-16
在线时间
65 小时
发表于 2014-6-2 18:09:14 | 显示全部楼层
唉 也有同样的疑惑
回复

使用道具 举报

50

主题

243

帖子

1

精华

高级会员

Rank: 4

积分
616
金钱
616
注册时间
2014-2-26
在线时间
1 小时
 楼主| 发表于 2014-6-2 21:13:33 | 显示全部楼层
回复【3楼】正点原子:
---------------------------------
原子哥帮忙看一下 我在开始任务中创建了如下 三个任务 
其中 录音任务里的延时是delay_ms(20)
触屏任务可以正常工作 
但问题是:
1、LED总是在上电一段时间之后才开始闪烁 大概20s之后
2、录音程序中的按键检测几乎检测不到 但偶尔也会检测到(录音中是检测屏幕是否被按下) 

原子哥 能看出是哪里有问题吗 半天了 我也不知道哪里出错  刚开始学习UCOS 先谢谢了

/*===============================LED==================================================*/
void led_task(void *pdata)
{
u8 t;
while(1)
{
t++;
  delay_ms(200);
  if(t==1)LED0=1;
  if(t==3)
{
t=0;
LED0=0;
}
}
}
/*======================================================================================================*/



/*==================================????????============================================================*/
void touch_task(void *pdata)
{
while(1)
{
tp_dev.scan(0);   
if(tp_dev.sta&TP_PRES_DOWN)
{
  if(tp_dev.x>0&&tp_dev.y<100)
{    
TP_Draw_Big_Point(tp_dev.x,tp_dev.y,BLUE);
delay_ms(2);     
}
}else delay_ms(10); //????°??ü°??????±?ò 
}
}
/*======================================================================================================*/

/*======================================??????·?????====================================================*/
void recorder_task(void *pdata)
{
while(1)
{
recoder_play();
}
}
/*======================================================================================================*/

把如果不创建触屏任务  只有LED和录音任务 则录音能够正常工作 但是LED依然是一段时间之后才开始
我是一只摔不死的蚂蚁!
回复

使用道具 举报

5

主题

29

帖子

0

精华

初级会员

Rank: 2

积分
69
金钱
69
注册时间
2013-3-17
在线时间
0 小时
发表于 2014-6-3 13:00:36 | 显示全部楼层
回复【4楼】_tank_:
---------------------------------
是不是任务优先级给的不对呢
回复

使用道具 举报

50

主题

243

帖子

1

精华

高级会员

Rank: 4

积分
616
金钱
616
注册时间
2014-2-26
在线时间
1 小时
 楼主| 发表于 2014-6-3 19:52:16 | 显示全部楼层
回复【5楼】TXD1216:
---------------------------------
录音的优先级最高 触屏任务(画点)次之 LED最低

整个工程上传了 帮我看看吧 我还是不知道哪里错了 很希望知道我是哪里理解错了

非常感谢
我是一只摔不死的蚂蚁!
回复

使用道具 举报

5

主题

29

帖子

0

精华

初级会员

Rank: 2

积分
69
金钱
69
注册时间
2013-3-17
在线时间
0 小时
发表于 2014-6-3 20:45:29 | 显示全部楼层
回复【6楼】_tank_:
---------------------------------
刚试了下  也是不行  你模块一步步移植上去试试  你的文件系统为什么能创建文件夹 就是打不开呢 求大神
回复

使用道具 举报

50

主题

243

帖子

1

精华

高级会员

Rank: 4

积分
616
金钱
616
注册时间
2014-2-26
在线时间
1 小时
 楼主| 发表于 2014-6-3 20:56:58 | 显示全部楼层
回复【7楼】TXD1216:
---------------------------------
文件系统正常吧 我用没问题的
我是一只摔不死的蚂蚁!
回复

使用道具 举报

50

主题

243

帖子

1

精华

高级会员

Rank: 4

积分
616
金钱
616
注册时间
2014-2-26
在线时间
1 小时
 楼主| 发表于 2014-6-3 21:31:13 | 显示全部楼层
回复【3楼】正点原子:
---------------------------------
站长求助啊 麻烦看一下吧 真的不知道哪里出错
我是一只摔不死的蚂蚁!
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165225
金钱
165225
注册时间
2010-12-1
在线时间
2107 小时
发表于 2014-6-3 22:14:19 | 显示全部楼层
1,
void led_task(void *pdata) 
里面的
u8 t; 
改成: 
u8 t=0; 
2,是不是你的触摸区域不对?
仿真看下吧。
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复

使用道具 举报

50

主题

243

帖子

1

精华

高级会员

Rank: 4

积分
616
金钱
616
注册时间
2014-2-26
在线时间
1 小时
 楼主| 发表于 2014-6-4 00:48:50 | 显示全部楼层
1, 
void led_task(void *pdata)  里面的 
u8 t;  改成:  u8 t=0;
这样之后 LED任务真的就正常了 第一次感受到赋初值的重要性啊

2,忘记了 我还可以仿真的 
仿真结果表明 两个任务都使用TP_Scan() 会出问题 不影响画点 但会影响单击操作的实现 
因为单击操作是在松手后的第一个调用TP_Scan()检测出来 但是松手这一瞬间的事情 很可能跳到另外一个任务中的TP_Scan() 从而发生问题
等到调回本函数的TP_Scan() 之后坐标已经归零了
我是一只摔不死的蚂蚁!
回复

使用道具 举报

28

主题

1489

帖子

0

精华

论坛大神

Rank: 7Rank: 7Rank: 7

积分
1656
金钱
1656
注册时间
2013-7-24
在线时间
1 小时
发表于 2014-6-4 09:02:41 | 显示全部楼层
中间衍生出来的问题就不回答了,只针对题:

任务类调用阻塞式延时,仅适用于周期事务,通常它本身对响应时间不敏感。
例:
外部按键,可采用查询或外部中断。
1.查询间隔20ms,这就是你循环里的延时。
2.中断发出事件,等待该事件的任务会尽快响应。(具有实时性)
于20150522停用该账号:http://www.microstar.club
回复

使用道具 举报

5

主题

29

帖子

0

精华

初级会员

Rank: 2

积分
69
金钱
69
注册时间
2013-3-17
在线时间
0 小时
发表于 2014-6-4 10:53:34 | 显示全部楼层
楼主你用的也是战舰的开发板吗? 为什么我调试的时候文件系统出错呢 ?  好奇怪
回复

使用道具 举报

50

主题

243

帖子

1

精华

高级会员

Rank: 4

积分
616
金钱
616
注册时间
2014-2-26
在线时间
1 小时
 楼主| 发表于 2014-6-4 13:21:16 | 显示全部楼层
回复【13楼】TXD1216:
---------------------------------
是战舰版 对了 我用的 SDIO模式
我是一只摔不死的蚂蚁!
回复

使用道具 举报

5

主题

29

帖子

0

精华

初级会员

Rank: 2

积分
69
金钱
69
注册时间
2013-3-17
在线时间
0 小时
发表于 2014-6-5 15:46:21 | 显示全部楼层
回复【14楼】_tank_:
---------------------------------
我一样的板子  哦 是不是需要跳线呢?   在研究研究
回复

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2024-11-1 12:41

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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