当前位置: 首页 > news >正文

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

1、标准库SPI初始化

这是标准库的SPI初始化配置
在这里插入图片描述

2、HAL库SPI初始化

这是HAL库函数的SPI初始化配置
在这里插入图片描述
可以看出,基本一直,除了 基本的io口配置区别,其他主要的读写函数不用动的。

3、SPI发送函数_替换对比

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

相关文章:

  • 计算机网络笔记(十四)——3.1数据链路层的几个共同问题
  • 03.使用spring-ai玩转MCP
  • ALTER TABLE 删除DROP表列的报错: 因为有一个或多个对象访问此列
  • 4.27 JavaScript核心语法+事件监听
  • 如何通过git删除某个文件的历史提交记录
  • 类-python
  • FISCO BCOS 智能合约开发详解
  • AlexNet网络搭建
  • 麒麟系统通过 Service 启动 JAR 包的完整指南
  • Lua 第12部分 日期和时间
  • Maven概述
  • 使用 Playwright 构建高效爬虫:原理、实战与最佳实践
  • Netfilter 与struct nf_hook_ops 相关
  • C++?动态内存管理!!!
  • Taro on Harmony :助力业务高效开发纯血鸿蒙应用
  • 【数据挖掘】时间序列预测-常用序列预测模型
  • I-CON: A Unifying Framework for Representation Learning
  • 23种设计模式-行为型模式之命令模式(Java版本)
  • 从零实现分布式WebSocket组件:设计模式深度实践指南
  • 【Linux网络与网络编程】13.五种 IO 模型
  • 中国德国商会报告:76%在华德企受美国关税影响,但对华投资战略依然稳固
  • 李云泽:再批复600亿元,进一步扩大保险资金长期投资试点范围
  • A股三大股指集体高开大涨超1%,券商、房地产涨幅居前
  • 一网红被指涉脱衣殴打霸凌事件,沈阳警方:刑拘1人,处罚5人
  • 体坛联播|国米淘汰巴萨晋级欧冠决赛,申花击败梅州避免连败
  • 重温经典|中国首部剪纸动画片《猪八戒吃瓜》创作始末