|
楼主 |
发表于 2009-10-15 10:28:41
|
显示全部楼层
不是啊 只是在uCOS上编个简单的应用程序而言 主程序如下
#include "includes.h"
/*
*********************************************************************************************************
* CONSTANTS
*********************************************************************************************************
*/
#define TASK_STK_SIZE 512
/*
*********************************************************************************************************
* VARIABLES
*********************************************************************************************************
*/
char* ss;
OS_STK MyTaskStk[TASK_STK_SIZE];
OS_STK YouTaskStk[TASK_STK_SIZE];
INT16S key;
INT8U y1 = 0, y2 = 0;
char* s ="原始数据";
/*
*********************************************************************************************************
* FUNCTION PROTOTYPES
*********************************************************************************************************
*/
void MyTask(void * data);
void YouTask(void * data);
/*$PAGE*/
/*
*********************************************************************************************************
* MAIN
*********************************************************************************************************
*/
void main (void)
{
PC_DispClrScr(DISP_FGND_WHITE);
OSInit(); /* Initialize uC/OS-II */
PC_DOSSaveReturn(); /* Save environment to return to DOS */
PC_VectSet(uCOS, OSCtxSw); /* Install uC/OS-II's context switch vector */
PC_ElapsedInit();
OSTaskCreate(
MyTask, //代码
(void* )0, //任务参数
&MyTaskStk[TASK_STK_SIZE-1],//任务堆栈
0); //任务优先级
OSStart(); /* Start multitasking */
}
/*$PAGE*/
/*
*********************************************************************************************************
* STARTUP TASK
*********************************************************************************************************
*/
void MyTask(void * pdata)
{
#if OS_CRITICAL_METHOD == 3
OS_CUP_SR cpu_sr;
#endif
INT8U err;
pdata = pdata;
OS_ENTER_CRITICAL();
PC_VectSet(0x08, OSTickISR);
PC_SetTickRate(OS_TICKS_PER_SEC);
OS_EXIT_CRITICAL();
OSStatInit();
OSTaskCreate( YouTask, //代码
(void* )0, //任务参数
&MyTaskStk[TASK_STK_SIZE-1], //任务堆栈
2); //任务优先级
for(;;)
{
s = "MyTask访问共享数据";
PC_DispStr(5,
++y1,
s,
DISP_BGND_BLACK+DISP_FGND_WHITE);
OSTimeDly(20);
}
}
void YouTask(void * pdata)
{
#if OS_CRITICAL_METHOD == 3
OS_CUP_SR cpu_sr;
#endif
INT8U err;
pdata = pdata;
for(;;)
{
s = "YouTask访问共享数据";
PC_DispStr(28,++y2,s,DISP_BGND_BLACK+DISP_FGND_WHITE);
OSTimeSet(0);
while(OSTime<500)
{
//sprintf(ss,"%d", OSTimeGet());
PC_DispStr(55,y2,s,DISP_BGND_BLACK+DISP_FGND_WHITE);
}
OSTimeDly(10);
}
}
调试邵贝贝书配套光盘上的ex4也有同样的问题,不知道原因何在?
光盘资料论坛上也有人上传了。感兴趣的同志也可以玩玩的 |
|