单片机 - 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 访问
相关推荐
‎ദ്ദിᵔ.˛.ᵔ₎2 小时前
STM32入门第一课:32位MCU
stm32·单片机
西城微科方案开发2 小时前
智能电子跳绳方案开发
单片机·嵌入式硬件
国科安芯3 小时前
抗辐射微控制器在卫星电源管理分系统中的控制架构与可靠性研究——基于AS32S601型MCU的星载能源系统智能化管理技术分析
网络·单片机·嵌入式硬件·安全·架构·系统架构·能源
KaifuZeng4 小时前
电路面试问题汇总一
单片机·嵌入式硬件·面试·电路
Freedom_my4 小时前
STM32简单项目
stm32·单片机·嵌入式硬件
周洲08305 小时前
STM32+ESP8266 WiFi 远程环境监测平台|本地 OLED 显示 + TCP 上传电脑 / 手机
stm32·tcp/ip·电脑
GeekArch5 小时前
第8讲:裸机单片机项目——Vibe快速迭代的最优边界
c语言·stm32·单片机·嵌入式硬件·mcu·物联网·ai编程
Delta-delta6 小时前
M85-GCC13.3-CMSIS-接入笔记
笔记·单片机·嵌入式硬件
caimouse6 小时前
Phase1Initialization 函数分析
单片机·嵌入式硬件·reactos
2401_8275012817 小时前
51单片机(二):GPIO、中断、定时器与PWM
单片机·嵌入式硬件·51单片机