大家好,对于各种通信,我有一些不明白。 以spi为例: u8 SPI_FLASH_SendByte(u8 byte) { /* Loop while DR register in not emplty */ while(SPI_GetFlagStatus(SPI1, SPI_FLAG_TXE) == RESET);
/* Send byte through the SPI1 peripheral */ SPI_SendData(SPI1, byte);
/* Wait to receive a byte */ while(SPI_GetFlagStatus(SPI1, SPI_FLAG_RXNE) == RESET);
/* Return the byte read from the SPI bus */ return SPI_ReceiveData(SPI1); } 一句一句的来看 while(SPI_GetFlagStatus(SPI1, SPI_FLAG_TXE) == RESET); 这个软件都知道什么意思 但是他执行了什么硬件动作呢 就是这句话是硬件做了什么改变,才有此功能,如果不写这句话呢。 SPI_SendData(SPI1, byte); 这句话又有什么硬件动作,如果不写这句话 就应该不会发送数据 是吗,那有他没他硬件执行了什么动作,才使开始发送数据。 ?????????????? |