|
|||||||||||
| 技術(shù)交流 | 電路欣賞 | 工控天地 | 數(shù)字廣電 | 通信技術(shù) | 電源技術(shù) | 測(cè)控之家 | EMC技術(shù) | ARM技術(shù) | EDA技術(shù) | PCB技術(shù) | 嵌入式系統(tǒng) 驅(qū)動(dòng)編程 | 集成電路 | 器件替換 | 模擬技術(shù) | 新手園地 | 單 片 機(jī) | DSP技術(shù) | MCU技術(shù) | IC 設(shè)計(jì) | IC 產(chǎn)業(yè) | CAN-bus/DeviceNe |
一個(gè)ucos中程序的問題 |
| 作者:dbduan 欄目:MCU技術(shù) |
我在213x的例程里面的“下冊(cè)實(shí)驗(yàn)例程\第3章-μCOS-II中間件\3.3-MODEM接口模塊\MODEM”的MODEM.c文件中看到讀取一個(gè)字節(jié)的MODEM數(shù)據(jù)是這樣寫的: uint8 ModemGetch(void) { uint8 rt; OS_ENTER_CRITICAL(); while ((U1LSR & 0x00000001) == 0) { /* 沒有收到數(shù)據(jù) */ U1IER = U1IER | 0x01; /* 允許接收中斷 */ OSSemPend(Uart1Get, 0, &rt); } rt = U1RBR; /* 讀取收到的數(shù)據(jù) */ OS_EXIT_CRITICAL(); return rt; } 在這里,我有點(diǎn)想不明白: 如果當(dāng)前串口沒有數(shù)據(jù),那么當(dāng)前任務(wù)將被掛起,切換到另一個(gè)任務(wù)。但是 由于在OSSemPend()之前進(jìn)入了臨界區(qū),所以中斷應(yīng)該被關(guān)閉。那么切換到 另一個(gè)任務(wù)以后,中斷使能狀態(tài)就可能發(fā)生變化。這種寫法是否合理? |
|
|
| 免費(fèi)注冊(cè)為維庫電子開發(fā)網(wǎng)會(huì)員,參與電子工程師社區(qū)討論,點(diǎn)此進(jìn)入 |
Copyright © 1998-2006 m.58mhw.cn 浙ICP證030469號(hào) |