static void RadioReleaseSPI(void) {
__disable_interrupt();
spiTxRxByteCount &= ~0x0100;
__enable_interrupt();
}
Run Code Online (Sandbox Code Playgroud)
我知道多个任务可能会尝试使用SPI资源.spiTxRxByteCount是一个全局变量,用于跟踪SPI当前是否正被另一个任务使用.当任务需要SPI时,它可以检查状态spiTxRxByteCount以查看是否正在使用SPI.当使用SPI完成任务时,它会调用此函数并清除该位,以指示SPI现在是空闲的.但为什么要先禁用中断然后再重新启用呢?只是偏执狂?
*pSpiTxBuf++ = CC2520_INS_SFLUSHRX; // get rid of this packet
*pSpiTxBuf-- = CC2520_INS_SFLUSHRX; // double flush [CC2520 Bug#1]
Run Code Online (Sandbox Code Playgroud)
任何人都可以向我解释上述两行试图做什么?pSpiTxBuf是一个uint8_t *