单片机 - 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 访问
相关推荐
aini_lovee8 分钟前
基于STM32F103的数控电源设计方案
stm32·单片机·嵌入式硬件
LCG元9 分钟前
STM32实战:基于STM32F103的智能鱼缸监控投喂系统(水质监测+自动换水)
stm32·单片机·嵌入式硬件
深圳市晨芯阳科技有限公司18 分钟前
晨芯阳科技HC358-N双通道运算放大IC
科技·单片机·嵌入式硬件
一路往蓝-Anbo20 分钟前
第四章:手撕协议栈 —— 缓冲区与结构体数据的 Mock 技巧
网络·stm32·单片机·嵌入式硬件·软件工程·tdd
jghhh0138 分钟前
STM32指纹密码锁的程序
stm32·单片机·嵌入式硬件
Achou.Wang40 分钟前
从 Atomic 到 Futex:深入解析并发同步的三重境界
单片机·嵌入式硬件
时空自由民.1 小时前
Arm Coretex-M核MCU做IAP/OTA升级时候为什么要做中断向量表地址偏移?
arm开发·单片机·嵌入式硬件
不脱发的程序猿1 小时前
MCU升级固件合并和转换工具
单片机·嵌入式硬件
qq_370773092 小时前
OpenOCD 嵌入式调试完全指南:从零开始调试 GD32/STM32 单片机
stm32·单片机·嵌入式硬件·openocd
LCG元2 小时前
STM32实战:基于STM32F103的迷迭香智慧种植系统(自动补光+滴灌)
stm32·单片机·嵌入式硬件