音影先锋亚洲天堂网|电影世界尽头的爱完整版播放|国产 熟女 91|高清无码免费观看欧美日韩|韩国一区二区三区黄色录像|美女亚洲加勒比在线|亚洲综合网 开心五月|7x成人在线入口|成人网站免费日韩毛片区|国产黄片?一级?二级?三级

登錄 免費注冊 首頁 | 行業(yè)黑名單 | 幫助
維庫電子市場網(wǎng)
技術交流 | 電路欣賞 | 工控天地 | 數(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的問題
最近在研究陳明計老師的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
沒有系統(tǒng)節(jié)拍處理程序。

試試在ledtask1里加上系統(tǒng)節(jié)拍處理函數(shù)OSTimeTick();  


3樓: >>參與討論
mame32
任務切換要用OSTimeTick()


#define EN_TIMER_SHARING        0        

0:在任務中調(diào)用OSTimeTick()
1:定時器中斷調(diào)用OSTimeTick()  



4樓: >>參與討論
rtfsc
re
還是用1。12版吧,1。20相對太大,不太適合51

參與討論
昵稱:
討論內(nèi)容:
 
 
相關帖子
請高手談ARM前景
看這樣的需求需要什么樣的板子?
FC6下編譯 uClinux 提示boa error 1
求問44B0的bios
為什么這個版面人氣這么差?
免費注冊為維庫電子開發(fā)網(wǎng)會員,參與電子工程師社區(qū)討論,點此進入


Copyright © 1998-2006 m.58mhw.cn 浙ICP證030469號