1

メインで初期化する値があるコードで、かなり奇妙な問題が発生しています。割り込み内でその変数を呼び出そうとすると、0になります。ここで何が欠けていますか? 異なる変数は割り込み内に存在しますか?

これは、割り込みに関するより理論的な質問であり、アイドルと割り込みの間で値を共有できないかどうかに注意してください。

Supervisor supervisor;
XScuTimer TimerInstance;
XScuGic IntcInstance;
uint32_t offset;

void interruptRoutine(void *CallBackRef) {

    // Define pointer to timer
    XScuTimer *TimerInstancePtr = (XScuTimer *) CallBackRef;

    // If timer is expired, clear interrupt status
    if (XScuTimer_IsExpired(TimerInstancePtr)) {
        XScuTimer_ClearInterruptStatus(TimerInstancePtr);

        // Why is offset 0 within the interrupt routine?
        xil_printf("Interrupt: %u\n", offset);

    }

}

//.. I omitted the interrupt init method ..//

int main() {

    while (true) {
        // Get all sensor data
        offset = 1;

    }

}
4

0 に答える 0