【发布时间】:2020-12-07 21:58:36
【问题描述】:
我正在为 LPC2109/2 和 MCP4921 之间的 SPI 通信编写程序。这是一个任务 关于学业。我的导师问我一个问题,为什么在这一行中需要“&”?在这一行中,我们等待 SPI 传输结束。哪个答案应该是正确的?
#define SPI_SPIF_bm (1<<7)
...
while((S0SPSR & SPI_SPIF_bm) == 0){}
- 我们使用“&”作为逻辑与,例如:(0000 & 1000) 给我们 0000 而不是 (0000 | 1000) 给我们 1000。
- 我可以只使用这行代码:
while((S0SPSR) == 0){}吗?在我看来 - 不。我们需要将寄存器S0SPSR中的值与位SPIFSPI_SPIF_bm进行比较。
可能有不同的解决方案吗?
附件
LPC2129/01用户手册:https://www.nxp.com/docs/en/user-guide/UM10114.pdf
【问题讨论】:
-
您是在问位掩码是什么意思还是寄存器的作用是什么?