|
|||||||||||
| 技術(shù)交流 | 電路欣賞 | 工控天地 | 數(shù)字廣電 | 通信技術(shù) | 電源技術(shù) | 測控之家 | EMC技術(shù) | ARM技術(shù) | EDA技術(shù) | PCB技術(shù) | 嵌入式系統(tǒng) 驅(qū)動編程 | 集成電路 | 器件替換 | 模擬技術(shù) | 新手園地 | 單 片 機 | DSP技術(shù) | MCU技術(shù) | IC 設(shè)計 | IC 產(chǎn)業(yè) | CAN-bus/DeviceNe |
請教高手:關(guān)于在中斷中調(diào)用函數(shù)?? |
| 作者:幽谷天蘭 欄目:單片機 |
子函數(shù)是: void cunchu (unsigned LONG t1,unsigned LONG t2,uchar p) { if (TMR1IF==1) { t1=65535; TMR1IF=0; } else t1=t1+ct.a; if (t1>noise) { if(t2>0) { if(n1%2==p) { if(t2<65535) time1[n1]=t2; if(t2>=65535)time1[n1]=65535; n1++; } t2=0; } } else { t2=t2+t1; t1=0; } } 中斷函數(shù)是: void interrupt ccpp1 (void) { GIE=0; CCP1IF=0; 。。。 cunchu(h,L,0); 。。。 cunchu(L,h,0); 。。。 } 這樣調(diào)用是否存在問題???? 子函數(shù)只在中斷中調(diào)用過,其他地方未使用過。 程序編譯通過,硬件調(diào)試無結(jié)果,如果不用調(diào)用函數(shù)的形式,而在中斷中直接做 的話,硬件調(diào)試結(jié)果正確。請大家?guī)兔,謝謝! 是不是中斷里的兩個調(diào)用出現(xiàn)了邏輯錯誤?關(guān)于h和L每次使用是不是都是個新值,上一次調(diào)用后得到的h和L不對下次調(diào)用影響?如果是那樣,不出結(jié)果就可想而知了 * - 本貼最后修改時間:2005-11-14 13:13:50 修改者:幽谷天蘭 |
| 2樓: | >>參與討論 |
| 作者: xieyuanbin 于 2005/11/14 12:53:00 發(fā)布:
如果確實沒在其他地方調(diào)用, 那么懷疑堆棧溢出. |
|
| 3樓: | >>參與討論 |
| 作者: rad.zhu 于 2005/11/15 9:33:00 發(fā)布:
變量是否被重復(fù)使用 在中斷中調(diào)用其他函數(shù)有個很重要的問題是:變量的定義 你的t1,t2,以及P需要定義成volatile類型, 這是告訴編譯器這個變量不在優(yōu)化的范圍內(nèi),所分配的地址不能重復(fù)使用。 改過之后再測試吧。 |
|
|
|
| 免費注冊為維庫電子開發(fā)網(wǎng)會員,參與電子工程師社區(qū)討論,點此進(jìn)入 |
Copyright © 1998-2006 m.58mhw.cn 浙ICP證030469號 |