找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 8741|回復: 13
打印 上一主題 下一主題
收起左側(cè)

為什么單片機中斷里面并不能加延時?

  [復制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:399659 發(fā)表于 2018-10-16 18:01 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
加了延時  為什么程序就出不來
一直在延時里面
分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復

使用道具 舉報

來自 2#
ID:388197 發(fā)表于 2018-10-16 21:21 | 只看該作者
中斷里最好不要寫循環(huán),更不應該寫DELAY之類的東西.
其實DELAY這類東西,平時應該注意養(yǎng)成習慣,能不用盡量不要去用.

評分

參與人數(shù) 1黑幣 +20 收起 理由
admin + 20 回帖助人的獎勵!

查看全部評分

回復

使用道具 舉報

來自 3#
ID:123289 發(fā)表于 2018-10-16 22:23 | 只看該作者
可以加延時!
提出這個問題,說明你對定時器理解的不夠。
你需要再定時器原理,并想想樓上網(wǎng)友說的是否正確?

評分

參與人數(shù) 1黑幣 +20 收起 理由
admin + 20 回帖助人的獎勵!

查看全部評分

回復

使用道具 舉報

地板
ID:169944 發(fā)表于 2018-10-16 18:16 | 只看該作者
假設中斷加了延時,那當在中斷延時子程序里,下個中斷來了,那就調(diào)到下一個中斷,下一個中斷延時子程序里又會來下一個中斷………如此,這是個死嵌套,而且可以加延時,只要延時短,不過會影響效率

評分

參與人數(shù) 1黑幣 +20 收起 理由
admin + 20 回帖助人的獎勵!

查看全部評分

回復

使用道具 舉報

5#
ID:410689 發(fā)表于 2018-10-16 18:24 | 只看該作者
中斷服務程序可以加延時程序的,你可以只開一個中斷來測試一下。

評分

參與人數(shù) 1黑幣 +20 收起 理由
admin + 20 回帖助人的獎勵!

查看全部評分

回復

使用道具 舉報

6#
ID:310519 發(fā)表于 2018-10-16 18:25 | 只看該作者
在進中斷后關(guān)了中斷,最后出來時再打開。

評分

參與人數(shù) 1黑幣 +20 收起 理由
admin + 20 回帖助人的獎勵!

查看全部評分

回復

使用道具 舉報

7#
ID:402387 發(fā)表于 2018-10-16 18:57 來自手機 | 只看該作者
延時要加在中斷函數(shù)里
回復

使用道具 舉報

8#
ID:386381 發(fā)表于 2018-10-16 19:00 來自手機 | 只看該作者
那樣會影響中斷執(zhí)行的

評分

參與人數(shù) 1黑幣 +20 收起 理由
admin + 20 回帖助人的獎勵!

查看全部評分

回復

使用道具 舉報

9#
ID:384722 發(fā)表于 2018-10-16 20:33 | 只看該作者
死循環(huán) 樓上說的感覺不錯  學習學習
回復

使用道具 舉報

10#
ID:387733 發(fā)表于 2018-10-17 07:20 | 只看該作者
在一個中斷里面使用延時程序占用CPU資源,勢必影響新的中斷請求,以及中斷級別較低的中斷請求。
回復

使用道具 舉報

11#
ID:279667 發(fā)表于 2018-10-17 08:53 | 只看該作者
中斷中盡量避免加入延時或者操作比較耗時的操作,因為,中斷就是要去執(zhí)行很要緊的事情,當中斷產(chǎn)生時,NVIC便會強行把CPU拉到中斷現(xiàn)場去處理,這時候如果加上延時,會獨占CPU并且讓CPU做沒有意義的事情,浪費資源。
回復

使用道具 舉報

12#
ID:396960 發(fā)表于 2018-10-17 09:23 | 只看該作者
想說兩點:
1.為什么會進入中斷, 因為有中斷標志位置位(置1) ,比如 INTFlag = 1 ;
然后進入中斷。
void INTHandler(void)
{
    DELAY();//這是添加的延時
}
那么如果沒有將“中斷標志位 INTFlag”清零,就會一直進入“中斷服務函數(shù)-void INTHandler(void)”,
那就一直執(zhí)行里面的操作,延時。。。
2.如果想中斷后延時,你可以在中斷里面添加一個標志位:
void INTHandler(void)
{
      INTFlag = 0 ;//將中斷標志清零
      xxflag = 1;//xxflag是定義的全局變量,指示已經(jīng)產(chǎn)生中斷的標志
}

main函數(shù)或者其他函數(shù)里面檢測 if(xxflag == 1){ xxflag == 0 ; DELAY(); }

這樣就行了
回復

使用道具 舉報

13#
ID:382465 發(fā)表于 2018-10-17 11:24 | 只看該作者
中斷里加延時?那中斷的意義就不存在了。
回復

使用道具 舉報

14#
ID:411126 發(fā)表于 2018-10-17 15:07 | 只看該作者
為了程序的效率,中斷里的函數(shù)要盡量簡單
回復

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規(guī)則

手機版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機教程網(wǎng)

快速回復 返回頂部 返回列表