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

📄 main_entry.c

📁 lwip在ucos上的移植源码
💻 C
字号:
/*    *  hello.c *  this file implement start_kernel and irqhandler *  for Atmel AT91 operating system * *  Bugs report:     li ming  ( lmcs00@mails.tsinghua.edu.cn ) *  Last modified:   2003-02-02  * */ #include "skyeye_stdio.h"#include "includes.h"#include "at91_init.h"#include "serialucos.h"#define  RCR  0xfffd0034//yangye (OSTickISR -> OSISR)extern void UART0ISR(void);extern void CommRxIntEn(INT8U ch);extern void OSISR(void);void Sleep(INT16U uSec);void Task1(void * pParam);void Task2(void * pParam);void Task3(void * pParam);extern void  OSTimeTick(void);#define	N_TASKS		3	// Number of tasks#define	TASK_STK_SIZE	1024		// Stack size, in sizeof OS_STK, or int 32bitOS_STK	TaskStk[N_TASKS][TASK_STK_SIZE];	// Tasks stackschar bufchar; OS_EVENT *sem1;/* start_kernel entry */void start_kernel(void){  	int	task_1 = 1;	int	task_2 = 2;	int 	task_3 = 3;		/* firstly, we should install irq mode handler, must call do_irq in any user's handler  */	install_irqhandler(OSISR);	//yangye	request_irq(5,OSTimeTick);	request_irq(2,UART0ISR);	OSInit();		OSTaskCreate(Task1, &task_1, &TaskStk[0][TASK_STK_SIZE-1], 0);	OSTaskCreate(Task2, &task_2, &TaskStk[1][TASK_STK_SIZE-1], 1);	OSTaskCreate(Task3, &task_3, &TaskStk[2][TASK_STK_SIZE-1], 2);		OSStart();}/* Task1 print_user_input */void Task1(void * pParam){		  char err;	  at91_init();  CommInit();  sem1 = OSSemCreate(0);  while(1)	    {      OSSemPend(sem1,0,&err);   //sleep ,wait for sem1      skyeye_printf( "Task1 running... Your input char: \"%c\"\n", bufchar );    }}/* Task2 get_user_input */void Task2(void * pParam){  char err;  CommRxIntEn(UART0);  while (1)    {      skyeye_printf( "Task2 running... Please input a char:> \n" );      bufchar = CommGetChar(UART0,0,&err);      OSSemPost(sem1);      skyeye_printf("once again: \n");    }}void Task3(void *pParam){  while(1)    {     skyeye_printf(" Task3: now it is my turn ,haha! \n");     skyeye_printf(" Task3: you may input a char to wake up task1 and task2. \n");     Sleep(500);         }}/* call system delay function */void Sleep(INT16U uSec){  OSTimeDly((INT16U) (uSec) * 10);}

⌨️ 快捷键说明

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