wzn814 发表于 2008-5-24 20:04:34

uc/os-ii for m128 任务调度问题

无法进行任务调度请高手指点,实在找不到原因了.

task1与task2不能自动切换


#define Test1_GLOBALS
#include "includes.h"


//******************************************************************************
// Constants
#define TaskStartPrio        10                // Task-Prioritaeten


//*****************************************************************************
// Variablen
OS_STK        Task1Stack;                // startup task stack
OS_STK        Task2Stack;       

//*****************************************************************************
// Prototypes
void Task1(void *data);
void uart0_init(void);
void Task2(void *data);
//*****************************************************************************
// Start
void main(void){
        OSInit();                // OS init

        OSTaskCreate(Task1,
                                (void *)(int)'a',
                                &Task1Stack,
                                TaskStartPrio);
       
        OSTaskCreate(Task2,
                                (void *)(int)'b',
                                &Task2Stack,
                                TaskStartPrio+1);
        // init und start tick
        uart0_init();
        TC2_Init();       
        DDRG |= 0x18; PORTG &=~(1<<PG3); PORTG &=~(1<<PG4);       
        OSStart();                // start multitasking

}

//*****************************************************************************
void Task1(void *data)
{      
    data=data;
//        char c = (int)data;

          
        // Timer/Counter#2 Overflow and Comp init

        for (;;){
//            putchar(c);
                //while(!(UCSR0A&0x20));
                UDR0 = 'a';
//                PORTA = ~PORTA;
//                DDRA = 0xff;
                OSTimeDly (5);

        }
}
void Task2(void *data)
{
    data=data;
//        char c = (int)data;
        for (;;){
//            putchar(c);
                //while(!(UCSR0A&0x20));
                UDR0 = 'b';
//                PORTA = ~PORTA;
//                DDRA = 0xff;
                OSTimeDly (5);

        }
}

yangsen 发表于 2008-5-24 20:33:13

软件跟踪一下是不是任务切换时关了中断,重点看看任务放弃占用CPU时是不是禁止了中断。跟踪一下就知道是那出了问题,你只给出任务的代码没有用。而且,编译环境不同对堆栈的处理也不相同。

wzn814 发表于 2008-5-25 08:39:56

谢谢 1楼的朋友 我试试看能不能找到 问题所在
页: [1]
查看完整版本: uc/os-ii for m128 任务调度问题