这个STM8的SPI通讯也够奇葩的,跟STM32有大差异。光判别发送空和接纳空的标志还不可,还必须判别忙标志位,并且读数的时分要等忙标志结束才干读,废话少说上代码:
这是一段发2字节收2字节的代码,留意假如第二个字节接纳才有用的话,也需求发送第二个字节才干供给时钟进行接纳:
- GPIO_WriteLow(GPIOA,GPIO_PIN_3);
- while(SPI_GetFlagStatus(SPI_FLAG_TXE)==RESET){}
- SPI_SendData(0x80|0x75);
- while(SPI_GetFlagStatus(SPI_FLAG_BSY)==SET){}
- while(SPI_GetFlagStatus(SPI_FLAG_RXNE)==RESET){}/*¸Ã×Ö½Ú¶ªÆú*/
- ret1=SPI_ReceiveData();
- while(SPI_GetFlagStatus(SPI_FLAG_TXE)==RESET){}
- SPI_SendData(0x75);
- while(SPI_GetFlagStatus(SPI_FLAG_BSY)==SET){}
- while(SPI_GetFlagStatus(SPI_FLAG_RXNE)==RESET){}
- ret2=SPI_ReceiveData();
- GPIO_WriteHigh(GPIOA,GPIO_PIN_3);