/****************************************************
*一个uCOS ARM体系的发动进程剖析及体系构架。 *
*Main 函数的代码如下: *
*****************************************************/
int Main(int argc, char **argv)
{
ARMTargetInit() // 体系硬件初始化
OSInit() //初始化操作体系
uHALr_ResetMMU() //复位MMU
LCD_Init() //初始化LCD 模块
LCD_printf(LCD initialization is OK\n) //显现液晶屏信息
LCD_printf(240 x 128 Text Mode\n)
LoadFont() //装载体系字体
LCD_printf(Create task on uCOS-II…\n) //显现液晶屏信息
//创立体系的使命
OSTaskCreate(Main_Task, (void *)0,
(OS_STK *) Main_Stack[STACKSIZE*8-1], Main_Task_Prio)
OSTaskCreate(Led_Flash_Task, (void *)0,
(OS_STK *) Led_Flash_Stack[STACKSIZE-1], Led_Flash_Prio )
OSTaskCreate(Lcd_Fresh_Task, (void *)0,
(OS_STK *) Lcd_Fresh_Stack[STACKSIZE-1], Lcd_Fresh_prio )
OSTaskCreate(Key_Scan_Task, (void *)0,
(OS_STK *) Key_Scan_Stack[STACKSIZE-1], Key_Scan_Task_Prio )
LCD_printf(Starting uCOS-II…\n)
LCD_printf(Entering graph mode…\n)
LCD_ChangeMode(DspGraMode) //设置液晶屏显现为图形形式
initOSGUI() //初始化图形用户界面
InitRtc() //初始化体系时钟
LCDFresh_MBox=OSMboxCreate(NULL) //创立LCD 改写邮箱
Lcd_Disp_Sem=OSSemCreate(1) //创立LCD 缓冲区控制权旗语,初值为1 满意互斥条件
Nand_Rw_Sem=OSSemCreate(1) //创立Nand-Flash 读写控制权旗语,初值为1 满意互斥条件
ARMTargetStart() //发动操作体系的硬件定时器等中止
OSStart() // 发动操作体系
//程序不会运转至此
return 0
}//main end
/****************************************************
*体系发动的时分创立了4 个体系使命,其间Main_Task 为体系的主使命,用户的应 *
*用程序便是从Main_Task 使命开端的。其代码如下: *
*****************************************************/
void Main_Task(void *Id) //Main_Test_Task
{
POSMSG pMsg=0
ClearScreen() //铲除屏幕
for( )
OSTimeDly(1000)
//音讯循环
/* for( ){
pMsg=WaitMessage(0)
tch(pMsg-> Message){
case OSM_KEY:
onKey(pMsg-> WParam,pMsg-> LParam)
break
}
DeleteMessage(pMsg)
}*/
}
/**************************************************
一般多操作体系中的使命是一个无限循环,相同,Main_Task 也要堕入一个无限循环。
由于uCOS-II 是占先式多使命操作体系,假如没有比Main_Task 使命更高优先级的使命
进入安排妥当状况,Main_Task 使命是不会抛弃CPU 的控制权的。经过调用OSTimeDly(INT16U
ticks)函数,可以使操作体系进行一次使命调度,而且履行下一个优先级最高的安排妥当状况的
使命。参数Ticks 表明使命延时的节拍数,一旦规则的时刻期满,该使命立刻又会从头进入
安排妥当状况。
****************************************************/