OpenEdv-开源电子网

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

★谁能帮我找到原因,我就给谁发微信红包

[复制链接]

31

主题

140

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
416
金钱
416
注册时间
2016-5-8
在线时间
70 小时
发表于 2016-5-29 21:18:51 | 显示全部楼层 |阅读模式
1金钱
本帖最后由 歪点原孑 于 2016-5-29 21:22 编辑

我的问题是:YouTask为啥不能一直循环运行?什么原因?谁能帮我解决了,我就给谁微信发10元红包。拜托各位大神了!代码压缩包见附件。运行环境是VC6.0
[mw_shl_code=c,true]#include "includes.h"
#include "vc_init.h"                                        //包含VC初始化文件
//-------------------------------------------------------------
#define TASK_STK_SIZE 512  //任务堆栈长度
OS_STK MyTaskStk[TASK_STK_SIZE];//定义任务堆栈区
OS_STK YouTaskStk[TASK_STK_SIZE];
OS_STK HerTaskStk[TASK_STK_SIZE];

INT8U err;
OS_EVENT *Semp;

void MyTask(void *pdata); //声明一个任务
void YouTask(void *pdata);
void HerTask(void *pdata);

/************************主函数*********************************/
void  main (void)
{
        VCInit();      //初始化VC
    OSInit();           //初始化uCOS_II
        //开启定时器线程,20 ticks/s
        timeSetEvent(1000/OS_TICKS_PER_SEC, 0, OSTickISR, 0, TIME_PERIODIC);

        Semp = OSSemCreate(1); //创建信号量,初值设为1

    OSTaskCreate(MyTask,  (void *)0, &MyTaskStk[TASK_STK_SIZE - 1], 1); //创建任务MyTask,优先级为1        
        OSTaskCreate(YouTask, (void *)0, &YouTaskStk[TASK_STK_SIZE -1], 3);//创建任务YouTask,优先级为3
        OSTaskCreate(HerTask, (void *)0, &HerTaskStk[TASK_STK_SIZE -1], 5);//创建任务HerTask,优先级为5
        
    OSStart();          //启动多任务管理        
}

void MyTask(void *pdata)
{
    OSTimeDlyHMSM(0,0,2,0);
        for(;;)
        {
      printf("MyTask:准备请求信号量……\n");
          OSSemPend(Semp,0, &err);
          printf("--------MyTask获得信号量,开始运行啦!--------\n");

      OSSemPost(Semp);//释放信号量
         
      OSTimeDly(40);//等待2s
        }
}

void YouTask(void *pdata)
{
   for(;;)
   {
     printf("YouTask开始运行。\n");

     OSTimeDly(40);//等待2秒
   }
}

void HerTask(void *pdata)
{
for(;;)
{
         OSSemPend(Semp,0,&err);
     printf("HerTask开始抱住资源不放○○○\n");
         while(1);

         OSSemPost(Semp);

     OSTimeDly(40);//延时2秒
}
}[/mw_shl_code]





例5.6.rar

3.41 MB, 下载次数: 248

这是代码

最佳答案

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

呦~~!这不是“u/CSO-II大神”么,怎么也有不会的。。。
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

6

主题

1097

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
3571
金钱
3571
注册时间
2014-12-2
在线时间
365 小时
发表于 2016-5-29 21:18:52 | 显示全部楼层
呦~~!这不是“u/CSO-II大神”么,怎么也有不会的。。。
坚决不用寄存器,拒绝重复造轮子。
回复

使用道具 举报

70

主题

6698

帖子

0

精华

论坛大神

Rank: 7Rank: 7Rank: 7

积分
12692
金钱
12692
注册时间
2012-11-26
在线时间
3711 小时
发表于 2016-5-29 21:23:21 | 显示全部楼层
用了printf  需要字节对齐,并进入临界区   按照这两条去检查
回复

使用道具 举报

31

主题

140

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
416
金钱
416
注册时间
2016-5-8
在线时间
70 小时
 楼主| 发表于 2016-5-29 21:25:10 | 显示全部楼层
jermy_z 发表于 2016-5-29 21:23
用了printf  需要字节对齐,并进入临界区   按照这两条去检查

字节对齐是啥意思啊?小弟不懂呢。
回复

使用道具 举报

70

主题

6698

帖子

0

精华

论坛大神

Rank: 7Rank: 7Rank: 7

积分
12692
金钱
12692
注册时间
2012-11-26
在线时间
3711 小时
发表于 2016-5-29 21:34:09 | 显示全部楼层
歪点原孑 发表于 2016-5-29 21:25
字节对齐是啥意思啊?小弟不懂呢。

堆栈字节对齐 8字节
学无止境
回复

使用道具 举报

70

主题

6698

帖子

0

精华

论坛大神

Rank: 7Rank: 7Rank: 7

积分
12692
金钱
12692
注册时间
2012-11-26
在线时间
3711 小时
发表于 2016-5-29 21:35:12 | 显示全部楼层
哦  你的运行环境是VC   以前没注意,我说的两点是针对单片机的,不过你可以试试了。。。
学无止境
回复

使用道具 举报

117

主题

598

帖子

1

精华

资深版主

Rank: 8Rank: 8

积分
1694
金钱
1694
注册时间
2012-5-10
在线时间
437 小时
发表于 2016-5-31 11:54:47 | 显示全部楼层
你有个while(1);其他任务怎么能运行呢,
这样修改
while(1)
    OSTimeDly(40);//等待2秒
如有技术问题,微信扫头像交流,STM32,JAVA,服务器
回复

使用道具 举报

31

主题

140

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
416
金钱
416
注册时间
2016-5-8
在线时间
70 小时
 楼主| 发表于 2016-5-31 12:13:32 来自手机 | 显示全部楼层
xsx127 发表于 2016-5-31 11:54
你有个while(1);其他任务怎么能运行呢,
这样修改
while(1)

我就是不让他运行的,主要是为了看YouTask能不能运行,即看会不会发生优先级反转的问题
回复

使用道具 举报

117

主题

598

帖子

1

精华

资深版主

Rank: 8Rank: 8

积分
1694
金钱
1694
注册时间
2012-5-10
在线时间
437 小时
发表于 2016-5-31 13:41:51 | 显示全部楼层
歪点原孑 发表于 2016-5-31 12:13
我就是不让他运行的,主要是为了看YouTask能不能运行,即看会不会发生优先级反转的问题

好吧,我重来不玩这些危险模式,稳定,安全
如有技术问题,微信扫头像交流,STM32,JAVA,服务器
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165312
金钱
165312
注册时间
2010-12-1
在线时间
2108 小时
发表于 2016-6-1 21:29:33 | 显示全部楼层
xkwy 发表于 2016-5-31 12:32
呦~~!这不是“u/CSO-II大神”么,怎么也有不会的。。。

啪啪啪
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复

使用道具 举报

31

主题

140

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
416
金钱
416
注册时间
2016-5-8
在线时间
70 小时
 楼主| 发表于 2016-6-3 19:45:51 来自手机 | 显示全部楼层
xkwy 发表于 2016-5-31 12:32
呦~~!这不是“u/CSO-II大神”么,怎么也有不会的。。。

其实我是故意假装不会哒,故意考考你们这些小菜鸟们看看能不能解决这么简单的问题。
回复

使用道具 举报

28

主题

303

帖子

0

精华

高级会员

Rank: 4

积分
541
金钱
541
注册时间
2014-8-14
在线时间
67 小时
发表于 2016-6-3 21:11:14 | 显示全部楼层
歪点原孑 发表于 2016-6-3 19:45
其实我是故意假装不会哒,故意考考你们这些小菜鸟们看看能不能解决这么简单的问题。

那就给出答案吧!
这个世界上还有很多很多的人,但你不认识他们,他们也不属于你的世界。这个世界上还有很多好吃的好玩的好看的东西,可真正属于你的世界其实是很小的,只是你去过的地方吃过的东西和见过的落日,还有会在乎你死活的朋友。”——《龙族》
回复

使用道具 举报

44

主题

128

帖子

1

精华

中级会员

Rank: 3Rank: 3

积分
498
金钱
498
注册时间
2012-9-13
在线时间
14 小时
发表于 2016-6-9 20:26:33 来自手机 | 显示全部楼层
这人兄有意思!!!
回复

使用道具 举报

31

主题

140

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
416
金钱
416
注册时间
2016-5-8
在线时间
70 小时
 楼主| 发表于 2016-6-10 15:48:34 | 显示全部楼层
lgh050706 发表于 2016-6-9 20:26
这人兄有意思!!!

谢谢
回复

使用道具 举报

31

主题

140

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
416
金钱
416
注册时间
2016-5-8
在线时间
70 小时
 楼主| 发表于 2016-6-10 16:14:45 | 显示全部楼层
李少帅 发表于 2016-6-3 21:11
那就给出答案吧!

答案就是任哲这个水货在VC6.0上移植的代码有问题!
回复

使用道具 举报

10

主题

84

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
338
金钱
338
注册时间
2015-1-24
在线时间
55 小时
发表于 2016-6-10 21:38:23 | 显示全部楼层
精彩
回复

使用道具 举报

1

主题

35

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
241
金钱
241
注册时间
2016-1-6
在线时间
33 小时
发表于 2016-6-21 15:08:12 | 显示全部楼层
markmark
回复

使用道具 举报

20

主题

468

帖子

3

精华

金牌会员

Rank: 6Rank: 6

积分
1679
金钱
1679
注册时间
2014-2-25
在线时间
229 小时
发表于 2016-6-21 22:08:22 | 显示全部楼层
真有意思,简直就是周伯通。。。
回复

使用道具 举报

10

主题

146

帖子

0

精华

高级会员

Rank: 4

积分
764
金钱
764
注册时间
2015-12-19
在线时间
99 小时
发表于 2016-9-22 08:41:23 | 显示全部楼层
歪点原孑 发表于 2016-6-3 19:45
其实我是故意假装不会哒,故意考考你们这些小菜鸟们看看能不能解决这么简单的问题。

犀利啊
回复

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2024-11-23 22:29

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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