STM32标准库和HAL库SPI发送数据的区别-即SPI_I2S_SendData()和HAL_SPI_Transmit()互换

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的发送和接收函数接口。

相关推荐
Ronin-Lotus4 分钟前
嵌入式硬件篇---Ne555定时器
单片机·嵌入式硬件·ne555
Ronin-Lotus11 分钟前
嵌入式硬件---施密特触发器&单稳态触发器&多谐振荡器
嵌入式硬件
Ma_si9 小时前
PyLink 使用指南
网络·python·嵌入式硬件
岂是尔等觊觎10 小时前
PCB设计教程【入门篇】——电路分析基础-基本元件(二极管三极管场效应管)
经验分享·笔记·嵌入式硬件·学习·pcb工艺
青春不张扬11 小时前
S32K开发环境搭建详细教程(二、添加S32K3xx SDK)
单片机
2401_8590490811 小时前
Git使用
arm开发·git·stm32·单片机·mcu·算法
辰哥单片机设计11 小时前
STM32项目分享:智能家居(机智云)升级版
stm32·嵌入式硬件·智能家居
2301_8003997212 小时前
STM32 USART串口通信
stm32·单片机·嵌入式硬件
小程同学>o<12 小时前
嵌入式开发之STM32学习笔记day10
经验分享·笔记·stm32·单片机·嵌入式硬件·学习
一枚码农出身的猎头15 小时前
【招聘】硬件工程师/项目经历/产品经理(智能水电表、AIOT硬件方向)
嵌入式硬件·产品经理·智能硬件