请问下为什么一旦把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 这个起始任务的优先级设置的低一些。。。程序就一直死在空闲任务里面了
|