|
static void WR_CMD (unsigned char cmd)
{
/* Wait for SPI1 Tx buffer empty */
while (SPI_I2S_GetFlagStatus(SPI1, SPI_I2S_FLAG_TXE) == RESET);
/* Send SPI1 data */
SPI_I2S_SendData(SPI1,cmd);
/* Wait for SPI1 data reception */
while (SPI_I2S_GetFlagStatus(SPI1, SPI_I2S_FLAG_RXNE) == RESET);
/* Read SPI1 received data */
SPI_I2S_ReceiveData(SPI1);
}
我这样写就可以的。
我说的判忙标志都是指的是stm32的。
while (SPI_I2S_GetFlagStatus(SPI1, SPI_I2S_FLAG_TXE) == RESET);
这一句如果改为直接操作寄存器,还有下面的判忙改为直接读寄存器,那么运行结果就不对。
而直接用库函数就正确.
????? |
|