我有兩種模式需要在滑動開關產生的中斷之間切換。最初我讀取當前位置並選擇模式/功能。當開關的位置改變時,我想在兩個右邊之間切換。我有一箇中斷髮生在兩邊(每當位置改變)。但是,由於兩個函數都在while循環中連續運行,所以我不能只在中斷中調用它們。基本上,我有這樣的事情:在帶有中斷的模式之間切換
interrupt()
{
//not sure how to switch between modes here
}
main()
{
//choose mode on startup
if (switch_HIGH)
modeA();
else
modeB();
}
modeA()
{
while(1)
{
//do something
}
}
modeB()
{
while(1)
{
//do something
}
}
我不知道這是否是一個好主意,只留下一個功能,它在哪裏,只是轉移到別的東西,但我想不出任何其他辦法可以做到它。如果有人能告訴我我該如何解決這個問題,我會非常感激。 我使用的語言是C,該平臺是Altera DE1開發板上的NIOS系統。
感謝您的回覆。投票是我最初的工作。問題是我調用一個子函數來讀取需要幾秒鐘的文件。那麼我將不得不在該功能中進行輪詢?這被認爲是不好的編程習慣?你所說的話是完全合理的。 – Ammar
@Ammar我添加了一些代碼來說明我的意思是你可以組織你的程序。如果例如'modeB()'需要幾秒鐘的運行時間,如果在交換機忙時切換到'modeA()',你仍然會進入'modeA()。如果你的意思是它應該*停止*當前模式,如果在程序繁忙時切換開關,那麼中斷開始變得更有意義......當你反問你的問題時很難知道。 :) – unwind
對不起......可能我應該更清楚這一點。基本上,modeA不斷從攝像頭獲取輸入並運行算法。這比從SD卡獲取圖像輸入的模式B快得多。讀取圖像的功能是降低圖像速度,逐行讀取圖像數據。如果我在每一行中對該函數內的開關位置進行輪詢,我可以快速退出並可能取得理想的結果。如果開關位置改變了,我想停止當前模式,然後轉到另一個模式。 – Ammar