OpenEdv-开源电子网

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

关于ucosIII任务切换问题

[复制链接]

25

主题

281

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
2504
金钱
2504
注册时间
2015-8-17
在线时间
383 小时
发表于 2016-7-29 17:38:18 | 显示全部楼层 |阅读模式
1金钱
我先贴一下我的两个任务函数任务1的:
任务优先级:4
[mw_shl_code=c,true]void task1_task(volatile void* p_arg)
{
        OS_ERR err;
        p_arg = p_arg;
        while(1)
        {
                ANO_DT_Send_Senser(5,5,5,5,5,5);
                OSTimeDlyHMSM(0,0,0,500,OS_OPT_TIME_HMSM_STRICT,&err);
        }
}[/mw_shl_code]
下面是任务2的:
任务优先级为:5
[mw_shl_code=c,true]void task2_task(volatile void *p_arg)
{
        OS_ERR err;
        p_arg = p_arg;
        while(1)
        {
                ANO_DT_Send_Senser(0,0,(0),(0),(0),(0));
        }
}[/mw_shl_code]
没有用时间片轮转调度,下面是创建任务的代码:
[mw_shl_code=c,true]        OS_CRITICAL_ENTER();//½øèëáù½çÇø′úÂë±£»¤
        /*′′½¨èÎÎñtask1*/
        OSTaskCreate ((OS_TCB        *)&Task1TCB,
                                                                (CPU_CHAR      *)"task1",
                                                                (OS_TASK_PTR    )task1_task,
                                                                (void          *)0,
                                                                (OS_PRIO        )TASK1_TASK_PRIO,
                                                                (CPU_STK       *)TASK1_STK,
                                                                (CPU_STK_SIZE   )TASK1_STK_SIZE/10,
                                                                (CPU_STK_SIZE   )TASK1_STK_SIZE,
                                                                (OS_MSG_QTY     )0,
                                                                (OS_TICK        )0,
                                                                (void          *)0,
                                                                (OS_OPT         )OS_OPT_TASK_STK_CHK | OS_OPT_TASK_STK_CLR,
                                                                (OS_ERR        *)&err);
        /*′′½¨èÎÎñtask2*/
        OSTaskCreate ((OS_TCB        *)&Task2TCB,
                                                                (CPU_CHAR      *)"task2",
                                                                (OS_TASK_PTR    )task2_task,
                                                                (void          *)0,
                                                                (OS_PRIO        )TASK2_TASK_PRIO,
                                                                (CPU_STK       *)TASK2_STK,
                                                                (CPU_STK_SIZE   )TASK2_STK_SIZE/10,
                                                                (CPU_STK_SIZE   )TASK2_STK_SIZE,
                                                                (OS_MSG_QTY     )0,
                                                                (OS_TICK        )0,
                                                                (void          *)0,
                                                                (OS_OPT         )OS_OPT_TASK_STK_CHK | OS_OPT_TASK_STK_CLR,
                                                                (OS_ERR        *)&err);
        OS_CRITICAL_EXIT();//íË3öáù½çÇø′úÂë±£»¤[/mw_shl_code]

下面是我用上位机收到的波形:
微信截图_20160729172659.png
我的问题是:为什么会出现两个波峰,不是应该在任务1切换出去,到任务2的时候就会在任务2中死循环吗?为什么还会有任务1的在执行?

做事的原则:
1.每个问题重复三遍、研究三遍后再提问,直接得到答案的人什么都没学会。
2.做事要有始有终,感谢那些帮助自己解决问题的人,把解决的方法总结起来。
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

88

主题

7377

帖子

5

精华

资深版主

Rank: 8Rank: 8

积分
14980
金钱
14980
注册时间
2013-11-13
在线时间
1823 小时
发表于 2016-7-29 18:08:14 | 显示全部楼层
说明在其他地方发生了任务切换,滴答定时器中断服务函数会触发中断级任务切换。
回复

使用道具 举报

25

主题

281

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
2504
金钱
2504
注册时间
2015-8-17
在线时间
383 小时
 楼主| 发表于 2016-7-29 22:38:27 | 显示全部楼层
zuozhongkai 发表于 2016-7-29 18:08
说明在其他地方发生了任务切换,滴答定时器中断服务函数会触发中断级任务切换。

那如果我把任务1的延时任务切换去换,那会卡死在任务1吗?
做事的原则:
1.每个问题重复三遍、研究三遍后再提问,直接得到答案的人什么都没学会。
2.做事要有始有终,感谢那些帮助自己解决问题的人,把解决的方法总结起来。
回复

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-6-8 19:26

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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