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

📄 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"
#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 + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -