OpenEdv-开源电子网

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

请问下为什么一旦把uC/OS-II里面第一次调用的起始任务优先级设置的低一些,程序就一直死在空闲任务中?

[复制链接]

20

主题

232

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
335
金钱
335
注册时间
2013-6-1
在线时间
0 小时
发表于 2015-5-5 23:38:28 | 显示全部楼层 |阅读模式
5金钱
请问下为什么一旦把uC/OS-II里面第一次调用的起始任务优先级设置的低一些,程序就一直死在空闲任务中?

main.c代码
[mw_shl_code=c,true]#include "includes.h" OS_STK Task_Start_STK[Task_Start_SIZE]; int main(void) { Stm32_Init(); OSInit(); OSTaskCreate(Task_Start,(void *)0,(OS_STK *)&Task_Start_STK[Task_Start_SIZE-1],Task_Start_PRIO); OSStart(); return 0; }[/mw_shl_code]
APP.C代码
[mw_shl_code=c,true]/* ********************************************************************************************************** ** 任务的堆栈声明 ********************************************************************************************************** */ OS_STK Task_Touch_STK[Task_Touch_SIZE]; OS_STK Task_Main_STK[Task_Main_SIZE]; OS_STK Task_Calibrate_STK[Task_Calibrate_SIZE]; /* ********************************************************************************************************* * 函 数 名: Stm32_Init * 功能说明: 系统初始化 * 形 参:void * 返 回 值: 无 ********************************************************************************************************* */ void Stm32_Init(void) { delay_init();           /*  Systick初始化 */ LED_Init();            /*  LED初始化   */ TP_Init();             /*  触摸屏初始化  */ KEY_Init(); } /* ********************************************************************************************************* * 函 数 名: Task_Start * 功能说明: 起始任务 * 形 参:void *pdata * 返 回 值: 无 ********************************************************************************************************* */ void Task_Start(void *pdata) { OSTaskCreate(Task_Main,(void *)0,(OS_STK *)&Task_Main_STK[Task_Main_SIZE-1],Task_Main_PRIO); OSTaskCreate(Task_Touch,(void *)0,(OS_STK *)&Task_Touch_STK[Task_Touch_SIZE-1],Task_Touch_PRIO); OSTaskDel(OS_PRIO_SELF); //删除起始任务. }[/mw_shl_code]
APP.H代码
[mw_shl_code=c,true]/************************************************************************************************ ** 任务的优先级声明 ************************************************************************************************/ #define Task_Start_PRIO 3 #define Task_Touch_PRIO 4 #define Task_Main_PRIO                 5 #define Task_Calibrate_PRIO              6 /************************************************************************************************ ** 任务的堆栈容量声明 ************************************************************************************************/ #define Task_Start_SIZE                64 #define Task_Touch_SIZE                64 #define Task_Main_SIZE                256 #define Task_Calibrate_SIZE              128 /************************************************************************************************ ** 任务的声明 ************************************************************************************************/ void Task_Start(void *pdata); void Task_Main(void *pdata); void Task_Touch(void *pdata); void Task_Calibrate(void *pdata); /************************************************************************************************ ** 函数的声明 ************************************************************************************************/ void Stm32_Init(void); void Start_Page(void); void Home_Page(void); void Touch_Calibrate(void); [/mw_shl_code]
上面的代码正常运行,但是一旦把Task_Start_PRIO    这个起始任务的优先级设置的低一些。。。程序就一直死在空闲任务里面了






最佳答案

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

已解决。。。。 太傻了,os_cfg.h里面 #define OS_LOWEST_PRIO           31   没有修改这个最低优先级。。。怪不得写40、50 老出错
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

20

主题

232

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
335
金钱
335
注册时间
2013-6-1
在线时间
0 小时
 楼主| 发表于 2015-5-5 23:38:29 | 显示全部楼层
已解决。。。。
太傻了,os_cfg.h里面
#define OS_LOWEST_PRIO           31  
没有修改这个最低优先级。。。怪不得写40、50 老出错
回复

使用道具 举报

58

主题

6291

帖子

1

精华

资深版主

Rank: 8Rank: 8

积分
11387
金钱
11387
注册时间
2014-4-1
在线时间
1278 小时
发表于 2015-5-6 00:07:24 | 显示全部楼层
好像这里研究系统的少。
回复

使用道具 举报

20

主题

232

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
335
金钱
335
注册时间
2013-6-1
在线时间
0 小时
 楼主| 发表于 2015-5-6 00:35:27 | 显示全部楼层
回复【2楼】xuande:
---------------------------------
-_- 不会吧,可是我看别人的代码里面把起始任务的优先级设置成所有任务里面最低的
我的只要稍微低一些就跑到空闲任务里出不来了,程序调用顺序上也完全没有什么问题啊。
回复

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2024-11-1 14:37

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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