微波EDA网,见证研发工程师的成长!
首页 > 硬件设计 > 嵌入式设计 > STM32 SPI接口的简单实现

STM32 SPI接口的简单实现

时间:11-19 来源:互联网 点击:

//spi的配置结束了可以使用了。

也可用 函数SPI_StructInit 把SPI_InitStruct中的每一个参数按缺省值填入

_____________________________________________________________________________________

发送缓冲器空闲标志(TXE)
此标志为’1’时表明发送缓冲器为空,可以写下一个待发送的数据进入缓冲器中。当写入SPI_DR时,TXE标志被清除。
接收缓冲器非空(RXNE)
此标志为’1’时表明在接收缓冲器中包含有效的接收数据。读SPI数据寄存器可以清除此标志。

注意在2.0的库中函数 SPI_SendData SPI_ReceiveDataSPI_GetFlagStatus 等在3.0的库中 变为

SPI_I2S_SendDataSPI_I2S_ReceiveData SPI_I2S_GetFlagStatus

写一个发送/接受函数

static u8 SPIByte(u8 byte)

{

while((SPI2->SR &SPI_I2S_FLAG_TXE)==RESET);
//while((SPI_I2S_GetFlagStatus(SPI2,SPI_I2S_FLAG_TXE))==RESET);

SPI2->DR = byte;
//SPI_I2S_SendData(SPI2,byte);

while((SPI2->SR &SPI_I2S_FLAG_RXNE)==RESET);

//while((SPI_I2S_GetFlagStatus(SPI2,SPI_I2S_FLAG_RXNE))==RESET);
return(SPI2->DR);

//returnSPI_I2S_ReceiveData(SPI2);读寄存器用硬件清除标志位。
//SPI_I2S_ClearFlag(SPI2,SPI_I2S_FLAG_RXNE) ;直接软件清除标志位。
}

这里有两种写法直接操作寄存器与用库函数,相对来说直接操作寄存器应该更直观一些

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top