新聞中心

EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計應(yīng)用 > uCOSii 在Coldfire MCF52235 上的移植

uCOSii 在Coldfire MCF52235 上的移植

作者: 時間:2012-11-21 來源:網(wǎng)絡(luò) 收藏

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 任務(wù)的創(chuàng)建和代碼的測試

源程序完, 用戶就可以試著制作自己的項目。編寫任務(wù)代碼, 與以前在前后臺系統(tǒng)中基本相同, 不同

的是要把每個任務(wù)獨立編寫成一個文件, 最后由主程序統(tǒng)一調(diào)度。為了測試是否成功, 用STaskCreateExt ( ) 創(chuàng)建了兩個任務(wù)。一個任務(wù)使板上LED 每一秒閃動一次, 另一個任務(wù)是用片內(nèi)A/ D 采樣板上的加速度傳感器信號, 并在數(shù)碼管上顯示出當(dāng)前加速度數(shù)值。最后調(diào)用OSStar t( ) 啟動多任務(wù)調(diào)度。

3. 1 定義每個任務(wù)的堆棧大小

OS_STK

TaskStartStk[ T ASKSTART ST K_SIZE] ;

OS_STK ADT askStk[ T ASKSTK_SIZE] ;

然后在main( ) 函數(shù)里系統(tǒng)初始化:

OSInit( ) ;

3. 2 創(chuàng)建任務(wù)

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 系統(tǒng)啟動運行

OSStart( ) ;

3. 4 測試結(jié)果

測試代碼經(jīng)過編譯下載到實驗板上運行后, 通過實驗板上顯示的信息, 表示兩個任務(wù)在交替運行, 說明移

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

image

上一頁 1 2 3 下一頁

關(guān)鍵詞: 移植 MCF52235 Coldfire uCOSii

評論


相關(guān)推薦

技術(shù)專區(qū)

關(guān)閉