A22 STM32_HAL库函数 之 I2c通用驱动程序 -- C -- 所有函数的介绍及使用
1 该驱动函数预览
序号 | 函数名 | 描述 |
---|
1 | HAL_I2C_Init() | 初始化I2C总线。 |
2 | HAL_I2C_DeInit() | 反初始化I2C总线。 |
3 | HAL_I2C_MspInit() | 初始化MCU外设相关的I2C引脚或资源。 |
4 | HAL_I2C_MspDeInit() | 反初始化MCU外设相关的I2C引脚或资源。 |
5 | HAL_I2C_Master_Transmit() | 主机发送数据到I2C设备。 |
6 | HAL_I2C_Master_Receive() | 主机从I2C设备接收数据。 |
7 | HAL_I2C_Slave_Transmit() | 从I2C设备发送数据到主机。 |
8 | HAL_I2C_Slave_Receive() | 从I2C设备接收主机发送的数据。 |
9 | HAL_I2C_Master_Transmit_IT() | 使用中断发送数据到I2C设备。 |
10 | HAL_I2C_Master_Receive_IT() | 使用中断从I2C设备接收数据。 |
11 | HAL_I2C_Master_Sequential_Transmit_IT() | 使用中断连续发送数据到I2C设备。 |
12 | HAL_I2C_Master_Sequential_Receive_IT() | 使用中断连续从I2C设备接收数据。 |
13 | HAL_I2C_Slave_Transmit_IT() | 使用中断从I2C设备发送数据到主机。 |
14 | HAL_I2C_Slave_Receive_IT() | 使用中断从I2C设备接收主机发送的数据。 |
15 | HAL_I2C_Slave_Sequential_Transmit_IT() | 使用中断连续从I2C设备发送数据到主机。 |
16 | HAL_I2C_Slave_Sequential_Receive_IT() | 使用中断连续从I2C设备接收主机发送的数据。 |
17 | HAL_I2C_EnableListen_IT() | 启用I2C设备的监听模式,并使用中断处理监听事件。 |
18 | HAL_I2C_DisableListen_IT() | 禁用I2C设备的监听模式。 |
19 | HAL_I2C_Master_Transmit_DMA() | 使用DMA发送数据到I2C设备。 |
20 | HAL_I2C_Master_Receive_DMA() | 使用DMA从I2C设备接收数据。 |
21 | HAL_I2C_Master_Abort_IT() | 使用中断终止I2C主机模式下的传输。 |
22 | HAL_I2C_Slave_Transmit_DMA() | 使用DMA从I2C设备发送数据到主机。 |
23 | HAL_I2C_Slave_Receive_DMA() | 使用DMA从I2C设备接收主机发送的数据。 |
24 | HAL_I2C_Mem_Write() | 写入I2C外设的存储器。 |
25 | HAL_I2C_Mem_Read() | 从I2C外设的存储器读取数据。 |
26 | HAL_I2C_Mem_Write_IT() | 使用中断写入I2C外设的存储器。 |
27 | HAL_I2C_Mem_Read_IT() | 使用中断从I2C外设的存储器读取数据。 |
28 | HAL_I2C_Mem_Write_DMA() | 使用DMA写入I2C外设的存储器。 |
29 | HAL_I2C_Mem_Read_DMA() | 使用DMA从I2C外设的存储器读取数据。 |
30 | HAL_I2C_IsDeviceReady() | 检测I2C设备是否准备好。 |
31 | HAL_I2C_EV_IRQHandler() | I2C事件中断处理程序。 |
32 | HAL_I2C_ER_IRQHandler() | I2C错误中断处理程序。 |
33 | HAL_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_Init();
HAL_I2C_MspInit();
HAL_I2C_Init();
HAL_I2C_Master_Transmit();
HAL_I2C_Master_Receive();
HAL_I2C_Slave_Transmit();
HAL_I2C_Slave_Receive();
HAL_I2C_Master_Transmit_IT();
HAL_I2C_Master_Receive_IT();
HAL_I2C_Master_Transmit_DMA();
HAL_I2C_Master_Receive_DMA();
HAL_I2C_EV_IRQHandler();
HAL_I2C_ER_IRQHandler();
uint32_t i2cState = HAL_I2C_GetState();
uint32_t i2cMode = HAL_I2C_GetMode();
uint32_t i2cError = HAL_I2C_GetError();
HAL_I2C_DeInit();
HAL_I2C_MspDeInit();
return 0;
}
1.23 HAL_I2C_Slave_Receive_DMA
函数名 | HAL_I2C_Slave_Receive_DMA |
---|
函数原形 | HAL_StatusTypeDef HAL_I2C_Slave_Receive_DMA(I2C_HandleTypeDef *hi2c, uint8_t *pData, uint16_t Size) |
功能描述 | 通过 DMA 从 I2C 主机接收数据 |
输入参数 1 | hi2c:I2C 句柄,指向一个 I2C_HandleTypeDef 结构体 |
输入参数 2 | pData:指向存储接收数据的缓冲区 |
输入参数 3 | Size:要接收的数据长度 |
输出参数 | 无 |
返回值 | HAL_StatusTypeDef:接收状态,可以是 HAL_OK 或 HAL_ERROR |
先决条件 | 无 |
被调用函数 | 无 |
1.24 HAL_I2C_Mem_Write
函数名 | HAL_I2C_Mem_Write |
---|
函数原形 | HAL_StatusTypeDef HAL_I2C_Mem_Write(I2C_HandleTypeDef *hi2c, uint16_t DevAddress, uint16_t MemAddress, uint16_t MemAddSize, uint8_t *pData, uint16_t Size, uint32_t Timeout) |
功能描述 | 写入数据到 I2C 外设的指定存储器地址 |
输入参数 1 | hi2c:I2C 句柄,指向一个 I2C_HandleTypeDef 结构体 |
输入参数 2 | DevAddress:从机地址 |
输入参数 3 | MemAddress:要写入的存储器地址 |
输入参数 4 | MemAddSize:存储器地址的大小 |
输入参数 5 | pData:指向要写入的数据缓冲区 |
输入参数 6 | Size:要写入的数据长度 |
输入参数 7 | Timeout:超时时间 |
输出参数 | 无 |
返回值 | HAL_StatusTypeDef:操作状态,可以是 HAL_OK 或 HAL_ERROR |
先决条件 | 无 |
被调用函数 | 无 |
1.25 HAL_I2C_Mem_Read
| 函数名
| HAL_I2C_Mem_Read |
|---------------------------|------------------------------------------------------------|
| 函数原形 | HAL_StatusTypeDef HAL_I2C_Mem_Read(I2C_HandleTypeDef *hi2c, uint16_t DevAddress, uint16_t MemAddress, uint16_t MemAddSize, uint8_t *pData, uint16_t Size, uint32_t Timeout) |
| 功能描述 | 从 I2C 外设的指定存储器地址读取数据 |
| 输入参数 1 | hi2c:I2C 句柄,指向一个 I2C_HandleTypeDef 结构体 |
| 输入参数 2 | DevAddress:从机地址 |
| 输入参数 3 | MemAddress:要读取的存储器地址 |
| 输入参数 4 | MemAddSize:存储器地址的大小 |
| 输入参数 5 | pData:指向存储接收数据的缓冲区 |
| 输入参数 6 | Size:要接收的数据长度 |
| 输入参数 7 | Timeout:超时时间 |
| 输出参数 | 无 |
| 返回值 | HAL_StatusTypeDef:操作状态,可以是 HAL_OK 或 HAL_ERROR |
| 先决条件 | 无 |
| 被调用函数 | 无 |
1.26 HAL_I2C_Mem_Write_IT
函数名 | HAL_I2C_Mem_Write_IT |
---|
函数原形 | HAL_StatusTypeDef HAL_I2C_Mem_Write_IT(I2C_HandleTypeDef *hi2c, uint16_t DevAddress, uint16_t MemAddress, uint16_t MemAddSize, uint8_t *pData, uint16_t Size) |
功能描述 | 通过中断写入数据到 I2C 外设的指定存储器地址 |
输入参数 1 | hi2c:I2C 句柄,指向一个 I2C_HandleTypeDef 结构体 |
输入参数 2 | DevAddress:从机地址 |
输入参数 3 | MemAddress:要写入的存储器地址 |
输入参数 4 | MemAddSize:存储器地址的大小 |
输入参数 5 | pData:指向要写入的数据缓冲区 |
输入参数 6 | Size:要写入的数据长度 |
输出参数 | 无 |
返回值 | HAL_StatusTypeDef:操作状态,可以是 HAL_OK 或 HAL_ERROR |
先决条件 | 无 |
被调用函数 | 无 |
1.27 HAL_I2C_Mem_Read_IT
函数名 | HAL_I2C_Mem_Read_IT |
---|
函数原形 | HAL_StatusTypeDef HAL_I2C_Mem_Read_IT(I2C_HandleTypeDef *hi2c, uint16_t DevAddress, uint16_t MemAddress, uint16_t MemAddSize, uint8_t *pData, uint16_t Size) |
功能描述 | 通过中断从 I2C 外设的指定存储器地址读取数据 |
输入参数 1 | hi2c:I2C 句柄,指向一个 I2C_HandleTypeDef 结构体 |
输入参数 2 | DevAddress:从机地址 |
输入参数 3 | MemAddress:要读取的存储器地址 |
输入参数 4 | MemAddSize:存储器地址的大小 |
输入参数 5 | pData:指向存储接收数据的缓冲区 |
输入参数 6 | Size:要接收的数据长度 |
输出参数 | 无 |
返回值 | HAL_StatusTypeDef:操作状态,可以是 HAL_OK 或 HAL_ERROR |
先决条件 | 无 |
被调用函数 | 无 |
1.28 HAL_I2C_Mem_Write_DMA
函数名 | HAL_I2C_Mem_Write_DMA |
---|
函数原形 | HAL_StatusTypeDef HAL_I2C_Mem_Write_DMA(I2C_HandleTypeDef *hi2c, uint16_t DevAddress, uint16_t MemAddress, uint16_t MemAddSize, uint8_t *pData, uint16_t Size) |
功能描述 | 通过 DMA 写入数据到 I2C 外设的指定存储器地址 |
输入参数 1 | hi2c:I2C 句柄,指向一个 I2C_HandleTypeDef 结构体 |
输入参数 2 | DevAddress:从机地址 |
|
| 输入参数 3 | MemAddress:要写入的存储器地址 |
| 输入参数 4 | MemAddSize:存储器地址的大小 |
| 输入参数 5 | pData:指向要写入的数据缓冲区 |
| 输入参数 6 | Size:要写入的数据长度 |
| 输出参数 | 无 |
| 返回值 | HAL_StatusTypeDef:操作状态,可以是 HAL_OK 或 HAL_ERROR |
| 先决条件 | 无 |
| 被调用函数 | 无 |
1.29 HAL_I2C_Mem_Read_DMA
函数名 | HAL_I2C_Mem_Read_DMA |
---|
函数原形 | HAL_StatusTypeDef HAL_I2C_Mem_Read_DMA(I2C_HandleTypeDef *hi2c, uint16_t DevAddress, uint16_t MemAddress, uint16_t MemAddSize, uint8_t *pData, uint16_t Size) |
功能描述 | 通过 DMA 从 I2C 外设的指定存储器地址读取数据 |
输入参数 1 | hi2c:I2C 句柄,指向一个 I2C_HandleTypeDef 结构体 |
输入参数 2 | DevAddress:从机地址 |
输入参数 3 | MemAddress:要读取的存储器地址 |
输入参数 4 | MemAddSize:存储器地址的大小 |
输入参数 5 | pData:指向存储接收数据的缓冲区 |
输入参数 6 | Size:要接收的数据长度 |
输出参数 | 无 |
返回值 | HAL_StatusTypeDef:操作状态,可以是 HAL_OK 或 HAL_ERROR |
先决条件 | 无 |
被调用函数 | 无 |
1.30 HAL_I2C_IsDeviceReady
函数名 | HAL_I2C_IsDeviceReady |
---|
函数原形 | HAL_StatusTypeDef HAL_I2C_IsDeviceReady(I2C_HandleTypeDef *hi2c, uint16_t DevAddress, uint32_t Trials, uint32_t Timeout) |
功能描述 | 检测 I2C 设备是否就绪 |
输入参数 1 | hi2c:I2C 句柄,指向一个 I2C_HandleTypeDef 结构体 |
输入参数 2 | DevAddress:设备地址 |
输入参数 3 | Trials:尝试次数 |
输入参数 4 | Timeout:超时时间 |
输出参数 | 无 |
返回值 | HAL_StatusTypeDef:就绪状态,可以是 HAL_OK 或 HAL_ERROR |
先决条件 | 无 |
被调用函数 | 无 |
1.31 HAL_I2C_EV_IRQHandler
函数名 | HAL_I2C_EV_IRQHandler |
---|
函数原形 | void HAL_I2C_EV_IRQHandler(I2C_HandleTypeDef *hi2c) |
功能描述 | I2C 外设事件中断处理函数 |
输入参数 | hi2c:I2C 句柄,指向一个 I2C_HandleTypeDef 结构体 |
输出参数 | 无 |
返回值 | 无 |
先决条件 | 无 |
被调用函数 | 无 |
1.32 HAL_I2C_ER_IRQHandler
函数名 | HAL_I2C_ER_IRQHandler |
---|
函数原形 | void HAL_I2C_ER_IRQHandler(I2C_HandleTypeDef *hi2c) |
功能描述 | I2C 外设错误中断处理函数 |
输入参数 | hi2c:I2C 句柄,指向一个 I2C_HandleTypeDef 结构体 |
输出参数 | 无 |
返回值 | 无 |
先决条件 | 无 |
被调用函数 | 无 |
1.33 HAL_I2C_MasterTxCpltCallback
函数名 | HAL_I2C_MasterTxCpltCallback |
---|
函数原形 | void HAL_I2C_MasterTxCpltCallback(I2C_HandleTypeDef *hi2c) |
功能描述 | I2C 主机发送完成回调函数 |
输入参数 | hi2c:I2C 句柄,指向一个 I2C_HandleTypeDef 结构体 |
输出参数 | 无 |
返回值 | 无 |
先决条件 | |
无 | |
被调用函数 | 无 |
该文档修改记录:
修改时间 | 修改说明 |
---|
2024年4月30日 | 第一次发布,介绍了该博客驱动所有函数的介绍及使用 |
总结
以上就是该博客驱动所有函数的介绍及使用的内容。
有不明白的地方欢迎留言;有建议欢迎留言,我后面编写文档好改进。
创作不容,如果文档对您有帮助,记得给个赞。