A24 STM32_HAL库函数 之 I2s通用驱动 -- A-- 所有函数的介绍及使用

A24 STM32_HAL库函数 之 I2s通用驱动 -- A-- 所有函数的介绍及使用

  • 1 该驱动函数预览
    • 1.1 HAL_I2S_Init
    • 1.2 HAL_I2S_DeInit
    • 1.3 HAL_I2S_MspInit
    • 1.4 HAL_I2S_MspDeInit
    • 1.5 HAL_I2S_Transmit
    • 1.6 HAL_I2S_Receive
    • 1.7 HAL_I2S_Transmit_IT
    • 1.8 HAL_I2S_Receive_IT
    • 1.9 HAL_I2S_Transmit_DMA
    • 1.10 HAL_I2S_Receive_DMA
  • 该文档修改记录:
  • 总结

1 该驱动函数预览

序号函数名描述
1HAL_I2S_Init()初始化I2S接口。
2HAL_I2S_DeInit()反初始化I2S接口。
3HAL_I2S_MspInit()初始化MCU外设相关的I2S引脚或资源。
4HAL_I2S_MspDeInit()反初始化MCU外设相关的I2S引脚或资源。
5HAL_I2S_Transmit()通过I2S接口发送数据。
6HAL_I2S_Receive()通过I2S接口接收数据。
7HAL_I2S_Transmit_IT()使用中断发送数据通过I2S接口。
8HAL_I2S_Receive_IT()使用中断接收数据通过I2S接口。
9HAL_I2S_Transmit_DMA()使用DMA发送数据通过I2S接口。
10HAL_I2S_Receive_DMA()使用DMA接收数据通过I2S接口。
11HAL_I2S_DMAPause()暂停I2S DMA传输。
12HAL_I2S_DMAResume()恢复I2S DMA传输。
13HAL_I2S_DMAStop()停止I2S DMA传输。
14HAL_I2S_IRQHandler()I2S中断处理程序。
15HAL_I2S_TxHalfCpltCallback()I2S发送半完成回调函数。
16HAL_I2S_TxCpltCallback()I2S发送完成回调函数。
17HAL_I2S_RxHalfCpltCallback()I2S接收半完成回调函数。
18HAL_I2S_RxCpltCallback()I2S接收完成回调函数。
19HAL_I2S_ErrorCallback()I2S错误回调函数。
20HAL_I2S_GetState()获取I2S接口的状态。
21HAL_I2S_GetError()获取I2S接口的错误状态。

以下是使用模板:

#include "stm32f4xx_hal.h"int main(void) {// HAL初始化HAL_Init();// 初始化MCU外设相关的I2S引脚或资源HAL_I2S_MspInit();// 初始化I2S接口HAL_I2S_Init();// 进行其他操作...// 通过I2S接口发送数据HAL_I2S_Transmit();// 通过I2S接口接收数据HAL_I2S_Receive();// 使用DMA发送数据通过I2S接口HAL_I2S_Transmit_DMA();// 使用DMA接收数据通过I2S接口HAL_I2S_Receive_DMA();// I2S中断处理程序HAL_I2S_IRQHandler();// 获取I2S接口的状态uint32_t i2sState = HAL_I2S_GetState();// 获取I2S接口的错误状态uint32_t i2sError = HAL_I2S_GetError();// 反初始化I2S接口HAL_I2S_DeInit();// 反初始化MCU外设相关的I2S引脚或资源HAL_I2S_MspDeInit();return 0;
}

1.1 HAL_I2S_Init

函数名HAL_I2S_Init
函数原形HAL_StatusTypeDef HAL_I2S_Init(I2S_HandleTypeDef *hi2s)
功能描述初始化 I2S 外设
输入参数hi2s:I2S 句柄,指向一个 I2S_HandleTypeDef 结构体
输出参数
返回值HAL_StatusTypeDef:操作状态,可以是 HAL_OK 或 HAL_ERROR
先决条件
被调用函数

1.2 HAL_I2S_DeInit

函数名HAL_I2S_DeInit
函数原形HAL_StatusTypeDef HAL_I2S_DeInit(I2S_HandleTypeDef *hi2s)
功能描述反初始化 I2S 外设
输入参数hi2s:I2S 句柄,指向一个 I2S_HandleTypeDef 结构体
输出参数
返回值HAL_StatusTypeDef:操作状态,可以是 HAL_OK 或 HAL_ERROR
先决条件
被调用函数

1.3 HAL_I2S_MspInit

函数名HAL_I2S_MspInit
函数原形void HAL_I2S_MspInit(I2S_HandleTypeDef *hi2s)
功能描述初始化 I2S 外设的 GPIO、时钟和 DMA 配置
输入参数hi2s:I2S 句柄,指向一个 I2S_HandleTypeDef 结构体
输出参数
返回值
先决条件
被调用函数

1.4 HAL_I2S_MspDeInit

函数名HAL_I2S_MspDeInit
函数原形void HAL_I2S_MspDeInit(I2S_HandleTypeDef *hi2s)
功能描述反初始化 I2S 外设的 GPIO、时钟和 DMA 配置
输入参数hi2s:I2S 句柄,指向一个 I2S_HandleTypeDef 结构体
输出参数
返回值
先决条件
被调用函数

1.5 HAL_I2S_Transmit

函数名HAL_I2S_Transmit
函数原形HAL_StatusTypeDef HAL_I2S_Transmit(I2S_HandleTypeDef *hi2s, uint16_t *pData, uint16_t Size, uint32_t Timeout)
功能描述通过 I2S 外设发送数据
输入参数 1hi2s:I2S 句柄,指向一个 I2S_HandleTypeDef 结构体
输入参数 2pData:指向发送数据的缓冲区
输入参数 3Size:要发送的数据长度
输入参数 4Timeout:超时时间
输出参数
返回值HAL_StatusTypeDef:操作状态,可以是 HAL_OK 或 HAL_ERROR
先决条件
被调用函数

1.6 HAL_I2S_Receive

函数名HAL_I2S_Receive
函数原形HAL_StatusTypeDef HAL_I2S_Receive(I2S_HandleTypeDef *hi2s, uint16_t *pData, uint16_t Size, uint32_t Timeout)
功能描述通过 I2S 外设接收数据
输入参数 1hi2s:I2S 句柄,指向一个 I2S_HandleTypeDef 结构体
输入参数 2pData:指向接收数据的缓冲区
输入参数 3Size:要接收的数据长度
输入参数 4Timeout:超时时间
输出参数
返回值HAL_StatusTypeDef:操作状态,可以是 HAL_OK 或 HAL_ERROR
先决条件
被调用函数

1.7 HAL_I2S_Transmit_IT

函数名HAL_I2S_Transmit_IT
函数原形HAL_StatusTypeDef HAL_I2S_Transmit_IT(I2S_HandleTypeDef *hi2s, uint16_t *pData, uint16_t Size)
功能描述使用中断方式通过 I2S 外设发送数据
输入参数 1hi2s:I2S 句柄,指向一个 I2S_HandleTypeDef 结构体
输入参数 2pData:指向发送数据的缓冲区
输入参数 3Size:要发送的数据长度
输出参数
返回值HAL_StatusTypeDef:操作状态,可以是 HAL_OK 或 HAL_ERROR
先决条件
被调用函数

1.8 HAL_I2S_Receive_IT

函数名HAL_I2S_Receive_IT
函数原形HAL_StatusTypeDef HAL_I2S_Receive_IT(I2S_HandleTypeDef *hi2s, uint16_t *pData, uint16_t Size)
功能描述使用中断方式通过 I2S 外设接收数据
输入参数 1hi2s:I2S 句柄,指向一个 I2S_HandleTypeDef 结构体
输入参数 2pData:指向接收数据的缓冲区
输入参数 3Size:要接收的数据长度
输出参数
返回值HAL_StatusTypeDef:操作状态,可以是 HAL_OK 或 HAL_ERROR
先决条件
被调用函数

1.9 HAL_I2S_Transmit_DMA

函数名HAL_I2S_Transmit_DMA
函数原形HAL_StatusTypeDef HAL_I2S_Transmit_DMA(I2S_HandleTypeDef *hi2s, uint16_t *pData, uint16_t Size)
功能描述使用 DMA 方式通过 I2S 外设发送数据
输入参数 1hi2s:I2S 句柄,指向一个 I2S_HandleTypeDef 结构体
输入参数 2pData:指向发送数据的缓冲区
输入参数 3Size:要发送的数据长度
输出参数
返回值HAL_StatusTypeDef:操作状态,可以是 HAL_OK 或 HAL_ERROR
先决条件
被调用函数

1.10 HAL_I2S_Receive_DMA

函数名HAL_I2S_Receive_DMA
函数原形HAL_StatusTypeDef HAL_I2S_Receive_DMA(I2S_HandleTypeDef *hi2s, uint16_t *pData, uint16_t Size)
功能描述使用 DMA 方式通过 I2S 外设接收数据
输入参数 1hi2s:I2S 句柄,指向一个 I2S_HandleTypeDef 结构体
输入参数 2pData:指向接收数据的缓冲区
输入参数 3Size:要接收的数据长度
输出参数
返回值HAL_StatusTypeDef:操作状态,可以是 HAL_OK 或 HAL_ERROR
先决条件
被调用函数

该文档修改记录:

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

总结

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

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

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

相关文章

【动态规划】C++解决斐波那契模型题目(三步问题、爬楼梯、解码方法...)

1. 前言 - 介绍动态规划算法 动态规划(Dynamic Programming,简称DP) 是一种解决复杂问题的算法设计技术,通常用于解决具有重叠子问题和最优子结构性质的问题。它将问题分解成较小的子问题,通过解决这些子问题并保存其…

android车机代码结构分析

1 先看了android系统的整体目录 art虚拟机, device 支持的设备及相关配置, external使用的外部开源库 frameworks // Android基础框架, hardware // HAL层, kernel // packages // 各种app 其他的目录都是系统辅助相关的&am…

NFTScan | 04.08~04.14 NFT 市场热点汇总

欢迎来到由 NFT 基础设施 NFTScan 出品的 NFT 生态热点事件每周汇总。 周期:2024.04.08~ 2024.04.14 NFT Hot News 01/ 数据:Runestone 地板价突破 0.07 BTC,创历史新高 4 月 8 日,据数据显示,Runestone 地板价突破 …

阿里面试:DDD中的实体、值对象有什么区别?

在领域驱动设计(DDD)中,有两个基础概念:实体(Entity)和值对象(Value Object)。 使用这些概念,我们可以把复杂的业务需求映射成简单、明确的数据模型。正确使用实体和值对…

每日三个JAVA经典面试题(四十)

1.如何使用设计模式来提高数据库操作的性能? 设计模式可以在数据库操作中提高性能,尤其是在应用程序需要频繁访问数据库时。以下是一些设计模式和技术,可以帮助提高数据库操作的性能: 数据访问对象模式(DAO模式&#…

Java详解:GUI容器组件 | 功能组件

✎ 简介: Graphical User Interface(GUI)图形用户界面 图形界面对于用户来说在视觉上更易于接受. ✎ 关于swing: • swing是一个为java设计的GUI工具包javax.swing,包括了用户界面的各种组件. • swing中组件可以分为两大类&…

基于FPGA的OMEGA东京奥运会计时器

截至2019年共举办了31届奥运会,其中27届的计时设备都由欧米茄(OMEGA,Ω)提供,今年的东京奥运会将会是第28届。 瑞士计时公司(Swiss Timing)基于火星Mars ZX2核心板打造了为奥运会等大型体育赛事…

AWVS+子域名平台联合自动化渗透测试工具(非常详细)零基础入门到精通,收藏这一篇就够了

项目地址 https://github.com/Minority2310/awvs-subdomain_platformawvs-subdomain_platform:AWVS子域名平台联合自动化渗透测试 如有侵权,请联系删除 为了帮助大家更好的学习网络安全,我给大家准备了一份网络安全入门/进阶学习资料&#…

【Python100+例】练完所有例题

前言: 有疑问的可以相互沟通学习交流!!!!!!! 1.两数之和 a, b 3.5, 4.0print(f"{a}{b}的和是{ab}")------------------------------------- 1.元组赋值可以省略括号 2.…

PLC程序远程上下载

在工业自动化领域,PLC(可编程逻辑控制器)扮演着至关重要的角色。然而,传统的PLC程序上传与下载方式往往受限于物理距离和现场环境,给工程师们带来了诸多不便。如今,随着远程技术的不断发展,PLC程…

IA-32处理器寄存器浅析

IA-32架构下寄存器分为基本寄存器和系统寄存器。 一、基本寄存器 基本寄存器包括通用寄存器(EAX、EBA、ECX、EDX、ESI、EDI、EBP、ESP)、段寄存器(CS、DS、SS等)、指令指针寄存器EIP、EFLAGS寄存器。通用寄存器的一些特殊用法: 1、EAX在乘法…

Stable Diffusion XL优化终极指南

如何在自己的显卡上获得SDXL的最佳质量和性能,以及如何选择适当的优化方法和工具,这一让GenAI用户倍感困惑的问题,业内一直没有一份清晰而详尽的评测报告可供参考。直到全栈开发者Flix San出手。 在本文中,Flix介绍了相关SDXL优化…

好用且免费的无需搭梯子的长文本场景对话大模型

这款ai工具最近爆火,Kimi支持200万字无损上下文,在长上下文窗口技术上再次取得突破,引燃人工智能领域新一轮投资热情。我也是支持国货,抱着试一试的心态使用,确实不错, China🐂🍺

【Java开发指南 | 第十三篇】Java条件语句

读者可订阅专栏:Java开发指南 |【CSDN秋说】 文章目录 if 语句if...else 语句if...else if...else 语句嵌套的 if…else 语句switch 语句 Java 中的条件语句用于根据条件来执行不同的代码块。条件语句允许程序根据表达式的结果选择性地执行代码。 条件语句分为if 语…

js上传文件、文件夹

一、html <el-button type="primary" class="upload-file">上传文件<inputref="file_ref"type="file"class="file-input"multiple@change="uploadFile($event, true)"/> </el-button> <el-…

[Win11·Copilot] Win11 系统更新重启后任务栏 Copilot 图标突然消失 | 解决方案

文章目录 前言Copilot介绍产生异常的原因解决方案总结 前言 在 Windows 11 的最新系统更新之后&#xff0c;一些用户报告了任务栏中 Copilot 图标消失的问题。这篇技术博文将为您提供详细的解决方案&#xff0c;帮助您恢复 Copilot 图标&#xff0c;并确保您能够继续享受 Copi…

3D模型查看器开发实战【WebGL】

本文介绍如何从头开发一个包含3D 模型查看器的页面 - 尽管它非常简单&#xff0c;但你将学习的步骤也应该有助于构建其他类型的 Web 应用程序。 在自己的网站或博客里展示3D模型更简单的方式是使用NSDT 3DConvert提供的在线服务&#xff0c;无需任何开发工作&#xff0c;5分钟…

【小技巧】机器学习中可视化高维向量的两种方法PCA和t-SNE,以及其原理介绍和代码示例(附代码)

使用情景&#xff1a;比如说现在我有一批numpy的多维向量&#xff0c;比如说都是256维度的&#xff0c;X.shape(n, 256), 已知它们都是经过训练能够在256dim的超球面上实现分类或聚类的&#xff0c;现在我想把它们可视化出来看看各个簇在超球面上的分布是怎样的&#xff1f; 1…

陈胜许诺‘苟富贵,勿相忘’的那些工友们,后来都怎么样了?

记得初三语文上册的课文中&#xff0c;有一篇叫《陈涉世家》文章&#xff0c;节选自《史记》&#xff0c;讲述的是秦末农民起义军领袖陈胜吴广的故事。其中陈胜有三句话让人记忆犹新&#xff0c;其中有两句是他在地主家当农民工时&#xff0c;和一起做事的工友说的。第一句话就…

Vue项目实现懒加载——自用笔记

熟悉指令语法&#xff1a; <template><HomePanel title"人气推荐" sub-title"人气爆款 不容错过"><ul class"goods-list"><li v-for"item in hotList" :key"item.id"><RouterLink to"/&qu…