打印

ucos移植到stm32之后任务调度问题

[复制链接]
1431|5
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
dong130300|  楼主 | 2013-5-23 17:49 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
根据野火的ucos移植到stm32的程序,创建了三个用户任务,一个是Task_Start,优先级是4,一个是led2_task,优先级是5,一个是led3_task,优先级是6,systick的中断周期是10ms,在task_start中创建了led2_task,和led3_task,我让led2_task任务点亮led2,并且发送数据10000次
    while (1)
    {
     int i;
    for(i=0;i<10000;i++)   
     {
        LED2( ON );
                printf("\r\n this is a task_led2 demo \r\n");
     }
        OSTimeDlyHMSM(0, 0,2,0);
        LED2( OFF);
                printf("\r\n this is a task_led2 demo end\r\n");
                OSTimeDlyHMSM(0, 0,2,0);      
               
    }
但是在这10000次的时候肯定是会大于10ms的,那么不是就会进行任务切换吗,找到最高优先级的就绪任务task_start,然后切换到task_start吗,可是为什么他是等led2的10000次完成之后在 OSTimeDlyHMSM(0, 0,2,0);延时的时候才开始任务切换啊

相关帖子

沙发
dong130300|  楼主 | 2013-5-24 15:20 | 只看该作者
各位大神 帮帮忙啊 是我对ucos的理解有误吗

使用特权

评论回复
板凳
dld2| | 2013-5-24 15:34 | 只看该作者
如果task_start优先级最高,那么led2是怎么获得运行权的?

使用特权

评论回复
地板
dong130300|  楼主 | 2013-5-24 15:48 | 只看该作者
在task_start执行之后又延时函数

使用特权

评论回复
5
hwk612167| | 2013-5-25 14:44 | 只看该作者
dong130300 发表于 2013-5-24 15:48
在task_start执行之后又延时函数

这就是关键,延时函数 延时多少呢?
如果LED2运行时,start任务延时时间到了,肯定会任务调度的,当然调度器是开的。

使用特权

评论回复
6
dong130300|  楼主 | 2013-5-25 17:41 | 只看该作者
hwk612167 发表于 2013-5-25 14:44
这就是关键,延时函数 延时多少呢?
如果LED2运行时,start任务延时时间到了,肯定会任务调度的,当然调 ...

明白了 在延时结束之后确实进行了任务调度,我用串口显示结果,在延时1s之后调度到了start_task

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

4

主题

35

帖子

0

粉丝