⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 multit.c

📁 IBM PowerPC 405 在DiabData开发环境下的ucosII移植代码
💻 C
字号:
/** multit.c** Sample multitasking application.** Author: Ganesh.S* Wipro Technologies*/#include "includes.h"#include "types.h"/* function prototypes */void taskOne(void *);void taskTwo(void *);void taskThree(void *);/* globals */#define ITER1 10#define ITER2 1#define LONG_TIME 100000#define HIGH 10 /* high priority */#define MID 11 /* medium priority */#define LOW 12 /* low priority */#define	TASK_STK_SIZE     2048#define T_DELAY				 1/* Globals */INT8U	taskOneData;INT8U	taskTwoData;INT8U	taskThreeData;OS_STK		taskOneStk[TASK_STK_SIZE];OS_STK		taskTwoStk[TASK_STK_SIZE];OS_STK		taskThreeStk[TASK_STK_SIZE];extern void sc_vect();extern void timer_vect();extern void ext_vect();OS_EVENT *s_t3;void main(void){	INT32S	idx;	INT32U	temp, v;        	int_disable();	interrupt_init();        uart_init();        set_vector(0x0C00,sc_vect,VT_INTR,0);        set_vector(0x1000,timer_vect,VT_INTR,0);        set_vector(0x0500,ext_vect,VT_INTR,0);        v =  OSVersion();        s1printf("\n\n-----------------------------------------------------------\n");        s1printf("UCOS-II Real Time Operating System for PPC405GP.\n");        s1printf("Ported to UCOS-II v%d.%d by Wipro Technologies. India\n",v/100, v%100);        s1printf("-----------------------------------------------------------\n\n");        int_enable();	OSInit ();/* Create a semaphore for task 1 and task 3 sync. */        s_t3 = OSSemCreate(0);/* spawn the three tasks */	OSTaskCreate(taskThree,(void *)&taskThreeData,&taskThreeStk[TASK_STK_SIZE],HIGH);	OSTaskCreate(taskTwo,(void *)&taskTwoData,&taskTwoStk[TASK_STK_SIZE],MID);	OSTaskCreate(taskOne,(void *)&taskOneData,&taskOneStk[TASK_STK_SIZE],LOW);	OSStart();	/* No, it never returns... */ }void taskOne(void *data) {int i,j;for (i=0; i < ITER1; i++)        {        for (j=0; j < ITER2; j++)                s1printf("taskOne (LOW)\n");        for (j=0; j < LONG_TIME; j++);          }        OSSemPost(s_t3);}void taskTwo(void *data) {int i,j;for (i=0; i < ITER1; i++)        {        for (j=0; j < ITER2; j++)                s1printf("taskTwo (MED)\n");        for (j=0; j < LONG_TIME; j++);        }        OSTaskSuspend(OS_PRIO_SELF);}void taskThree(void *data) {int i,j;INT8U err;for (i=0; i < ITER1; i++)        {         for (j=0; j < ITER2; j++)                s1printf("taskThree (HIGH)\n");        for (j=0; j < LONG_TIME; j++);        }        OSSemPend(s_t3,0,&err);}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -