打印
[ZLG-ARM]

创建5个任务测试可以6个任务失败??不知哪些参数没设对?

[复制链接]
1717|7
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
isbit|  楼主 | 2007-2-14 14:19 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
ST, IO, TE, rio, os
#define  TaskStart_PRIO         10
#define  TaskUart0_PRIO         11
#define  TaskKey_PRIO             12
#define  TaskTestMBox1_PRIO        13
#define  TaskTestMBox2_PRIO        14
#define  TaskEMCWR_PRIO        15
#define  TaskEMCRD_PRIO        16

/****************************************************************************
* 名称:main()
* 功能:主函数,启动多任务环境。
* 入口参数:无
* 出口参数:无
****************************************************************************/
int main (void)
{   OSInit();

    // 在系统启动前建立任务消息队列
    task1_tmq = TMQ_Create(task1_tmq_buf, 30);

    OSTaskCreate(TaskStart, (void *)0, &TaskStartStk[TASK_STK_SIZE - 1], TaskStart_PRIO);
    OSStart();
    return(0);
}

/****************************************************************************
* 名称:Task1()
* 功能:任务1,接收系统消息,并进行处理。
* 入口参数:pdata        任务初始化参数
* 出口参数:无
****************************************************************************/
void  TaskStart(void *pdata)
{  MSG  *pMsg;

   pdata = pdata;                          // 避免编译警告

   TargetInit();                         // 目标板初始化
   PINSEL0 = (PINSEL0 & 0xcffff3ff);       // 管脚选择模块初始化
   IO0DIR |= BEEP;                           // 设置蜂鸣器为输出
   IO0SET = BEEP;
   IO0DIR &= ~KEY1;                           // 设置KEY1为输入
   
   OSTaskCreate(TaskUart0, (void *)0, &TaskUart0Stk[TASK_STK_SIZE - 1], TaskUart0_PRIO);
   OSTaskCreate(TaskKey, (void *)0, &TaskKeyStk[TASK_STK_SIZE - 1], TaskKey_PRIO);  
   
   OSTaskCreate(TaskTestMBox1, (void *)0, &TaskTestMBox1Stk[TASK_STK_SIZE - 1], TaskTestMBox1_PRIO);
   OSTaskCreate(TaskTestMBox2, (void *)0, &TaskTestMBox2Stk[TASK_STK_SIZE - 1], TaskTestMBox2_PRIO);  
   
   OSTaskCreate(TaskEMCWR, (void *)0, &TaskEMCWRStk[TASK_STK_SIZE - 1], TaskEMCWR_PRIO);
   OSTaskCreate(TaskEMCRD, (void *)0, &TaskEMCRDStk[TASK_STK_SIZE - 1], TaskEMCRD_PRIO);  
。。。。
。。。。

相关帖子

沙发
isbit|  楼主 | 2007-2-14 14:24 | 只看该作者

任务参数设置

#define OS_ARG_CHK_EN             1    /* Enable (1) or Disable (0) argument checking                  */

#define OS_CPU_HOOKS_EN           1    /* uC/OS-II hooks are found in the processor port files         */

#define OS_LOWEST_PRIO           63    /* Defines the lowest priority that can be assigned ...         */
                                       /* ... MUST NEVER be higher than 63!                            */

#define OS_MAX_EVENTS            10    /* Max. number of event control blocks in your application ...  */
                                       /* ... MUST be > 0                                              */
#define OS_MAX_FLAGS              10    /* Max. number of Event Flag Groups    in your application ...  */
                                       /* ... MUST be > 0                                              */
#define OS_MAX_MEM_PART          10    /* Max. number of memory partitions ...                         */
                                       /* ... MUST be > 0                                              */
#define OS_MAX_QS                10    /* Max. number of queue control blocks in your application ...  */
                                       /* ... MUST be > 0                                              */
#define OS_MAX_TASKS             63    /* Max. number of tasks in your application ...                 */
                                       /* ... MUST be >= 2                    

使用特权

评论回复
板凳
arzhiy| | 2007-2-14 14:26 | 只看该作者

os_cfg.h文件中参数需要修改

os_cfg.h文件中参数需要修改
/*
*********************************************************************************************************
*                                         uC/OS-II CONFIGURATION
*********************************************************************************************************
*/

#define OS_MAX_EVENTS             9    /* Max. number of event control blocks in your application ...  */
                                       /* ... MUST be > 0                                              */
#define OS_MAX_FLAGS              9    /* Max. number of Event Flag Groups    in your application ...  */
                                       /* ... MUST be > 0                                              */
#define OS_MAX_MEM_PART           9    /* Max. number of memory partitions ...                         */
                                       /* ... MUST be > 0                                              */
#define OS_MAX_QS                 9    /* Max. number of queue control blocks in your application ...  */
                                       /* ... MUST be > 0                                              */
#define OS_MAX_TASKS             40    /* Max. number of tasks in your application ...                 */
                                       /* ... MUST be >= 2   

使用特权

评论回复
地板
isbit|  楼主 | 2007-2-14 14:46 | 只看该作者

谢谢楼上,还不行

OSTaskCreate(TaskUart0, (void *)0, &TaskUart0Stk[TASK_STK_SIZE - 1], TaskUart0_PRIO);
   OSTaskCreate(TaskKey, (void *)0, &TaskKeyStk[TASK_STK_SIZE - 1], TaskKey_PRIO);  
   
   //OSTaskCreate(TaskTestMBox1, (void *)0, &TaskTestMBox1Stk[TASK_STK_SIZE - 1], TaskTestMBox1_PRIO);
   //OSTaskCreate(TaskTestMBox2, (void *)0, &TaskTestMBox2Stk[TASK_STK_SIZE - 1], TaskTestMBox2_PRIO);  
   
   OSTaskCreate(TaskEMCWR, (void *)0, &TaskEMCWRStk[TASK_STK_SIZE - 1], TaskEMCWR_PRIO);
   OSTaskCreate(TaskEMCRD, (void *)0, &TaskEMCRDStk[TASK_STK_SIZE - 1], TaskEMCRD_PRIO);  
//去掉两个,就能跑到下面任务里去,加上就不行


    void  TaskEMCWR(void *pdata)
{
    MSG    msg_key;

   msg_key.message = TM_KEY;                    // 设置消息值
   while(1)
   {  

    
    IO0CLR = BEEP;
    OSTimeDly(OS_TICKS_PER_SEC / 5);
    IO0SET = BEEP;
    OSTimeDly(OS_TICKS_PER_SEC / 5);
    OSTimeDlyHMSM(0, 0, 1, 0);    
        }

                
}
用蜂鸣器来测试

使用特权

评论回复
5
davidlee| | 2007-2-14 15:19 | 只看该作者

RE

没有让TaskStart()挂起的条件么?

使用特权

评论回复
6
arzhiy| | 2007-2-14 15:45 | 只看该作者

re


其中不仅要注意最大任务数,而且还要注意OS_MAX_EVENTS、OS_MAX_MEM_PART等的最大个数。也许编写任务的时候未注意

使用特权

评论回复
7
isbit|  楼主 | 2007-2-14 15:54 | 只看该作者

OS_CFG.H

#define OS_ARG_CHK_EN             1    /* Enable (1) or Disable (0) argument checking                  */

#define OS_CPU_HOOKS_EN           1    /* uC/OS-II hooks are found in the processor port files         */

#define OS_LOWEST_PRIO           40    /* Defines the lowest priority that can be assigned ...         */
                                       /* ... MUST NEVER be higher than 63!                            */

#define OS_MAX_EVENTS            9    /* Max. number of event control blocks in your application ...  */
                                       /* ... MUST be > 0                                              */
#define OS_MAX_FLAGS              9    /* Max. number of Event Flag Groups    in your application ...  */
                                       /* ... MUST be > 0                                              */
#define OS_MAX_MEM_PART          9    /* Max. number of memory partitions ...                         */
                                       /* ... MUST be > 0                                              */
#define OS_MAX_QS                9    /* Max. number of queue control blocks in your application ...  */
                                       /* ... MUST be > 0                                              */
#define OS_MAX_TASKS             40    /* Max. number of tasks in your application ...                 */
                                       /* ... MUST be >= 2                                             */

#define OS_SCHED_LOCK_EN          1    /*     Include code for OSSchedLock() and OSSchedUnlock()       */

#define OS_TASK_IDLE_STK_SIZE   512    /* Idle task stack size (# of OS_STK wide entries)              */

#define OS_TASK_STAT_EN           1    /* Enable (1) or Disable(0) the statistics task                 */
#define OS_TASK_STAT_STK_SIZE   512    /* Statistics task stack size (# of OS_STK wide entries)        */

#define OS_TICKS_PER_SEC        200    /* Set the number of ticks in one second                        */

使用特权

评论回复
8
isbit|  楼主 | 2007-2-14 16:21 | 只看该作者

谢谢,高优先级的任务没给低优先级任务机会导致

使用特权

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

本版积分规则

194

主题

963

帖子

1

粉丝