|
|||||||||||
| 技術(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 |
uC/OSII中,在中斷后直接發(fā)送信號(hào)量可否?見(jiàn)--> |
| 作者:likearm 欄目:嵌入式系統(tǒng) |
__interrupt void UART0_RX_ISR(void) { OSSemPost(Uart0Sem); //發(fā)送信號(hào)量 U0IER = U0IER & (~0x01); } 這樣可以嗎? 我看uC/OS中斷的用法是: *用戶中斷服務(wù)子程序: 1、保存全部CPU寄存器; 2、調(diào)用OSIntEnter或OSIntNesting直接加1 3、執(zhí)行用戶代碼做中斷服務(wù); 4、調(diào)用OSIntExit(); 5、恢復(fù)所有CPU寄存器 6、執(zhí)行中斷返回指令 所以不知直接發(fā)送是否可以? |
| 2樓: | >>參與討論 |
| 作者: xiaoxiao99 于 2005/7/7 18:26:00 發(fā)布:
可以,但是-》 可以,但是如果有一個(gè)高優(yōu)先級(jí)任務(wù)正在等待這個(gè)信號(hào)量,OSSemPost(Uart0Sem)調(diào)用了OSSched()不會(huì)在中斷中調(diào)度任務(wù),所以那個(gè)正在等待這個(gè)信號(hào)量的任務(wù)不會(huì)立刻得到執(zhí)行。要是使用了 OSIntEnter()和OSIntExit()就能在OSIntExit()中實(shí)現(xiàn)任務(wù)調(diào)度。 |
|
| 3樓: | >>參與討論 |
| 作者: likearm 于 2005/7/8 8:36:00 發(fā)布:
謝謝! 具體在程序中測(cè)試了一下,結(jié)果:響應(yīng)中斷后發(fā)送信號(hào)量可以使已等待此信號(hào)量更高優(yōu)先級(jí)的任務(wù)發(fā)生切換,出現(xiàn)的問(wèn)題是sp及幾個(gè)通用寄存器被重復(fù)壓棧。 只好又該成uc/os標(biāo)準(zhǔn)的中斷用法了。 |
|
| 免費(fèi)注冊(cè)為維庫(kù)電子開(kāi)發(fā)網(wǎng)會(huì)員,參與電子工程師社區(qū)討論,點(diǎn)此進(jìn)入 |
Copyright © 1998-2006 m.58mhw.cn 浙ICP證030469號(hào) |