当前位置: 首页 > 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的发送和接收函数接口。

http://www.dtcms.com/a/158980.html

相关文章:

  • 计算机网络笔记(十四)——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 模型
  • Zookeeper HA集群搭建
  • 使用vue2 开发一个纯静态的校园二手交易平台-前端项目练习
  • 区块链:去中心化应用(DApp)开发全流程解析
  • 全栈量子跃迁:当Shor算法破解RSA时,我们如何用晶格密码重构数字世界的信任基岩?
  • 计算机三大主流操作系统的前世今生 - Linux|macOS|Windows
  • 解锁现代生活的健康密码
  • 设计并实现一个基于 Java + Spring Boot + MySQL 的通用多租户权限系统
  • 榕壹云国际版短剧系统:基于Spring Boot+MySQL+UniApp的全球短剧创作平台
  • Golang | Builder模式
  • 神经网络(自己记录)