您的位置 首页 被动

一个uCOS ARM体系的发动进程剖析及体系构架

/*****************************************************一个uCOS ARM系统的启动过程分析及系统构架。 **Main 函数的代码如下: ****

/****************************************************

*一个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 表明使命延时的节拍数,一旦规则的时刻期满,该使命立刻又会从头进入

安排妥当状况。

****************************************************/

声明:本文内容来自网络转载或用户投稿,文章版权归原作者和原出处所有。文中观点,不代表本站立场。若有侵权请联系本站删除(kf@86ic.com)https://www.86ic.net/ziliao/beidong/297902.html

为您推荐

联系我们

联系我们

在线咨询: QQ交谈

邮箱: kf@86ic.com

关注微信
微信扫一扫关注我们

微信扫一扫关注我们

返回顶部