A48 STM32_HAL库函数 之 SPI通用驱动 -- B -- 所有函数的介绍及使用

A48 STM32_HAL库函数 之 SPI通用驱动 -- B -- 所有函数的介绍及使用

  • 1 该驱动函数预览
    • 1.11 HAL_SPI_Transmit_DMA
    • 1.12 HAL_SPI_Receive_DMA
    • 1.13 HAL_SPI_TransmitReceive_DMA
    • 1.14 HAL_SPI_Abort
    • 1.15 HAL_SPI_Abort_IT
    • 1.16 HAL_SPI_DMAPause
    • 1.17 HAL_SPI_DMAResume
    • 1.18 HAL_SPI_DMAStop
    • 1.19 HAL_SPI_IRQHandler
    • 1.20 HAL_SPI_TxCpltCallback
  • 该文档修改记录:
  • 总结

1 该驱动函数预览

序号函数名描述
1HAL_SPI_Init()初始化SPI外设。
2HAL_SPI_DeInit()反初始化SPI外设。
3HAL_SPI_MspInit()初始化SPI外设相关的MCU外设引脚或资源。
4HAL_SPI_MspDeInit()反初始化SPI外设相关的MCU外设引脚或资源。
5HAL_SPI_Transmit()发送数据到SPI外设。
6HAL_SPI_Receive()从SPI外设接收数据。
7HAL_SPI_TransmitReceive()发送并接收数据到SPI外设。
8HAL_SPI_Transmit_IT()使用中断方式发送数据到SPI外设。
9HAL_SPI_Receive_IT()使用中断方式从SPI外设接收数据。
10HAL_SPI_TransmitReceive_IT()使用中断方式发送并接收数据到SPI外设。
11HAL_SPI_Transmit_DMA()使用DMA方式发送数据到SPI外设。
12HAL_SPI_Receive_DMA()使用DMA方式从SPI外设接收数据。
13HAL_SPI_TransmitReceive_DMA()使用DMA方式发送并接收数据到SPI外设。
14HAL_SPI_Abort()终止SPI外设操作。
15HAL_SPI_Abort_IT()终止SPI外设操作并启用中断。
16HAL_SPI_DMAPause()暂停SPI外设DMA传输。
17HAL_SPI_DMAResume()恢复SPI外设DMA传输。
18HAL_SPI_DMAStop()停止SPI外设DMA传输。
19HAL_SPI_IRQHandler()SPI外设中断处理程序。
20HAL_SPI_TxCpltCallback()发送完成回调函数。
21HAL_SPI_RxCpltCallback()接收完成回调函数。
22HAL_SPI_TxRxCpltCallback()发送接收完成回调函数。
23HAL_SPI_TxHalfCpltCallback()发送一半完成回调函数。
24HAL_SPI_RxHalfCpltCallback()接收一半完成回调函数。
25HAL_SPI_TxRxHalfCpltCallback()发送接收一半完成回调函数。
26HAL_SPI_ErrorCallback()SPI外设错误回调函数。
27HAL_SPI_AbortCpltCallback()终止完成回调函数。
28HAL_SPI_GetState()获取SPI外设状态。
29HAL_SPI_GetError()获取SPI外设错误状态。

以下是使用模板:

#include "stm32f4xx_hal.h"int main(void) {// HAL初始化HAL_Init();// 初始化SPI外设HAL_SPI_Init();// 初始化SPI外设相关的MCU外设引脚或资源HAL_SPI_MspInit();// 进行其他操作...// 发送数据到SPI外设HAL_SPI_Transmit();// 从SPI外设接收数据HAL_SPI_Receive();// 使用中断方式发送数据到SPI外设HAL_SPI_Transmit_IT();// 使用DMA方式发送数据到SPI外设HAL_SPI_Transmit_DMA();// 终止SPI外设操作HAL_SPI_Abort();// 获取SPI外设状态HAL_SPI_GetState();return 0;
}

1.11 HAL_SPI_Transmit_DMA

函数名HAL_SPI_Transmit_DMA
函数原形HAL_StatusTypeDef HAL_SPI_Transmit_DMA(SPI_HandleTypeDef *hspi, uint8_t *pData, uint16_t Size)
功能描述在DMA模式下发送SPI数据
输入参数 1hspi:SPI句柄结构体指针
输入参数 2pData:要发送的数据缓冲区指针
输入参数 3Size:要发送的数据大小
输出参数
返回值HAL_StatusTypeDef:函数执行状态
先决条件
被调用函数

1.12 HAL_SPI_Receive_DMA

函数名HAL_SPI_Receive_DMA
函数原形HAL_StatusTypeDef HAL_SPI_Receive_DMA(SPI_HandleTypeDef *hspi, uint8_t *pData, uint16_t Size)
功能描述在DMA模式下接收SPI数据
输入参数 1hspi:SPI句柄结构体指针
输入参数 2pData:接收数据的缓冲区指针
输入参数 3Size:要接收的数据大小
输出参数
返回值HAL_StatusTypeDef:函数执行状态
先决条件
被调用函数

1.13 HAL_SPI_TransmitReceive_DMA

函数名HAL_SPI_TransmitReceive_DMA
函数原形HAL_StatusTypeDef HAL_SPI_TransmitReceive_DMA(SPI_HandleTypeDef *hspi, uint8_t *pTxData, uint8_t *pRxData, uint16_t Size)
功能描述在DMA模式下同时发送和接收SPI数据
输入参数 1hspi:SPI句柄结构体指针
输入参数 2pTxData:要发送的数据缓冲区指针
输入参数 3pRxData:接收数据的缓冲区指针
输入参数 4Size:要发送/接收的数据大小
输出参数
              | 无                                                           |

| 返回值 | HAL_StatusTypeDef:函数执行状态 |
| 先决条件 | 无 |
| 被调用函数 | 无 |


1.14 HAL_SPI_Abort

函数名HAL_SPI_Abort
函数原形HAL_StatusTypeDef HAL_SPI_Abort(SPI_HandleTypeDef *hspi)
功能描述中止SPI传输
输入参数hspi:SPI句柄结构体指针
输出参数
返回值HAL_StatusTypeDef:函数执行状态
先决条件
被调用函数

1.15 HAL_SPI_Abort_IT

函数名HAL_SPI_Abort_IT
函数原形HAL_StatusTypeDef HAL_SPI_Abort_IT(SPI_HandleTypeDef *hspi)
功能描述中止SPI传输(使用中断)
输入参数hspi:SPI句柄结构体指针
输出参数
返回值HAL_StatusTypeDef:函数执行状态
先决条件
被调用函数

1.16 HAL_SPI_DMAPause

函数名HAL_SPI_DMAPause
函数原形HAL_StatusTypeDef HAL_SPI_DMAPause(SPI_HandleTypeDef *hspi)
功能描述暂停SPI的DMA传输
输入参数hspi:SPI句柄结构体指针
输出参数
返回值HAL_StatusTypeDef:函数执行状态
先决条件
被调用函数

1.17 HAL_SPI_DMAResume

函数名HAL_SPI_DMAResume
函数原形HAL_StatusTypeDef HAL_SPI_DMAResume(SPI_HandleTypeDef *hspi)
功能描述恢复SPI的DMA传输
输入参数hspi:SPI句柄结构体指针
输出参数
返回值HAL_StatusTypeDef:函数执行状态
先决条件
被调用函数

1.18 HAL_SPI_DMAStop

函数名HAL_SPI_DMAStop
函数原形HAL_StatusTypeDef HAL_SPI_DMAStop(SPI_HandleTypeDef *hspi)
功能描述停止SPI的DMA传输
输入参数hspi:SPI句柄结构体指针
输出参数
返回值HAL_StatusTypeDef:函数执行状态
先决条件
被调用函数

1.19 HAL_SPI_IRQHandler

函数名HAL_SPI_IRQHandler
函数原形void HAL_SPI_IRQHandler(SPI_HandleTypeDef *hspi)
功能描述SPI外设的中断处理函数
输入参数hspi:SPI句柄结构体指针
输出参数
返回值
先决条件
被调用函数

1.20 HAL_SPI_TxCpltCallback

函数名HAL_SPI_TxCpltCallback
函数原形void HAL_SPI_TxCpltCallback(SPI_HandleTypeDef *hspi)
功能描述SPI发送完成回调函数
输入参数hspi:SPI句柄结构体指针
输出参数
返回值
先决条件
被调用函数

该文档修改记录:

修改时间修改说明
2024年4月30日第一次发布,介绍了该博客驱动所有函数的介绍及使用

总结

以上就是该博客驱动所有函数的介绍及使用的内容。
有不明白的地方欢迎留言;有建议欢迎留言,我后面编写文档好改进。
创作不容,如果文档对您有帮助,记得给个赞。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/pingmian/28520.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

vitepress搭建的博客系统cdn引入github discussions评论系统

github仓库必须是公开的。 按照CDN的方式引入 打开discussions模块 安装giscus app 配置giscus 就是刚安装了giscus app的仓库 页面往下走,生成了代码: 配置vitepress 采用了CDN的方式引入 使用web component 随便找个地方试试组件 效果 有了…

LeetCode43.字符串相乘【大整数相乘】

LeetCode刷题记录 文章目录 📜题目描述💡解题思路 📜题目描述 给定两个以字符串形式表示的非负整数 num1 和 num2,返回 num1 和 num2 的乘积,它们的乘积也表示为字符串形式。 注意:不能使用任何内置的 Big…

记录一次centos扩容

背景 在Vscode上连虚拟机写项目,突然提示磁盘空间不足(no space left on device),一开始打算删些东西,这里参考博客,写得挺清楚的,但是操作后我发现实在没啥文件可以删除,所以干脆不删了,直接扩…

创建comfyui自定义节点

参考 https://github.com/liubai-liubai/ComfyUI-ImgSeg-LB/tree/main https://blog.styxhelix.life/?p33 安装 不需要安装任何其他依赖文件,只需要把0x_erthor_node文件夹复制到custom_nodes文件夹下,就能安装成功。 a1:展示了代码结构&…

ensp模拟器USG6000V1配置DCHP功能

接着上一篇配置,继续本篇的内容。开启DHCP功能非常简单,只需几个命令即可。实验拓扑图也非常简单,如下: 开启防火墙DHCP功能: [USG6000V1]dhcp enable 选择DHCP接口并设置接口IP地址,这里给g1/0/0配置2网…

关于lspci命令的相关使用

本实验的目的: 1.知道如何找到想要的PCIE 设备 2.找到设备后,如何得知其厂商ID和设备ID 3.知道如何查看PCIE 设备的LnkCap和LnkSta 4.知道这个PCIE设备究竟挂在那里 一. 查看总体信息 直接使用 lspci 命令,结果如下: 其中第一列形如 "00:00.0" 的含义是 &…

数据库原理(关系型数据库基本理论)——(

一、关系的概念 1.关系的定义 (1)域 域是一组具有相同数据类型的值的集合,可以理解为int[](int类型的数组)是一个域。 (2)笛卡儿积 简单来说,若干个域的笛卡儿积就是将这几个域的…

RMAN-06023 FRA 和DATA永远不要放在一起

由于FRA 和DATA放在一起,BACKUPSET PDB里面是和datafile放在一起的,再一串数据的目录里,正常会认为这个目录包含的是datafile. ASMCMD> ls DATA1/CDB/0633F844101D69CBE0636401A8C09D55/BACKUPSET/2024_06_15/nnndf0_tag20240615t223219_0…

MySQL日志(三):数据安全

先来看一个结论:只要redo log和binlog保证持久化到磁盘, 就能确保MySQL异常重启后, 数据可以恢复。 binlog写入逻辑 binlog的写入逻辑比较简单: 事务执行过程中, 先把日志写到binlog cache, 事务提交的时候…

腾讯测试开发复试<硬核面经>

隔天捞测试开发-腾讯云,硬核90min 3.27 状态返回初面 2h 自我介绍你的项目实习中sql的基本操作,用到了sql实现什么样的功能,或者场景给你一个场景,比如两个客户端都要去操作同一条数据这时候会发生什么现象,你如何处…

Linux:线程池

Linux:线程池 线程池概念封装线程基本结构构造函数相关接口线程类总代码 封装线程池基本结构构造与析构初始化启动与回收主线程放任务其他线程读取任务终止线程池测试线程池总代码 线程池概念 线程池是一种线程使用模式。线程过多会带来调度开销,进而影…

2024.06.03 校招 实习 内推 面经

1、提前批 | RoboSense 速腾聚创 2025届全球校园招聘提前批启动-免笔试(内推) 提前批 | RoboSense 速腾聚创 2025届全球校园招聘提前批启动-免笔试(内推) 2、校招 | 星纵物联2025届校园招聘全面启动! 校招 | 星纵物联…

PyTorch -- nn.Module 快速实践

网络层父类 nn.Module:Evrey Layer is nn.Module (nn.Linear, nn,Conv2d …)具体的,我们在定义自已的网络时:需要继承 nn.Module,并重新实现 __init__ 方法: 一般放置网络中具有可学习参数的层(如全连接层、卷积层等&a…

STM32CubeMX配置-外部中断配置

一、简介 MCU为STM32G070,配置为上升沿触发外部中断,在上升沿外部中断回调函数中进行相关操作。 二、外部中断配置 查看规格书中管教描述,找到I/O对应的外部中断线,然后进行如下上升沿触发外部中断配置。 三、生成代码 调用上升沿…

【 Python高级编程】Matplotlib中xlabel 和 xticks参数的区别

xlabel 和 xticks 是 Matplotlib 中用于处理 x 轴标签的两个函数: xlabel 设置 x 轴的标签。仅设置标签文本,不影响刻度位置或格式。 xticks 设置 x 轴的刻度位置和标签。接受两个参数:位置和标签。可以用来自定义刻度的位置和格式。 主…

JavaScript 规范霍夫曼编码

霍夫曼编码是一种无损数据压缩算法,其中数据中的每个字符都分配有可变长度的前缀代码。出现频率最低的字符获得最大代码,出现频率最高的字符获得最小代码。使用这种技术对数据进行编码非常简单且高效。但是,解码使用此技术生成的比特流效率低…

Parallels Desktop 19 激活码 - 苹果 Mac 最新版 PD 19激活密钥虚拟机下载 (支持Win11/macOS Sonoma)

Parallels Desktop 被称为 macOS 上强大的虚拟机软件。可以在 Mac 下同时模拟运行 Win、Linux、Android 等多种操作系统及软件而不必重启电脑,并能在不同系统间随意切换。 最新版 Parallels Desktop 19 (PD19) 完全支持 macOS Sonoma、Ventura 和 Windows 11 / Win…

【Ardiuno】实验使用OPT语音模块播放语音(图文)

当我们需要在程序中播放语音内容时,就需要使用到语音模块,今天我们就来实验一下使用OPT语音模块来方法语音。 const int voicePin 5; const int voiceBusyPin 18; const int testLEDPin 2;unsigned long pmillis 0;int busyVal 0; …

LeetCode | 125.验证回文串

这道题一开始的想法是把原字符串的非数字英文字符去掉,然后判断剩下的字符串是否为回文串即可,其中去掉非数字英文字符可以遍历一遍字符串依次处理,也可以用正则表达式,然后判断是否是回文串只需要两个指针,一头一尾&a…

OpenCV目标识别

一 图像轮廓 具有相同颜色或强度的连续点的曲线。 图像轮廓的作用 可以用于图像分析 物体的识别与检测 注意 为了检测的准确性,需要先对图像进行二值化或Canny操作。 画轮廓时会修改输入的图像。 轮廓查找的API findContours(img,mode,ApproximationMode,...)…