📄 oldmemtest.c
字号:
/*
*********************************************************************************************************
* uC/OS-II
* The Real-Time Kernel
*
* (c) Copyright 1992-1998, Jean J. Labrosse, Plantation, FL
* All Rights Reserved
*
* V2.00
*
* EXAMPLE #3
*********************************************************************************************************
*/
#define EX3_GLOBALS
#include "includes.h"
extern void HW_Bd_Init(void);
/*
*********************************************************************************************************
* CONSTANTS
*********************************************************************************************************
*/
#define TASK_START_ID 0 /* Application tasks */
#define TASK_CLK_ID 1
#define TASK_1_ID 2
#define TASK_2_ID 3
#define TASK_3_ID 4
#define TASK_4_ID 5
#define TASK_5_ID 6
#define TASK_START_PRIO 3 /* Application tasks priorities */
#define TASK_CLK_PRIO 1
#define TASK_1_PRIO 2
#define TASK_2_PRIO 3
#define TASK_3_PRIO 4
#define TASK_4_PRIO 5
#define TASK_5_PRIO 6
#define MSG_QUEUE_SIZE 20 /* Size of message queue used in example */
#define TASK_STK_SIZE 256 /* Size of each task's stacks */
#define N_TASKS 7 /* Number of identical tasks */
/*
*********************************************************************************************************
* VARIABLES
*********************************************************************************************************
*/
OS_EVENT *RandomSem;
//OS_STK TaskStk[N_TASKS][TASK_STK_SIZE]; /* Tasks stacks */
//OS_STK TaskStartStk[TASK_STK_SIZE];
//char TaskData[N_TASKS]; /* Parameters to pass to each task */
#pragma romdata EXTSTK
OS_STK TaskStartStk[TASK_STK_SIZE]; /* Startup task stack */
OS_STK TaskClkStk[TASK_STK_SIZE]; /* Clock task stack */
OS_STK Task1Stk[TASK_STK_SIZE]; /* Task #1 task stack */
OS_STK Task2Stk[TASK_STK_SIZE]; /* Task #2 task stack */
OS_STK Task3Stk[TASK_STK_SIZE]; /* Task #3 task stack */
OS_STK Task4Stk[TASK_STK_SIZE]; /* Task #4 task stack */
OS_STK Task5Stk[TASK_STK_SIZE]; /* Task #5 task stack */
#pragma romdata EXTMEM
rom unsigned char MemArea[24576];
#pragma romdata EXTRAM
// rom char one[]="1--The first message--1";
// rom char two[]="2--The first message--2";
// rom char three[]="3--The first message--3";
//OS_EVENT *MsgQueue; /* Message queue pointer */
//OS_MEM *MemPtr;
//rom void *rom MsgQueueTbl[20]; /* Storage for messages */
/*
*********************************************************************************************************
* FUNCTION PROTOTYPES
*********************************************************************************************************
*/
void TaskStart(void *data); /* Function prototypes of tasks */
void TaskClk(void *data);
void Task1(void *data);
void Task2(void *data);
void Task3(void *data);
void Task4(void *data);
void Task5(void *data);
/*$PAGE*/
/*
*********************************************************************************************************
* MAIN
*********************************************************************************************************
*/
void main (void)
{
// PC_DispClrScr(DISP_BGND_BLACK); /* Clear the screen */
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(); /* Initialized elapsed time measurement */
TaskUserData[TASK_START_ID].TaskID=TASK_START_ID;
// strcpy(TaskUserData[TASK_START_ID].TaskName,"StartTask");
OSTaskCreate(TaskStart, (void *)0, (rom void *)&TaskStartStk[0],TASK_START_PRIO);
// OSTaskCreateExt(TaskStart, (void *)0, &TaskStartStk[TASK_STK_SIZE-1], TASK_START_PRIO,
// TASK_START_ID, &TaskStartStk[0], TASK_STK_SIZE, &TaskUserData[TASK_START_ID], 0);
OSStart(); /* Start multitasking */
}
/*$PAGE*/
/*
*********************************************************************************************************
* STARTUP TASK
*********************************************************************************************************
*/
void TaskStart (void *data)
{
UBYTE i;
// char s[100];
// char s[80];
INT16S key;
INT8U err;
data = data; /* Prevent compiler warning */
// OS_ENTER_CRITICAL();
// PC_VectSet(0x08, OSTickISR); /* Install uC/OS-II's clock tick ISR */
// PC_SetTickRate(OS_TICKS_PER_SEC); /* Reprogram tick rate */
// OS_EXIT_CRITICAL();
// HW_Bd_Init();
Func_Brd_Init();
Func_Start_TMR1();
// PC_DispStr(0, 22, "Determining CPU's capacity ...", DISP_FGND_WHITE);
// OSStatInit(); /* Initialize uC/OS-II's statistics */
// PC_DispClrLine(22, DISP_FGND_WHITE + DISP_BGND_BLACK);
// MsgQueue = OSQCreate(&MsgQueueTbl[0], MSG_QUEUE_SIZE); /* Create a message queue */
// MemPtr=OSMemCreate(MemArea,32,256,&err);
// TaskUserData[TASK_CLK_ID].TaskID=TASK_CLK_ID;
// OSTaskCreate(TaskClk, (void *)0, (rom void *)&TaskClkStk[0],TASK_CLK_PRIO);
// TaskUserData[TASK_1_ID].TaskID=TASK_1_ID;
// OSTaskCreate(Task1, (void *)0, (rom void *)&Task1Stk[0],TASK_1_PRIO);
// TaskUserData[TASK_2_ID].TaskID=TASK_2_ID;
// OSTaskCreate(Task2, (void *)0, (rom void *)&Task2Stk[0],TASK_2_PRIO);
// TaskUserData[TASK_3_ID].TaskID=TASK_3_ID;
// OSTaskCreate(Task3, (void *)0, (rom void *)&Task3Stk[0],TASK_3_PRIO);
// TaskUserData[TASK_4_ID].TaskID=TASK_4_ID;
// OSTaskCreate(Task4, (void *)0, (rom void *)&Task4Stk[0],TASK_4_PRIO);
// TaskUserData[TASK_5_ID].TaskID=TASK_5_ID;
// OSTaskCreate(Task5, (void *)0, (rom void *)&Task5Stk[0],TASK_5_PRIO);
OSCtxSwCtr = 0; /* Clear the context switch counter */
for (;;) {
OSCtxSwCtr++; /* Clear the context switch counter */
// BCF TRISB,3 ;Portb-3 and Portb-4 are output pins.
// BCF TRISB,4
_asm
BTG LATA,0,0
// ;Bit Toggle
_endasm
OSTimeDly(2); /* Wait one second */
}
}
/*$PAGE*/
/*
*********************************************************************************************************
* TASK #1
*
* Description: This task executes 5 times per second but doesn't do anything.
*********************************************************************************************************
*/
void Task1 (void *data)
{
rom char *addr1;
rom char *addr2;
rom char *addr3;
INT8U errcode;
INT16U i;
data = data;
for (;;) {
addr1=OSMemGet(MemPtr,&errcode);
for(i=0;i<32;i++)
addr1[i]=0x31;
OSQPost(MsgQueue, addr1);//(rom INT8U *)one);
// OSTimeDly(10);
// OSTimeDlyHMSM(0, 0, 1, 0); /* Delay for 1 second */
addr2=OSMemGet(MemPtr,&errcode);
for(i=0;i<32;i++)
addr2[i]=0x32;
OSQPost(MsgQueue,addr2);// (rom INT8U *)two);
// OSTimeDly(5);
// OSTimeDlyHMSM(0, 0, 0, 500); /* Delay for 500 mS */
addr3=OSMemGet(MemPtr,&errcode);
for(i=0;i<32;i++)
addr3[i]=0x33;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -