|
|||||||||||
| 技術(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 |
ARMLPC2131中斷棘手問(wèn)題 |
| 作者:xxyyxxyy 欄目:ARM技術(shù) |
在2131中使用中斷(用的是ZLG的模板),在中斷里計(jì)數(shù),然后在主程序中用while(count<10);等待,并判斷是否計(jì)數(shù)到一定的值,然后跳出while,關(guān)中斷,做下面的程序. 但是現(xiàn)在的問(wèn)題是,while怎么也跳不出,后面的事情做不了(中斷是可以關(guān)的),在while中用if,break也不行,感覺是循環(huán)中不能判斷.也不知道是什么原因. PS:各種中斷都試過(guò),好象都存在這個(gè)問(wèn)題 |
| 2樓: | >>參與討論 |
| 作者: xxyyxxyy 于 2006/9/8 13:07:00 發(fā)布:
繼續(xù)問(wèn)題 我用了周立功那本《深入淺出ARM213X 上冊(cè)》中的快速中斷實(shí)驗(yàn)1。 在中斷中加了count++; 把Main 中的 while(1) 改為 while(count<10); 也一樣跳不出 while. 這是什么道理啊 |
|
| 3樓: | >>參與討論 |
| 作者: eyuge2 于 2006/9/8 13:09:00 發(fā)布:
試試看 不知道你可確定是否中斷真的發(fā)生了,可以通過(guò)在中斷處理程序中設(shè)端點(diǎn),來(lái)確認(rèn)這點(diǎn)。 如果確實(shí)發(fā)生中斷了,在count前加一個(gè)volatile限定詞,再試試。 |
|
| 4樓: | >>參與討論 |
| 作者: xxyyxxyy 于 2006/9/8 13:26:00 發(fā)布:
太感謝了 我中斷是可以做的。剛才試了在Count前加volatile解決了。太感謝了。你能講一下原因嗎? 留個(gè)Msn或QQ吧,方便以后和你交流。謝謝 |
|
| 5樓: | >>參與討論 |
| 作者: zyarm5 于 2006/9/10 14:17:00 發(fā)布:
呵呵 你自己看下數(shù)據(jù)的存儲(chǔ)方式, |
|
| 6樓: | >>參與討論 |
| 作者: erlking 于 2006/9/13 11:11:00 發(fā)布:
static才是對(duì)的吧? 聲明為全局變量 |
|
| 7樓: | >>參與討論 |
| 作者: 在線網(wǎng)友 于 2006/9/13 22:49:00 發(fā)布:
樓上 也得 補(bǔ)補(bǔ)課!免得到時(shí)耽擱時(shí)間! |
|
| 8樓: | >>參與討論 |
| 作者: eyuge2 于 2006/9/14 13:21:00 發(fā)布:
你可以上keil的網(wǎng)站 不好意思才回復(fù)。keil的網(wǎng)站有關(guān)于volatile限定詞的作用介紹。你可以看一下ZLG提供的頭文件,里面所有寄存器的定義都使用了這個(gè)限定詞。 |
|
| 9樓: | >>參與討論 |
| 作者: brm00 于 2006/9/14 22:01:00 發(fā)布:
volatile 好像記得用volatile修飾的變量在程序訪問(wèn)時(shí)是需要到變量的實(shí)際地址去訪問(wèn),而沒有用volatile修飾的變量在編譯的時(shí)候有可能被優(yōu)化,就是說(shuō)把這個(gè)變量值放到一個(gè)寄存器中,下次讀取的時(shí)候是讀的寄存器中的變量值,而不是這個(gè)變量的實(shí)際地址里的值。大概就是這個(gè)意思,不對(duì)的地方請(qǐng)大家指教,拍磚。 |
|
| 10樓: | >>參與討論 |
| 作者: erlking 于 2006/9/18 17:58:00 發(fā)布:
re 在線網(wǎng)友 發(fā)表于 2006-9-13 22:49 ZLG-ARM ←返回版面 樓上 也得 補(bǔ)補(bǔ)課!免得到時(shí)耽擱時(shí)間! volatile是用于防止編譯器優(yōu)化掉的,比如IO口,串口buf都要用volatile來(lái)修飾。 static是用于指定變量類型為靜態(tài)分配而不是臨時(shí)動(dòng)態(tài)分配,好比全局變量一樣,二者的區(qū)別只是別的函數(shù)不能訪問(wèn)static變量,而全局的可以 不知理解對(duì)否,請(qǐng)發(fā)表高見 |
|
| 11樓: | >>參與討論 |
| 作者: tangsunsun 于 2006/9/20 15:33:00 發(fā)布:
被優(yōu)化掉了 看看編譯后的匯編語(yǔ)言就會(huì)明白是什么問(wèn)題了 |
|
|
|
| 免費(fèi)注冊(cè)為維庫(kù)電子開發(fā)網(wǎng)會(huì)員,參與電子工程師社區(qū)討論,點(diǎn)此進(jìn)入 |
Copyright © 1998-2006 m.58mhw.cn 浙ICP證030469號(hào) |