1、标准库SPI初始化
这是标准库的SPI初始化配置
2、HAL库SPI初始化
这是HAL库函数的SPI初始化配置
可以看出,基本一直,除了 基本的io口配置区别,其他主要的读写函数不用动的。
3、SPI发送函数_替换对比
c
/* SPI写入一个字节 */
void SPI_WByte(uint8_t TxData)
{
// /* 通过外设SPIx发送一个数据 */
// SPI_I2S_SendData(OLED_SPI, TxData);
// /* 检查指定的SPI标志位设置与否:发送缓存空标志位*/
// while (SPI_I2S_GetFlagStatus(OLED_SPI, SPI_I2S_FLAG_TXE) == RESET);
HAL_SPI_Transmit(&hspi1,&TxData,1,1000);
}
4、SPI收发函数_替换对比
对于收发函数,可以直接替换的代码如下:
发送时,可以通过检测SPI_SR中的TXE位,当数据寄存器里有数据时,TXE位是0,当数据全部从数据寄存器的发送缓冲区传输到移位寄存器时TXE位被置1,这时候可以再往数据寄存器里写入数据
接收时 ,可以通过检测SPI_SR中的RXNE位,当数据寄存器里有数据时,RXNE位是0,当数据全部从数据寄存器的接收缓冲区传输到移位寄存器时RXNE位被置1,这时候可以从数据寄存器里读出数据
在使用HAL库时,不必这么麻烦,HAL库都帮我们封装好了,直接使用下面两个SPI的发送和接收函数接口。