我有這樣或多或少的理論問題,而我所有的IDE重新安裝...如果爲單箇中斷創建多個ISR,會發生什麼情況?
所以我MSP430s工作主要是,我很好奇,如果我創建一個單一的中斷向量多的ISR會發生什麼。
比方說,我在看端口2(引腳輸入),用於按下按鈕。
#pragma vector = PORT2_VECTOR
__interrupt void Port2_ISR_1 (void)
{
if (BUTTON1_DOWN)
{
g_temp = 1234;
}
}
現在,如果我再補充一點對應於同一PORT2_VECTOR另外一個地方?
#pragma vector = PORT2_VECTOR
__interrupt void Port2_ISR_2 (void)
{
if (BUTTON2_DOWN)
{
g_temp = 2345;
}
}
它們對應於被按下的不同按鈕,但是對於相同的中斷向量。當編譯器編譯時,如果它們屬於同一個向量,它是否將服務例程放在一起?當PORT2中斷關閉時,微控制器是否連續執行?
這是依賴於實現,但一定要遇到一些討厭的未定義的行爲。 – ouah
那麼可以說我寫了一個使用中斷的SPI庫。我建立它,併發送.dlb(或w/e)給我的朋友。我的朋友使用我的庫,但想要實現巧合使用相同向量的中斷。然後會發生什麼?我會認爲許多庫使用中斷,這個問題是如何避免的? – Mewa
IIRC,ISR表由鏈接器構建,因此鏈接階段會導致_duplicate symbol error_。你試過了嗎? – rodrigo