我把原子的这个程序拆成了两个:
//SPIx 读写一个字节
//TxData:要写入的字节
//返回值:读取到的字节
u8 SPIx_ReadWriteByte(u8 TxData)
{
u8 retry=0;
while((SPI1->SR&1<<1)==0)//等待发送区空
{
retry++;
if(retry>200)return 0;
}
SPI1->DR=TxData; //发送一个byte
retry=0;
while((SPI1->SR&1<<0)==0) //等待接收完一个byte
{
retry++;
if(retry>200)return 0;
}
return SPI1->DR; //返回收到的数据
}
、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、
拆开成下面两个程序后就不能读出ID了,,!!!!!!!!!!!!!!!!请教啊
//作用:SPI读一个byte
u8 SPI_R_BYTE(void)
{
u8 t=0;
SPI1->DR=0XFF;
while((SPI1->SR&(1<<0))==0) //等待接收完一个byte
{
t++;
if(t>200)
return 0;
}
return SPI1->DR;
}
//作用:SPI写一个byte
void SPI_WR_BYTE(u8 txdata)
{
u8 t=0;
while((SPI1->SR&(1<<1))==0)//==0发送缓冲区非空
{
t++;
if(t>200)
return;
}
SPI1->DR=txdata;
}
|