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

A21 STM32_HAL库函数 之 I2c通用驱动程序 -- B -- 所有函数的介绍及使用

A21 STM32_HAL库函数 之 I2c通用驱动程序 -- B -- 所有函数的介绍及使用

  • 1 该驱动函数预览
    • 1.12 HAL_I2C_Master_Sequential_Receive_IT
    • 1.13 HAL_I2C_Slave_Transmit_IT
    • 1.14 HAL_I2C_Slave_Receive_IT
    • 1.15 HAL_I2C_Slave_Sequential_Transmit_IT
    • 1.16 HAL_I2C_Slave_Sequential_Receive_IT
    • 1.17 HAL_I2C_EnableListen_IT
    • 1.18 HAL_I2C_DisableListen_IT
    • 1.19 HAL_I2C_Master_Transmit_DMA
    • 1.20 HAL_I2C_Master_Receive_DMA
    • 1.21 HAL_I2C_Master_Abort_IT
    • 1.22 HAL_I2C_Slave_Transmit_DMA
  • 该文档修改记录:
  • 总结

1 该驱动函数预览

序号函数名描述
1HAL_I2C_Init()初始化I2C总线。
2HAL_I2C_DeInit()反初始化I2C总线。
3HAL_I2C_MspInit()初始化MCU外设相关的I2C引脚或资源。
4HAL_I2C_MspDeInit()反初始化MCU外设相关的I2C引脚或资源。
5HAL_I2C_Master_Transmit()主机发送数据到I2C设备。
6HAL_I2C_Master_Receive()主机从I2C设备接收数据。
7HAL_I2C_Slave_Transmit()从I2C设备发送数据到主机。
8HAL_I2C_Slave_Receive()从I2C设备接收主机发送的数据。
9HAL_I2C_Master_Transmit_IT()使用中断发送数据到I2C设备。
10HAL_I2C_Master_Receive_IT()使用中断从I2C设备接收数据。
11HAL_I2C_Master_Sequential_Transmit_IT()使用中断连续发送数据到I2C设备。
12HAL_I2C_Master_Sequential_Receive_IT()使用中断连续从I2C设备接收数据。
13HAL_I2C_Slave_Transmit_IT()使用中断从I2C设备发送数据到主机。
14HAL_I2C_Slave_Receive_IT()使用中断从I2C设备接收主机发送的数据。
15HAL_I2C_Slave_Sequential_Transmit_IT()使用中断连续从I2C设备发送数据到主机。
16HAL_I2C_Slave_Sequential_Receive_IT()使用中断连续从I2C设备接收主机发送的数据。
17HAL_I2C_EnableListen_IT()启用I2C设备的监听模式,并使用中断处理监听事件。
18HAL_I2C_DisableListen_IT()禁用I2C设备的监听模式。
19HAL_I2C_Master_Transmit_DMA()使用DMA发送数据到I2C设备。
20HAL_I2C_Master_Receive_DMA()使用DMA从I2C设备接收数据。
21HAL_I2C_Master_Abort_IT()使用中断终止I2C主机模式下的传输。
22HAL_I2C_Slave_Transmit_DMA()使用DMA从I2C设备发送数据到主机。
23HAL_I2C_Slave_Receive_DMA()使用DMA从I2C设备接收主机发送的数据。
24HAL_I2C_Mem_Write()写入I2C外设的存储器。
25HAL_I2C_Mem_Read()从I2C外设的存储器读取数据。
26HAL_I2C_Mem_Write_IT()使用中断写入I2C外设的存储器。
27HAL_I2C_Mem_Read_IT()使用中断从I2C外设的存储器读取数据。
28HAL_I2C_Mem_Write_DMA()使用DMA写入I2C外设的存储器。
29HAL_I2C_Mem_Read_DMA()使用DMA从I2C外设的存储器读取数据。
30HAL_I2C_IsDeviceReady()检测I2C设备是否准备好。
31HAL_I2C_EV_IRQHandler()I2C事件中断处理程序。
32HAL_I2C_ER_IRQHandler()I2C错误中断处理程序。
33HAL_I2C_MasterT

xCpltCallback() | I2C主机发送完成回调函数。 |
| 34 | HAL_I2C_MasterRxCpltCallback() | I2C主机接收完成回调函数。 |
| 35 | HAL_I2C_SlaveTxCpltCallback() | I2C从机发送完成回调函数。 |
| 36 | HAL_I2C_SlaveRxCpltCallback() | I2C从机接收完成回调函数。 |
| 37 | HAL_I2C_AddrCallback() | I2C地址匹配回调函数。 |
| 38 | HAL_I2C_ListenCpltCallback() | I2C监听模式完成回调函数。 |
| 39 | HAL_I2C_MemTxCpltCallback() | I2C存储器发送完成回调函数。 |
| 40 | HAL_I2C_MemRxCpltCallback() | I2C存储器接收完成回调函数。 |
| 41 | HAL_I2C_ErrorCallback() | I2C错误回调函数。 |
| 42 | HAL_I2C_AbortCpltCallback() | I2C终止完成回调函数。 |
| 43 | HAL_I2C_GetState() | 获取I2C总线的状态。 |
| 44 | HAL_I2C_GetMode() | 获取I2C总线的模式。 |
| 45 | HAL_I2C_GetError() | 获取I2C总线的错误状态。 |

以下是使用模板:

#include "stm32f4xx_hal.h"int main(void) {// HAL初始化HAL_Init();// 初始化MCU外设相关的I2C引脚或资源HAL_I2C_MspInit();// 初始化I2C总线HAL_I2C_Init();// 进行其他操作...// 主机发送数据到I2C设备HAL_I2C_Master_Transmit();// 主机从I2C设备接收数据HAL_I2C_Master_Receive();// 从I2C设备发送数据到主机HAL_I2C_Slave_Transmit();// 从I2C设备接收主机发送的数据HAL_I2C_Slave_Receive();// 使用中断发送数据到I2C设备HAL_I2C_Master_Transmit_IT();// 使用中断从I2C设备接收数据HAL_I2C_Master_Receive_IT();// 使用DMA发送数据到I2C设备HAL_I2C_Master_Transmit_DMA();// 使用DMA从I2C设备接收数据HAL_I2C_Master_Receive_DMA();// I2C事件中断处理程序HAL_I2C_EV_IRQHandler();// I2C错误中断处理程序HAL_I2C_ER_IRQHandler();// 获取I2C总线的状态uint32_t i2cState = HAL_I2C_GetState();// 获取I2C总线的模式uint32_t i2cMode = HAL_I2C_GetMode();// 获取I2C总线的错误状态uint32_t i2cError = HAL_I2C_GetError();// 反初始化I2C总线HAL_I2C_DeInit();// 反初始化MCU外设相关的I2C引脚或资源HAL_I2C_MspDeInit();return 0;
}

1.12 HAL_I2C_Master_Sequential_Receive_IT

函数名HAL_I2C_Master_Sequential_Receive_IT
函数原形HAL_StatusTypeDef HAL_I2C_Master_Sequential_Receive_IT(I2C_HandleTypeDef *hi2c, uint16_t DevAddress, uint8_t *pData, uint16_t Size, uint32_t XferOptions)
功能描述通过中断以顺序传输方式从 I2C 从机接收数据
输入参数 1hi2c:I2C 句柄,指向一个 I2C_HandleTypeDef 结构体
输入参数 2DevAddress:从机地址
输入参数 3pData:指向存储接收数据的缓冲区
输入参数 4Size:要接收的数据长度
输入参数 5XferOptions:传输选项
输出参数
返回值HAL_StatusTypeDef:接收状态,可以是 HAL_OK 或 HAL_ERROR
先决条件
被调用函数

1.13 HAL_I2C_Slave_Transmit_IT

函数名HAL_I2C_Slave_Transmit_IT
函数原形HAL_StatusTypeDef HAL_I2C_Slave_Transmit_IT(I2C_HandleTypeDef *hi2c, uint8_t *pData, uint16_t Size)
功能描述通过中断发送数据到 I2C 主机

输入参数 1 | hi2c:I2C 句柄,指向一个 I2C_HandleTypeDef 结构体 |
| 输入参数 2 | pData:指向要发送的数据缓冲区 |
| 输入参数 3 | Size:要发送的数据长度 |
| 输出参数 | 无 |
| 返回值 | HAL_StatusTypeDef:传输状态,可以是 HAL_OK 或 HAL_ERROR |
| 先决条件 | 无 |
| 被调用函数 | 无 |


1.14 HAL_I2C_Slave_Receive_IT

函数名HAL_I2C_Slave_Receive_IT
函数原形HAL_StatusTypeDef HAL_I2C_Slave_Receive_IT(I2C_HandleTypeDef *hi2c, uint8_t *pData, uint16_t Size)
功能描述通过中断从 I2C 主机接收数据
输入参数 1hi2c:I2C 句柄,指向一个 I2C_HandleTypeDef 结构体
输入参数 2pData:指向存储接收数据的缓冲区
输入参数 3Size:要接收的数据长度
输出参数
返回值HAL_StatusTypeDef:接收状态,可以是 HAL_OK 或 HAL_ERROR
先决条件
被调用函数

1.15 HAL_I2C_Slave_Sequential_Transmit_IT

函数名HAL_I2C_Slave_Sequential_Transmit_IT
函数原形HAL_StatusTypeDef HAL_I2C_Slave_Sequential_Transmit_IT(I2C_HandleTypeDef *hi2c, uint8_t *pData, uint16_t Size, uint32_t XferOptions)
功能描述通过中断以顺序传输方式发送数据到 I2C 主机
输入参数 1hi2c:I2C 句柄,指向一个 I2C_HandleTypeDef 结构体
输入参数 2pData:指向要发送的数据缓冲区
输入参数 3Size:要发送的数据长度
输入参数 4XferOptions:传输选项
输出参数
返回值HAL_StatusTypeDef:传输状态,可以是 HAL_OK 或 HAL_ERROR
先决条件
被调用函数

1.16 HAL_I2C_Slave_Sequential_Receive_IT

函数名HAL_I2C_Slave_Sequential_Receive_IT
函数原形HAL_StatusTypeDef HAL_I2C_Slave_Sequential_Receive_IT(I2C_HandleTypeDef *hi2c, uint8_t *pData, uint16_t Size, uint32_t XferOptions)
功能描述通过中断以顺序传输方式从 I2C 主机接收数据
输入参数 1hi2c:I2C 句柄,指向一个 I2C_HandleTypeDef 结构体
输入参数 2pData:指向存储接收数据的缓冲区
输入参数 3Size:要接收的数据长度
输入参数 4XferOptions:传输选项
输出参数
返回值HAL_StatusTypeDef:接收状态,可以是 HAL_OK 或 HAL_ERROR
先决条件
被调用函数

1.17 HAL_I2C_EnableListen_IT

函数名HAL_I2C_EnableListen_IT
函数原形HAL_StatusTypeDef HAL_I2C_EnableListen_IT(I2C_HandleTypeDef *hi2c)
功能描述使能 I2C 的监听模式
输入参数hi2c:I2C 句柄,指向一个 I2C_HandleTypeDef 结构体
输出参数
返回值HAL_StatusTypeDef:操作状态,可以是 HAL_OK 或 HAL_ERROR
先决条件
被调用函数

1.18 HAL_I2C_DisableListen_IT

函数名HAL_I2C_DisableListen_IT
函数原形HAL_StatusTypeDef HAL_I2C_DisableListen_IT(I2C_HandleTypeDef *hi2c)
功能描述禁用 I2C 的监听模式
输入参数hi2c:I2C 句柄,指向一个 I2C_HandleTypeDef 结构体
输出参数
返回值HAL_StatusTypeDef:操作状态,可以是 HAL_OK 或 HAL_ERROR
先决条件
被调用函数

1.19 HAL_I2C_Master_Transmit_DMA

函数名HAL_I2C_Master_Transmit_DMA
函数原形HAL_StatusTypeDef HAL_I2C_Master_Transmit_DMA(I2C_HandleTypeDef *hi2c, uint16_t DevAddress, uint8_t *pData, uint16_t Size)
功能描述通过 DMA 发送数据到 I2C 从机
输入参数 1hi2c:I2C 句柄,指向一个 I2C_HandleTypeDef 结构体
输入参数 2DevAddress:从机地址
输入参数 3pData:指向要发送的数据缓冲区
输入参数 4Size:要发送的数据长度
输出参数
返回值HAL_StatusTypeDef:传输状态,可以是 HAL_OK 或 HAL_ERROR
先决条件
被调用函数

1.20 HAL_I2C_Master_Receive_DMA

函数名HAL_I2C_Master_Receive_DMA
函数原形HAL_Status

TypeDef HAL_I2C_Master_Receive_DMA(I2C_HandleTypeDef *hi2c, uint16_t DevAddress, uint8_t *pData, uint16_t Size) |
| 功能描述 | 通过 DMA 从 I2C 从机接收数据 |
| 输入参数 1 | hi2c:I2C 句柄,指向一个 I2C_HandleTypeDef 结构体 |
| 输入参数 2 | DevAddress:从机地址 |
| 输入参数 3 | pData:指向存储接收数据的缓冲区 |
| 输入参数 4 | Size:要接收的数据长度 |
| 输出参数 | 无 |
| 返回值 | HAL_StatusTypeDef:接收状态,可以是 HAL_OK 或 HAL_ERROR |
| 先决条件 | 无 |
| 被调用函数 | 无 |


1.21 HAL_I2C_Master_Abort_IT

函数名HAL_I2C_Master_Abort_IT
函数原形HAL_StatusTypeDef HAL_I2C_Master_Abort_IT(I2C_HandleTypeDef *hi2c)
功能描述通过中断终止 I2C 主机的传输
输入参数hi2c:I2C 句柄,指向一个 I2C_HandleTypeDef 结构体
输出参数
返回值HAL_StatusTypeDef:操作状态,可以是 HAL_OK 或 HAL_ERROR
先决条件
被调用函数

1.22 HAL_I2C_Slave_Transmit_DMA

函数名HAL_I2C_Slave_Transmit_DMA
函数原形HAL_StatusTypeDef HAL_I2C_Slave_Transmit_DMA(I2C_HandleTypeDef *hi2c, uint8_t *pData, uint16_t Size)
功能描述通过 DMA 发送数据到 I2C 主机
输入参数 1hi2c:I2C 句柄,指向一个 I2C_HandleTypeDef 结构体
输入参数 2pData:指向要发送的数据缓冲区
输入参数 3Size:要发送的数据长度
输出参数
返回值HAL_StatusTypeDef:传输状态,可以是 HAL_OK 或 HAL_ERROR
先决条件
被调用函数

该文档修改记录:

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

总结

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

http://www.lryc.cn/news/340374.html

相关文章:

  • 简介:Asp.Net Core进阶高级编程教程
  • Linux系统中LVM与磁盘配额
  • 手机重启手app没了
  • github上传代码
  • Qt+vstudio2022的报错信息积累
  • 力扣练习题(2024/4/16)
  • c++中一些常用库函数
  • 竞赛 基于GRU的 电影评论情感分析 - python 深度学习 情感分类
  • 软件杯 深度学习图像修复算法 - opencv python 机器视觉
  • java日志log4j使用
  • 探索Python爬虫利器:Scrapy框架解析与实战
  • Rust腐蚀服务器修改背景和logo图片操作方法
  • 【架构-15】NoSQL数据库
  • 中国人工智能产业年会智能交通与自动驾驶专题全景扫描
  • SpringBoot相关知识点总结
  • 【QT】关于qcheckbox常用的三个信号,{sstateChanged(int) clicked() clicked(bool)}达成巧用
  • 在线音乐网站的设计与实现
  • 【电路笔记】-数字缓冲器
  • Opencv | 基于ndarray的基本操作
  • 【大语言模型】应用:10分钟实现搜索引擎
  • UT单元测试
  • leetcode-合并两个有序链表
  • 006Node.js cnpm的安装
  • web server apache tomcat11-01-官方文档入门介绍
  • java的总结
  • 解决npm run dev跑项目,发现node版本不匹配,怎么跑起来?【已解决】
  • flood_fill 算法|图形渲染
  • Promise简单概述
  • 【Java集合进阶】数据结构(平衡二又树旋转机制)数据结构(红黑树、红黑规则、添加节点处理方案详解)
  • 富文本在线编辑器 - tinymce