单片机 - 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 访问
相关推荐
ccbw161 分钟前
CH32M007K8U7:集成48V三相预驱的RISC-V电机MCU
单片机·嵌入式硬件
编程圈子1 小时前
I.MX6U 裸机开发 24. 电容触摸屏与 I2C 驱动
单片机·嵌入式硬件
Zwawa2 小时前
传感器模块都在交出什么:从模拟电压到数字协议
c语言·单片机·嵌入式
FakeOccupational3 小时前
【电路笔记 STM32】Cortex-M7 UART 中断模式(串口接收中断+串口空闲中断)
笔记·stm32·单片机
小李不想当小白3 小时前
USART串口协议(STM32标准库学习笔记)
经验分享·笔记·stm32·单片机·嵌入式硬件·学习
无垠的广袤3 小时前
拆解电子价签
单片机·蓝牙·diy·调试器·jlink·墨水屏
小何好运暴富开心幸福4 小时前
嵌入式历史与生态
stm32·单片机·mcu
甜甜的大香瓜5 小时前
【MT32F006】MT32F006之Stimer延时(轮询)
单片机
辰哥单片机设计5 小时前
MP3播放器模块(STM32)
stm32·单片机·嵌入式硬件
Zw-awa5 小时前
传感器模块都在交出什么:从模拟电压到数字协议
stm32