📄 main.c
字号:
/****************************************************************************
【文 件 名 称】main.c
【功 能 描 述】三星S3C44B0X板 uC/OS-II 程序代码
【程 序 版 本】1.0
【创建人及创建日期】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; //按键消息邮箱
/******************************************************************************
【功能说明】主任务,在本任务中启动系统定时器并创建其他任务
******************************************************************************/
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;
}
/*
********************************************************************************************************
* 函数: void __irq OS_TICK_ISR (void).
* 描述: 1. Timer4 中断服务程序, 提供 uC/OS 节拍.
* 2. 其它 IRQ 中断服务函数请参照该函数.
********************************************************************************************************
*/
void __irq OS_TICK_ISR (void)
{
OSIntEnter();
OSTimeTick(); /* 系统节拍服务程序. */
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);
}
}
/******************************************************************************
【功能说明】通过串口向超级终端发送数据
******************************************************************************/
void Task1(void *Id)
{
for(;;)
{
printf("##############run Task1!!!################\n");
OSTimeDly(5);
}
}
/******************************************************************************
【功能说明】任务2,通过串口向超级终端发送数据
******************************************************************************/
void Task2(void *Id)
{
for(;;)
{
printf("**************run Task2!!!****************\n");
OSTimeDly(5);
}
}
/******************************************************************************
【功能说明】系统主函数
******************************************************************************/
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
}
//*****************************************************************************
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -