打印

关于ucos ii的任务切换问题 帮忙看一下

[复制链接]
1937|3
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
本帖最后由 rookie8711 于 2011-4-5 21:06 编辑

留步呀      问个弱弱的问题:  帮忙看看可能是什么原因呢   
void main()
{  。。。
   OSInit();
   OSTaskCreate(TaskStart,  (void *)0, (void *)&TaskStk[0][0], 1);
   OSStart();
}
void TaskStart()
{
    。。。。
}
如上的框架,我每次从主函数全速运行时,为什么只运行到TaskStart()的入口处就停下来呢 ,其实是到每个任务入口处都要停下来一次。。 如图所示,实在是想不通原因了  帮帮忙!!
单步调试是可以执行的

未命名.jpg (5.99 KB )

未命名.jpg

相关帖子

沙发
db10| | 2011-4-5 22:09 | 只看该作者
程序多贴点,看不明白

使用特权

评论回复
板凳
rookie8711|  楼主 | 2011-4-6 13:01 | 只看该作者
2# db10

void main(void)
{
//--- CPU Initialization
InitSysCtrl();      // Initialize the CPU

InitWatchdog();      // Initialize the Watchdog Timer
InitGpio();       // Initialize the shared GPIO pins
InitXintf();
EDIS;
DINT;
IER = 0x0000;
   IFR = 0x0000;
    InitPieCtrl();      // Initialize and enable the PIE
InitPieVectTable();
OSInit();                            /* Initialize uC/OS-II                   */            
OSTaskCreate(TaskStart,  (void *)0, (void *)&TaskStk[0][0], 0);
   
    OSStart();
}


void TaskStart(void *data)
{
data=data;
InitCpuTimers();
EALLOW;  // This is needed to write to EALLOW protected registers
    IER |= M_INT1;
    PieVectTable.TINT0  = &OSTickISR;//ISRTimer0;//
    PieVectTable.USER11 = &OSCtxSw;//任务切换模拟中断 用指令asm("     TRAP #30")来调用实现
   
// Enable TINT0 in the PIE: Group 1 interrupt 7
    PieCtrlRegs.PIEIER1.bit.INTx7 = 1;
// Timer 1 connected to int13 by yang
XIntruptRegs.XNMICR.bit.SELECT= 0;
ConfigCpuTimer(&CpuTimer0, 150, 1000);
EINT;   // Enable Global interrupt INTM
    ERTM;   // Enable Global realtime interrupt DBGM

StartCpuTimer0();
OSTaskCreate(Task1, (void *)0, (void *)&TaskStk[1][0], 6);
while(1)
      {      
      OSTimeDly(100);
     
      }
}程序大概就是这个样子的

使用特权

评论回复
地板
yan2005| | 2011-4-6 15:53 | 只看该作者
OSTaskCreate(TaskStart,  (void *)0, (void *)&TaskStk[0][0], 1);
是创建了一个叫TaskStart的进程,但是只是创建,现在还不运行。

OSStart();
是开始进程调度,首先运行优先级最高的进程。你的程序里面只有一个用户进程TaskStart,那就先运行TaskStart进程。

另外,
1. 在main()函数里面就把硬件初始化都做好吧。你在用户进程里面还做时钟的初始化,不太合理。
2. 在main()函数里面就把各个要用的进程创建好吧。你在用户进程里面再创建用户进程,不太实用。

使用特权

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

本版积分规则

0

主题

35

帖子

1

粉丝