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

📄 ex1.c

📁 可以在ti tms320vc5402处理器上运行的ucos程序
💻 C
字号:
#include "includes.h" 

#define  TASK_STK_SIZE                 256       /* Size of each task's stacks (# of WORDs)            */
#define  N_TASKS                        3       /* Number of identical tasks                          */

extern void StartTimer(void); 

OS_EVENT        *AckMbox;                           
OS_EVENT        *TxMbox;

OS_STK           TaskStk[N_TASKS][TASK_STK_SIZE];     /* Tasks stacks                                  */
OS_STK           TaskStartStk[TASK_STK_SIZE];
                         
void   TaskStart(void *data);
void   Task1(void *data);                              /* Function prototypes of tasks                  */
void   Task2(void *data);							   /* Function prototypes of Startup task           */

short counter1, counter2, counter3;


main()
{  
	
	INIT_C54(); 
	
	counter1= counter2 = counter3 = 0; 
	
	OSInit();
	                    
	OSTaskCreate(TaskStart, (void *)&counter1, (void *)&TaskStartStk[TASK_STK_SIZE - 1], 0);

	OSStart();
}

void TaskStart(void *data)
{   
    UBYTE x;
    UBYTE y;
    UBYTE err;
    
	OS_ENTER_CRITICAL();
	StartTimer();				/* install the C549 Timer */
	OS_EXIT_CRITICAL();
	
	OSTaskCreate(Task1, (void *)&counter2, (void *)&TaskStk[0][TASK_STK_SIZE - 1], 1);
	OSTaskCreate(Task2, (void *)&counter3, (void *)&TaskStk[1][TASK_STK_SIZE - 1], 2);
	
	AckMbox = OSMboxCreate((void *)0);                     /* Create 2 message mailboxes               */
    TxMbox  = OSMboxCreate((void *)0);
     
	for (;;) {
    	(*(int *)data)++;
    	err++;
        OSTimeDly(100);                            /* Delay 1 clock tick                                 */
    }
}
		

void Task1 (void *data)
{
    UBYTE err; 
    char txmsg;

    
    txmsg = 'A';
    for (;;) {
    	while (txmsg <= 'Z')
    	{
    		OSMboxPost(TxMbox, (void *)&txmsg);
    		OSMboxPend(AckMbox, 0, &err);
    		txmsg++;
    	}
    	txmsg = 'A';
    	(*(int *)data)++; 
    	err++;
    }
} 

void Task2(void *data)
{
	char *rxmsg;
    UBYTE err;
    
    for (;;) {
    	rxmsg = (char *)OSMboxPend(TxMbox, 0, &err);
    	OSTimeDly(5);
    	OSMboxPost(AckMbox, (void *)1);
    	(*(int *)data)++;
    }
}
		
		

	

⌨️ 快捷键说明

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