main_entry.c

来自「lwip在ucos上的移植」· C语言 代码 · 共 77 行

C
77
字号
/*   
 *  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"
#include "shelltask.h"


extern void UART0ISR(void);
extern void CommRxIntEn(INT8U ch);
extern void OSISR(void);

void Sleep(INT16U uSec);
void Task1(void * pParam);

extern void  OSTimeTick(void);
extern void  shelltask(void *pParam);

#define	N_TASKS		3	// Number of tasks
#define	TASK_STK_SIZE	1024		// Stack size, in sizeof OS_STK, or int 32bit
OS_STK	TaskStk[N_TASKS][TASK_STK_SIZE];	// Tasks stacks

char bufchar; 
OS_EVENT *sem1;

/* start_kernel entry */
void start_kernel(void)
{
  	int	task_1 = 0;
	int	task_2 = 1;
	
	/* firstly, we should install irq mode handler, must call do_irq in any user's handler  */
	install_irqhandler(OSISR);
     
	request_irq(5,OSTimeTick);
	request_irq(2,UART0ISR);

	OSInit();
	
	OSTaskCreate(Task1, &task_1, &TaskStk[0][TASK_STK_SIZE-1], 0);
	
	OSTaskCreate(shelltask, &task_2, &TaskStk[1][TASK_STK_SIZE-1], 1);
	
	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 );
    }
}


/* call system delay function */
void Sleep(INT16U uSec)
{
  OSTimeDly((INT16U) (uSec) * 10);
}

⌨️ 快捷键说明

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