static void RadioReleaseSPI(void) {
__disable_interrupt();
spiTxRxByteCount &= ~0x0100;
__enable_interrupt();
}
我了解多个任务可能会尝试使用SPI资源。
spiTxRxByteCount
是一个全局变量,用于跟踪另一个任务当前是否正在使用SPI。当任务需要SPI时,它可以检查spiTxRxByteCount
的状态以查看是否正在使用SPI。使用SPI完成任务后,它将调用此函数并清除该位,以指示SPI现在空闲。但是,为什么要先禁用中断,然后再重新启用它们呢?只是偏执狂? 最佳答案
&=将执行读-修改-写操作-这不是原子的。您不希望在其中途发生中断而更改任何内容,从而导致写入覆盖值不正确。
关于c - 为什么在这里需要禁用中断?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/13614162/