单片机 - 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 访问
相关推荐
Romantic_love_11 小时前
USART串口初始化源码解析
stm32·单片机·嵌入式硬件·学习
oshan201211 小时前
零基础STM32入门教程--11-USART/UART 串行通迅
stm32·单片机·嵌入式硬件
BW.SU12 小时前
RUI Studio--嵌入式 UI 开发新范式
单片机·ui·嵌入式开发
恒锐丰小瑞13 小时前
率能SS6285M 33V/5.5A/单通道直流电机驱动IC,低待机功耗与多重保护,用于电子锁/玩具/机器人
stm32·单片机·嵌入式硬件·机器人
天空'之城14 小时前
单片机基础核心知识点汇总(二十一)
单片机·嵌入式硬件
意法半导体STM3214 小时前
【官方原创】LAT1695转换STM32CubeIDE工程到STM32CubeIDE for Visual Studio Code
vscode·stm32·单片机·嵌入式硬件
Zhang.Yi14 小时前
STM32-DMA
stm32·单片机·嵌入式硬件
小鱼儿电子16 小时前
62-基于STM32的多功能水壶控制系统设计
stm32·单片机·嵌入式硬件·多功能水壶·智能水壶
工业一体机老司机16 小时前
Python实现工业一体机OPC-UA通信:从SDK选型到数据采集实战
开发语言·python·单片机
泛凡(Linyongui)16 小时前
告别原始编辑器:VS Code 搭建 中微CMS IDE 编译环境完整指南
ide·单片机·编辑器