为什么在此禁用中断?

static void RadioReleaseSPI(void) {
    __disable_interrupt();
    spiTxRxByteCount &= ~0x0100;
    __enable_interrupt();
}

我知道多个任务可能会尝试使用SPI资源. spiTxRxByteCount是一个全局变量,用于跟踪SPI当前是否正被另一个任务使用.当任务需要SPI时,它可以检查spiTxRxByteCount的状态以查看是否正在使用SPI.当使用SPI完成任务时,它会调用此函数并清除该位,以指示SPI现在是空闲的.但是为什么要先禁用中断然后再重新启用呢?只是偏执狂?

& =将执行读 – 修改 – 写操作 – 它不是原子的.您不希望中断在中间改变,导致写入覆盖的值不正确.
相关文章
相关标签/搜索