|
|||||||||||
| 技術交流 | 電路欣賞 | 工控天地 | 數(shù)字廣電 | 通信技術 | 電源技術 | 測控之家 | EMC技術 | ARM技術 | EDA技術 | PCB技術 | 嵌入式系統(tǒng) 驅(qū)動編程 | 集成電路 | 器件替換 | 模擬技術 | 新手園地 | 單 片 機 | DSP技術 | MCU技術 | IC 設計 | IC 產(chǎn)業(yè) | CAN-bus/DeviceNe |
請教有關Small RTOS51的問題 |
| 作者:zlspring 欄目:嵌入式系統(tǒng) |
最近在研究陳明計老師的Small RTOS51,參照陳老師的例子,自己編了一個簡單的程序,有兩個任務,任務ledtask1使P2.2口的LED燈點亮,P2.4口的LED燈熄滅。任務ledtask2使P2.2口的LED燈熄滅,P2.4口的LED燈點亮。優(yōu)先級我設為ledtask1高于ledtask2,但是有個疑問想問問大家。程序代碼如下: #include "CONFIG.H" /*定義任務*/ void ledtask1(void); void ledtask2(void); void ledtask1(void) { while(1) { P2_2 =1; P2_4 =0; OSWait(K_TMO,2); } } void ledtask2(void) { while(1) { P2_2 =0; P2_4 =1; OSWait(K_TMO,5); } } void main(void) { OSInit(); TMOD = 0X02; //use timer 0,working at mode 2 TL0 = 0x0; TH0 = 0x0; TR0 = 1; ET0 = 1; OSTaskCreate(ledtask1, NULL, 0); OSTaskCreate(ledtask2, NULL, 1); while(TRUE) { PCON = PCON | 0x01; //CPU進入休眠狀態(tài) } } 我的疑問是當任務ledtask2執(zhí)行完后,CPU通過“PCON = PCON | 0x01;”語句進入休眠狀態(tài),那么當定時器0再次產(chǎn)生定時中斷時,CPU應該是從待機方式進入到正常工作方式了吧,但是我進行程序調(diào)試的時候程序指針為啥就一直待在“PCON = PCON | 0x01;”這個地方不動了呢?懇請大蝦們給予指點,感謝萬分! |
| 2樓: | >>參與討論 |
| 作者: MAME32 于 2006/12/11 12:22:00 發(fā)布:
沒有系統(tǒng)節(jié)拍處理程序。 試試在ledtask1里加上系統(tǒng)節(jié)拍處理函數(shù)OSTimeTick(); |
|
| 3樓: | >>參與討論 |
| 作者: mame32 于 2006/12/11 12:31:00 發(fā)布:
任務切換要用OSTimeTick() #define EN_TIMER_SHARING 0 0:在任務中調(diào)用OSTimeTick() 1:定時器中斷調(diào)用OSTimeTick() |
|
| 4樓: | >>參與討論 |
| 作者: rtfsc 于 2006/12/15 11:01:00 發(fā)布:
re 還是用1。12版吧,1。20相對太大,不太適合51 |
|
|
|
| 免費注冊為維庫電子開發(fā)網(wǎng)會員,參與電子工程師社區(qū)討論,點此進入 |
Copyright © 1998-2006 m.58mhw.cn 浙ICP證030469號 |