现在的位置: 首页 > 综合 > 正文

UCOS2操作系统调试步骤

2013年09月06日 ⁄ 综合 ⁄ 共 1071字 ⁄ 字号 评论关闭

http://tiandongying.blog.163.com/blog/static/1636128212010101833611564/

1,实验一

#include "includes.h"

void main(void)

{

     OSInit();   

     关LED;

     OSStart();

}

void OSTaskIdleHook(void)

{

      if(LED is ON){

      关LED;

     }else{

      开LED;

   }

}

现象为LED以很快速度闪烁,应用示波器观测。如果这一实验失败,问题可能出在OSTakeStkInit()和OSStartHighRdy()函数。查看是否成功进入空闲任务。

2,实验二

创建一个任务,任务只是简单延时,但是不打开中断和时钟,所以应当切换到空闲任务,现象同实验一,由此检验OSCtxSw()。

具体为

#include "includes.h"

OS-STK  TestTaskStk[100];

void main(void)

{

     OSInit();   

    关LED;

     OSTaskCreate(TestTask,(void *)0,&TestTaskStk[99],3);

    OSStart();

}

void OSTaskIdleHook(void)

{

      if(LED is ON){

      关LED;

     }else{

      开LED;

   }

}

void TestTask(void *pdata)

{

     pdata=pdata;

     while(1){

            OSTimeDly(1);   }

}

3,实验三,测试OSIntCtxSw()和OSTickISR(),现象小灯一直闪烁。

#include "includes.h"

OS-STK  TestTaskStk[100];

void main(void)

{

     OSInit();   

     关LED;

     设置时钟节拍中断向量;

     OSTaskCreate(TestTask,(void *)0,&TestTaskStk[99],3);

    OSStart();

}

void TestTask(void *pdata)

{

     pdata=pdata;

初始化时钟节拍中断;

使能中断;

 关LED;

     while(1){

            OSTimeDly(1); 

          if(关LED)

             开LED;

         else

             关LED;

     }

}

 

抱歉!评论已关闭.