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);
}
} 软件跟踪一下是不是任务切换时关了中断,重点看看任务放弃占用CPU时是不是禁止了中断。跟踪一下就知道是那出了问题,你只给出任务的代码没有用。而且,编译环境不同对堆栈的处理也不相同。 谢谢 1楼的朋友 我试试看能不能找到 问题所在
页:
[1]