📄 main_entry.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 + -