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

登錄 免費(fèi)注冊 首頁 | 行業(yè)黑名單 | 幫助
維庫電子市場網(wǎng)
技術(shù)交流 | 電路欣賞 | 工控天地 | 數(shù)字廣電 | 通信技術(shù) | 電源技術(shù) | 測控之家 | EMC技術(shù) | ARM技術(shù) | EDA技術(shù) | PCB技術(shù) | 嵌入式系統(tǒng)
驅(qū)動編程 | 集成電路 | 器件替換 | 模擬技術(shù) | 新手園地 | 單 片 機(jī) | DSP技術(shù) | MCU技術(shù) | IC 設(shè)計(jì) | IC 產(chǎn)業(yè) | CAN-bus/DeviceNe

求救:uC/OS中信號量函數(shù)的用法

作者:zhf0964 欄目:嵌入式系統(tǒng)
求救:uC/OS中信號量函數(shù)的用法
我在一個(gè)中斷中發(fā)出一個(gè)信號量,在主任務(wù)中接收這個(gè)信號量進(jìn)行處理。
但是在接收到這個(gè)信號量之后,I2C的中斷進(jìn)不去了。
如果在這個(gè)信號量有效之前進(jìn)行I2C的操作一切正常。
用的是PLC2136,Keil3編譯器。
我的程序如下:
中斷部分:
void    EINT0_Exception(void)
{
    EXTINT=0x01;    //清除EINT0中斷標(biāo)志
    OSSemPost(PowerDown);//發(fā)出了信號量
}

主任務(wù)部分:
  .
  .
  .

  I2c1Write();    //進(jìn)行寫24C256的操作
                      //此時(shí)寫操作成功!
  .
  .
  .
OSSemPend(PowerDown, 4, &i);    //等待信號量
if(i==OS_NO_ERR)
{//如果信號量有效,進(jìn)行處理
  .
  .
  .

    I2c1Write();    //進(jìn)行寫24C256的操作
                        //此時(shí)寫操作失敗!
  .
  .
  .

}

請教高手這是什么原因?
先行謝過!


* - 本貼最后修改時(shí)間:2006-11-27 17:05:04 修改者:zhf0964

2樓: >>參與討論
xinzha
沒有接觸過你用的器件,但是感覺程序有一個(gè)比較不安全的地方
void    EINT0_Exception(void)
{
    EXTINT=0x01;    //清除EINT0中斷標(biāo)志
    OSSemPost(PowerDown);//發(fā)出了信號量
}
清除中斷不要這么寫吧,萬一此時(shí)也有其他中斷發(fā)生就會被你給殺掉。
應(yīng)該用‘a(chǎn)nd’或者‘or’的辦法清除中斷,只清除你要清除的中斷位

3樓: >>參與討論
zhf0964
首先謝謝樓上的指正!
經(jīng)過多日的查證、調(diào)試,剛才終于發(fā)現(xiàn)問題所在。
原來需要在中斷程序最后加上一句,通知操作系統(tǒng)中斷完成。
修正如下:
void    EINT0_Exception(void)
{
    EXTINT|=0x01;    //清除EINT0中斷標(biāo)志
    OSSemPost(PowerDown);//發(fā)出了信號量

    VICVectAddr = 0;     //通知中斷控制器中斷結(jié)束
              //必須加上這一句。
                         //這一句類似于51匯編中的RETI指令。
}

該問題的出現(xiàn)實(shí)乃本人粗心大意,閱讀資料不仔細(xì)造成!
望各位同仁吸取本人教訓(xùn),細(xì)心有加,在研發(fā)工作中少走彎路。


* - 本貼最后修改時(shí)間:2006-12-2 16:16:26 修改者:zhf0964

4樓: >>參與討論
longwu810
我也犯過這樣的錯(cuò)誤
我又一次調(diào)試程序,發(fā)現(xiàn)中斷進(jìn)了一次之后,后面老是不進(jìn)來了,后來才發(fā)現(xiàn)也是少了那一句.

參與討論
昵稱:
討論內(nèi)容:
 
 
相關(guān)帖子
新年快樂!
UCOS-II 為什么不能產(chǎn)生軟中斷?
在學(xué)校的大學(xué)生想做嵌入軟件,應(yīng)該做哪個(gè)OS?
各位幫幫忙,求教關(guān)于ucos移植后出現(xiàn)的問題
難以解決的I2C問題。DM642+SA7113
免費(fèi)注冊為維庫電子開發(fā)網(wǎng)會員,參與電子工程師社區(qū)討論,點(diǎn)此進(jìn)入


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