硬汉嵌入式论坛

 找回密码
 立即注册
查看: 2321|回复: 5
收起左侧

[μCOS-III] 刚刚学会移植uCOSIII,遇到点问题

[复制链接]

1

主题

3

回帖

1

积分

新手上路

积分
1
发表于 2017-5-14 22:17:51 | 显示全部楼层 |阅读模式
void led0_task(void *p_arg)                              //led0任务的优先级是5
{
        OS_ERR err;
        p_arg = p_arg;
        while(1)
        {
                LED2_TOGGLE;                                                                                                                                                                         //LED2闪烁
                OSTimeDlyHMSM(0,0,0,500,OS_OPT_TIME_HMSM_STRICT,&err); //延时500ms
        }
}


void led1_task(void *p_arg)                              //led1任务的优先级是4
{
        OS_ERR err;
        p_arg = p_arg;
        while(1)
        {
                calibrate_IMU();                                                                                                                                                //校验
                ANO_DT_Data_Exchange();                                                                                                                        //更新上位机的数据
                OSTimeDlyHMSM(0,0,0,2,OS_OPT_TIME_HMSM_STRICT,&err);  //延时2ms
        }
}

更新上位机数据的任务能正常运行,但是LED闪烁的任务不能运行,我以为是更新上位机的数据任务优先级太高,延时很短,就把任务优先级调换,两个任务就能正常运行。求各位大佬们解释下,为什么LED闪烁不能正常运呢
QQ截图20170514220223.png
QQ截图20170514220631.png
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
107071
QQ
发表于 2017-5-15 00:18:01 | 显示全部楼层
安装如下这种优先级安排的时候
void led1_task(void *p_arg)                              //led1任务的优先级是4
void led0_task(void *p_arg)                              //led0任务的优先级是5

如果led1_task一直在执行,不释放CPU权限的话,任务led0_task是得不到执行的。
回复

使用道具 举报

1

主题

3

回帖

1

积分

新手上路

积分
1
 楼主| 发表于 2017-5-15 08:54:43 | 显示全部楼层
[s:127][s:127]
回复

使用道具 举报

1

主题

3

回帖

1

积分

新手上路

积分
1
 楼主| 发表于 2017-5-15 08:56:46 | 显示全部楼层

回 eric2013 的帖子

eric2013:安装如下这种优先级安排的时候
void led1_task(void *p_arg)                              //led1任务的优先级是4
vo .. (2017-05-15 00:18)
但是我把延时加大之后程序就至运行一次,卡死了
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
107071
QQ
发表于 2017-5-15 10:10:16 | 显示全部楼层

回 mr.von 的帖子

mr.von:但是我把延时加大之后程序就至运行一次,卡死了 (2017-05-15 08:56) 
这样的话,你的led1_takk里面程序的执行太占时间了,得好好优化下。
回复

使用道具 举报

1

主题

3

回帖

1

积分

新手上路

积分
1
 楼主| 发表于 2017-5-15 12:00:30 | 显示全部楼层

回 eric2013 的帖子

eric2013:这样的话,你的led1_takk里面程序的执行太占时间了,得好好优化下。 (2017-05-15 10:10)
好的,多谢了
回复

使用道具 举报

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

本版积分规则

QQ|小黑屋|Archiver|手机版|硬汉嵌入式论坛

GMT+8, 2024-5-16 10:27 , Processed in 0.297723 second(s), 34 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2023, Tencent Cloud.

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