谢谢大家的回复,但是还有个疑问一直没有解决。
问题2:将SPI接口的CS配置成软件nss管理,以下代码可以执行过去。
u8 SPI1_ReadWriteByte(u8 TxData)
{
while((SPI1->SR&1<<1)==0);
SPI1->DR=TxData;
while((SPI1->SR&1<<0)==0);
return SPI1->DR;
}
也就是说程序不会死在 while((SPI1->SR&1<<0)==0);这个地方。
但是如果将片选信号配置成 Hardware NSS management,那么程序就会死在 while((SPI1->SR&1<<0)==0);这个地方。
我们理解SPI主设备读取数据线上的值,实际与片选是没有关系的,只要这个时候有SCK信号就可以了,配置成 Hardware NSS management的时候,SCK使能正常发出来的。 |