[英]Interrupts in C
我有一個關於C中斷的問題。
信息:我使用Altera的DE0開發板,該開發板可與NIOS II一起使用,並使用C語言進行了編碼。
實際代碼說明:
我有一個main()
我有一個while(1)
循環。 我用一個Switch-Case構造和狀態自己的typedef
編碼了一個自動機。
現在我的問題是:
我想將Switch-Case構造中的事件外包到一個中斷服務例程(ISR)中。
我可以通過按按鈕1和/或按鈕2來引起狀態更改,ISR將捕獲該狀態更改。
我的問題:ISR如何知道哪種情況對應於哪個事件?
是否可以為每個按鈕編寫不同的ISR?
這段代碼可以做到嗎:
void alt_irq_register(irNr, (void *) contextPtr, (void *) devPtr);
根據您提供的信息,
您可以將狀態變量設置為Global,並確保使其volatile
因為您將在ISR中對其進行修改。
void ISR_Func()
{
Read which button is pressed
Assign value to state variable
}
void main()
{
while(1)
{
switch(state_variable)
{
case Button_1:
button1_func();
break;
case Button_2:
button2_func();
break;
default:
break;
}
}
}
我的問題:情監偵在女巫案中是如何知道的,並做相應的事情?
建議不要從ISR執行狀態機功能。 最好從ISR修改狀態並從現有狀態機執行功能。
是否可以為2個按鈕編寫不同的ISR?
正如您沒有提到的那些按鈕的連接方式一樣,您可以將兩個按鈕連接到兩個不同的“外部硬件中斷”引腳,並且可以為每個外部硬件中斷編寫一個ISR。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.