?? main.c
字號:
/****************************************************************************
【文 件 名 稱】main.c
【功 能 描 述】三星S3C44B0X板 uC/OS-II 程序代碼
【程 序 版 本】1.0
【創(chuàng)建人及創(chuàng)建日期】icesoar//2003-12-19 10:57
【修改人及修改日期】icesoar//2004-6-6 23:27
****************************************************************************/
#include "rtc.h"
#include "os_cpu.h"
#include "ucos_ii.h" /* uC/OS interface */
#include "target.h"
//***************************************************************************
/* allocate memory for tasks' stacks */
#ifdef SEMIHOSTED
#define STACKSIZE (SEMIHOSTED_STACK_NEEDS+64)
#else
//#define TASK_STACK_SIZE ( 256+64 )
#define TASK_STACK_SIZE ( 512+64 )
//#define TASK_STACK_SIZE ( 8192+64 )
#endif
//***************************************************************************
OS_STK Main_Task_Stack[TASK_STACK_SIZE];
void Main_Task(void *Id);
#define Main_Task_PRIO 5
OS_STK Task1_Stack[TASK_STACK_SIZE];
void Task1( void *Id ) ;
#define Task1_PRIO 6
OS_STK Task2_Stack[TASK_STACK_SIZE];
void Task2( void *Id ) ;
#define Task2_PRIO 7
OS_EVENT *UART0_SEM ; //UART 0信號量
OS_EVENT *Key_Mbox ; //按鍵消息郵箱
OS_EVENT *OK_Mbox; //按鍵消息郵箱
/******************************************************************************
【功能說明】主任務(wù),在本任務(wù)中啟動系統(tǒng)定時(shí)器并創(chuàng)建其他任務(wù)
******************************************************************************/
void rtc_tick_init( char tick )
{
rRTCCON = 0x01;
rTICNT = (tick&0x7f)|0x80; /*TICK 中斷使能,周期為(1+tick)/128秒*/
// tick=rTICNT;
//printf("TICNT=%d/n",tick);
rRTCCON = 0x00;
}
/*
********************************************************************************************************
* 函數(shù): void __irq OS_TICK_ISR (void).
* 描述: 1. Timer4 中斷服務(wù)程序, 提供 uC/OS 節(jié)拍.
* 2. 其它 IRQ 中斷服務(wù)函數(shù)請參照該函數(shù).
********************************************************************************************************
*/
void __irq OS_TICK_ISR (void)
{
OSIntEnter();
OSTimeTick(); /* 系統(tǒng)節(jié)拍服務(wù)程序. */
OSIntExit();
ClearPending (BIT_TICK); // 清中斷懸掛位.
}
void __irq rtc_irq(void)
{
ClearPending(BIT_TICK);
printf("into tick\n");
}
void Main_Task( void *Id )
{
//U8 err ;
//ARMStartTimer();
EnableInt();
rINTMOD = 0x0 ;
rtc_tick_init(50);
//Init_Timer4();
pISR_TICK= (unsigned)OSTickISR;
//pISR_TICK= (unsigned)rtc_irq;
ClearPending(BIT_TICK);
EnableIrq(BIT_TICK);
printf("OSStatInit\n");
OSStatInit();
printf("into Main_Task \n");
//OSTaskCreate( Task_KeyScan, (void *)0, (OS_STK *)&Task_KeyScan_Stack[TASK_STACK_SIZE-1], Task_KeyScan_PRIO ) ;
//OSTaskCreate( Task1, (void *)0, (OS_STK *)&Task1_Stack[TASK_STACK_SIZE-1],Task1_PRIO ) ;
//OSTaskCreate( Task2, (void *)0, (OS_STK *)&Task2_Stack[TASK_STACK_SIZE-1],Task2_PRIO ) ;
for( ; ; )
{
printf( "++++++++++++++++++++++++++++++++++++++" ) ;
printf( "OSCPUUsage = %d%% \n", OSCPUUsage ) ;
OSTimeDly(10);
}
}
/******************************************************************************
【功能說明】通過串口向超級終端發(fā)送數(shù)據(jù)
******************************************************************************/
void Task1(void *Id)
{
for(;;)
{
printf("##############run Task1!!!################\n");
OSTimeDly(5);
}
}
/******************************************************************************
【功能說明】任務(wù)2,通過串口向超級終端發(fā)送數(shù)據(jù)
******************************************************************************/
void Task2(void *Id)
{
for(;;)
{
printf("**************run Task2!!!****************\n");
OSTimeDly(5);
}
}
/******************************************************************************
【功能說明】系統(tǒng)主函數(shù)
******************************************************************************/
void Main(void)
{
U16 ver ;
//BoardInitStart();
SystemClockInit();
TimerInit(TIMER_FREQ);
MemCfgInit();
PortInit();
SerialSwitch(0);
SerialChgBaud(115200);
printf("\n\nTarget Initing\n");
OSInit(); //uCOS-II初始化
printf("OS Initing\n");
//OSTimeSet(0);
printf("OS Time setting\n");
ver = OSVersion();
printf("OS Version: %d\n",ver);
OSTaskCreate( Main_Task, (void *)0, (OS_STK *)&Main_Task_Stack[TASK_STACK_SIZE-1], Main_Task_PRIO ) ;
OSTaskCreate( Task1, (void *)0, (OS_STK *)&Task1_Stack[TASK_STACK_SIZE-1],Task1_PRIO ) ;
OSTaskCreate( Task2, (void *)0, (OS_STK *)&Task2_Stack[TASK_STACK_SIZE-1],Task2_PRIO ) ;
// ARMTargetInit();
//ARMTargetStart(); //start the ARM target running
//EnableIrq(BIT_TIMER0);
printf("OS Starting\n\n");
OSStart(); //Start uCOS-II
}
//*****************************************************************************
?? 快捷鍵說明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -