新闻中心

EEPW首页 > 嵌入式系统 > 设计应用 > uCOSii 在Coldfire MCF52235 上的移植

uCOSii 在Coldfire MCF52235 上的移植

作者:时间:2012-11-21来源:网络收藏

MOVEM. L D0D7/ A0 A6, ( A7)

OS_EMAC_SAVE

MOVEQ. L # 0, D0

MOVE. B ( _OSI ntNesting) , D0

ADDQ. L # 1, D0

MOVE. B D0, ( _OSI ntNesting)

CMPI. L # 1, D0

BNE _BSP_TickISR_1

MOVE. L ( _OSTCBCur) , A1

MOVE. L A7, ( A1)

_BSP_TickISR_1:

JSR _BSP_T ickISR_H andler

JSR _OSInt Ex it

OS_EMAC_RESTORE

MOVEM. L ( A7) , D0D7/ A0A6

LEA 60( A7) , A7

RTE

3 任务的创建和代码的测试

源程序完, 用户就可以试着制作自己的项目。编写任务代码, 与以前在前后台系统中基本相同, 不同

的是要把每个任务独立编写成一个文件, 最后由主程序统一调度。为了测试是否成功, 用STaskCreateExt ( ) 创建了两个任务。一个任务使板上LED 每一秒闪动一次, 另一个任务是用片内A/ D 采样板上的加速度传感器信号, 并在数码管上显示出当前加速度数值。最后调用OSStar t( ) 启动多任务调度。

3. 1 定义每个任务的堆栈大小

OS_STK

TaskStartStk[ T ASKSTART ST K_SIZE] ;

OS_STK ADT askStk[ T ASKSTK_SIZE] ;

然后在main( ) 函数里系统初始化:

OSInit( ) ;

3. 2 创建任务

OST askCreateEx t( TaskStart, ( void * ) 0, ( OS _ ST K * )

T askStar tSt k[ T ASKSTARTST K_SIZE1] , T ASK _START _

PRIO, TASK_START_PRIO, ( OS_ST K* ) T askStart St k[ 0] ,

TASK_ST ART_ST K_SIZE, ( vo id * ) 0, OS_TASK_OPT _ST K_

CH K| OS_TASK_OPT_STK_CLR) ;

OSTaskCreateExt ( ADT ask, ( vo id * ) 0, ( OS _ STK * )

ADTaskStk[ TASKST K_SIZE1] , ADTASK_PRIO, ADT ASK

_ PRIO, ( OS _ ST K * ) ADTaskStk [ 0] , TASK _ ST K _SIZE,

( vo id * ) 0, OS_TASK_OPT_STK_CHK) ;

3. 3 系统启动运行

OSStart( ) ;

3. 4 测试结果

测试代码经过编译下载到实验板上运行后, 通过实验板上显示的信息, 表示两个任务在交替运行, 说明移

植工作是成功的, 如图5 所示。

image

上一页 1 2 3 下一页

评论


相关推荐

技术专区

关闭