单片机 - STM32HAL库常用API

目录

I2C

1.初始化与基本配置

HAL_I2C_Init

HAL_I2C_DeInit

2.阻塞模式

HAL_I2C_Master_Transmit

HAL_I2C_Master_Receive

HAL_I2C_Slave_Transmit

HAL_I2C_Slave_Receive

HAL_I2C_Mem_Write

HAL_I2C_Mem_Read

3.中断模式

HAL_I2C_Master_Transmit_IT

HAL_I2C_Master_Receive_IT

HAL_I2C_Slave_Transmit_IT

HAL_I2C_Slave_Receive_IT

[HAL_I2C_Mem_Write_IT / HAL_I2C_Mem_Read_IT](#HAL_I2C_Mem_Write_IT / HAL_I2C_Mem_Read_IT)

HAL_I2C_ErrorCallback

4.DMA模式

HAL_I2C_Master_Transmit_DMA

HAL_I2C_Master_Receive_DMA

[HAL_I2C_Slave_Transmit_DMA / HAL_I2C_Slave_Receive_DMA](#HAL_I2C_Slave_Transmit_DMA / HAL_I2C_Slave_Receive_DMA)

[HAL_I2C_Mem_Write_DMA / HAL_I2C_Mem_Read_DMA](#HAL_I2C_Mem_Write_DMA / HAL_I2C_Mem_Read_DMA)


I2C

1.初始化与基本配置

HAL_I2C_Init
cpp 复制代码
HAL_I2C_Init(I2C_HandleTypeDef *hi2c)

//初始化 I2C 外设(时钟、模式、地址宽度等)
HAL_I2C_DeInit
cpp 复制代码
HAL_I2C_DeInit(I2C_HandleTypeDef *hi2c)

//关闭 I2C 并释放资源

2.阻塞模式

HAL_I2C_Master_Transmit
cpp 复制代码
HAL_I2C_Master_Transmit(I2C_HandleTypeDef *hi2c, uint16_t DevAddress, uint8_t *pData, uint16_t Size, uint32_t Timeout)

//主机 → 从机:发送数据,阻塞直至完成或超时
HAL_I2C_Master_Receive
cpp 复制代码
HAL_I2C_Master_Receive(I2C_HandleTypeDef *hi2c, uint16_t DevAddress, uint8_t *pData, uint16_t Size, uint32_t Timeout)
//主机 ← 从机 :接收数据,阻塞
HAL_I2C_Slave_Transmit
cpp 复制代码
HAL_I2C_Slave_Transmit(I2C_HandleTypeDef *hi2c, uint8_t *pData, uint16_t Size, uint32_t Timeout)
//从机 → 主机 :从机发送,阻塞
HAL_I2C_Slave_Receive
cpp 复制代码
HAL_I2C_Slave_Receive(I2C_HandleTypeDef *hi2c, uint8_t *pData, uint16_t Size, uint32_t Timeout)
//从机 ← 主机 :从机接收,阻塞
HAL_I2C_Mem_Write
cpp 复制代码
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)
//主机 → 从机(写寄存器)
//常用于 EEPROM、传感器寄存器写入
HAL_I2C_Mem_Read
cpp 复制代码
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)
//主机 ← 从机(读寄存器)
//常用于读取寄存器或 EEPROM

3.中断模式

HAL_I2C_Master_Transmit_IT
cpp 复制代码
HAL_I2C_Master_Transmit_IT(I2C_HandleTypeDef *hi2c, uint16_t DevAddress, uint8_t *pData, uint16_t Size)
//主机 → 从机
//启动中断发送,立即返回

//回调函数
HAL_I2C_MasterTxCpltCallback(I2C_HandleTypeDef *hi2c)
HAL_I2C_Master_Receive_IT
cpp 复制代码
HAL_I2C_Master_Receive_IT(I2C_HandleTypeDef *hi2c, uint16_t DevAddress, uint8_t *pData, uint16_t Size)
//主机 ← 从机
//启动中断接收

//回调函数
HAL_I2C_MasterRxCpltCallback(I2C_HandleTypeDef *hi2c)
HAL_I2C_Slave_Transmit_IT
cpp 复制代码
HAL_I2C_Slave_Transmit_IT(I2C_HandleTypeDef *hi2c, uint8_t *pData, uint16_t Size)
//从机 → 主机
//从机中断发送

//回调
HAL_I2C_SlaveTxCpltCallback(I2C_HandleTypeDef *hi2c)
HAL_I2C_Slave_Receive_IT
cpp 复制代码
HAL_I2C_Slave_Receive_IT(I2C_HandleTypeDef *hi2c, uint8_t *pData, uint16_t Size)
// 从机 ← 主机
// 从机中断接收

//回调
HAL_I2C_SlaveRxCpltCallback(I2C_HandleTypeDef *hi2c)
HAL_I2C_Mem_Write_IT / HAL_I2C_Mem_Read_IT
cpp 复制代码
HAL_I2C_Mem_Write_IT / HAL_I2C_Mem_Read_IT
// 适用于寄存器/EEPROM 的中断访问
HAL_I2C_ErrorCallback
cpp 复制代码
HAL_I2C_ErrorCallback(I2C_HandleTypeDef *hi2c)
//(错误处理)

4.DMA模式

HAL_I2C_Master_Transmit_DMA
cpp 复制代码
HAL_I2C_Master_Transmit_DMA(I2C_HandleTypeDef *hi2c, uint16_t DevAddress, uint8_t *pData, uint16_t Size)
//主机 → 从机
//使用 DMA 发送
HAL_I2C_Master_Receive_DMA
cpp 复制代码
HAL_I2C_Master_Receive_DMA(I2C_HandleTypeDef *hi2c, uint16_t DevAddress, uint8_t *pData, uint16_t Size)
// 主机 ← 从机
// 使用 DMA 接收
HAL_I2C_Slave_Transmit_DMA / HAL_I2C_Slave_Receive_DMA
cpp 复制代码
HAL_I2C_Slave_Transmit_DMA / HAL_I2C_Slave_Receive_DMA
// 从机 DMA 传输
HAL_I2C_Mem_Write_DMA / HAL_I2C_Mem_Read_DMA
cpp 复制代码
HAL_I2C_Mem_Write_DMA / HAL_I2C_Mem_Read_DMA
//寄存器/EEPROM DMA 访问
相关推荐
Suifqwu6 小时前
rk3576(6)之设备树下GPIO驱动
单片机·嵌入式硬件
三佛科技-187366133977 小时前
国产替代新选择|替代STM32/APM32型号推荐(32位MCU)
stm32·单片机·嵌入式硬件
要不枉此行8 小时前
BLE 性能调优全攻略:MTU 配置、DLE 开启与干扰优化
单片机
llilian_168 小时前
信号失真度测试仪 自动失真测试仪 低失真度自动测量仪为各行业精准赋能 自动失真仪
网络·功能测试·单片机·测试工具
jghhh019 小时前
基于TMS320F28033的20MHz手持式双踪袖珍示波器设计与实现
stm32·嵌入式硬件·51单片机
zmj3203249 小时前
KW45芯片的安全启动
单片机·嵌入式开发·安全启动
DA02219 小时前
系统移植-STM32MP1_BusyBox移植
stm32·单片机·系统移植
殷忆枫9 小时前
基于STM32F103C8T6的R60AFD1毫米波雷达模块驱动设计
stm32·单片机·嵌入式硬件
somi710 小时前
ARM-12-I.MX6U LCD
arm开发·单片机·嵌入式硬件·自用
bubiyoushang88811 小时前
基于STM32的心电采集系统设计
stm32·单片机·嵌入式硬件