6 STM32标准库函数 之 内部集成电路(I2C) 所有函数的介绍及使用

函数描述格式:

函数名外设函数的名称
函数原形原形声明
功能描述简要解释函数是如何执行的
输入参数{x}输入参数描述
输出参数{x}输出参数描述
返回值函数的返回值
先决条件调用函数前应满足的要求
被调用函数其他被该函数调用的库函数

缩写定义

缩写外设/单元
ADC模数转换器
BKP备份寄存器
CAN控制器局域网模块
DMA直接内存存取控制器
EXTI外部中断事件控制器
FLASH闪存存储器
GPIO通用输入输出
I2C内部集成电路
IWDG独立看门狗
NVIC嵌套中断向量列表控制器
PWR电源/功耗控制
RCC复位与时钟控制器
RTC实时时钟
SPI串行外设接口
SysTick系统嘀嗒定时器
TIM通用定时器
TIM1高级控制定时器
USART通用同步异步接收发射端
WWDG窗口看门狗

1. 图片有格式

因为从OneNote复制到CSDN上只能是图片,粘贴不了文字,所以就显示图片,在该博客后半部分会补充上相关函数的文字。
如果只是学习了解函数可以看图片,图片有格式,比较友好;需要使用某个函数,可以去博客后半部分copy使用。

在这里插入图片描述

2 文字无格式

六 库函数之内部集成电路(I2C)所有函数的介绍及使用

前言

I2C 总线接口连接微控制器和串行 I2C 总线。它提供多主机功能,控制所有 I2C 总线特定的时序、协议、 仲裁和定时。支持标准和快速两种模式,同时与 SMBus 2.0 兼容。 I2C 总线有多种用途,包括 CRC 码的 生成和校验、SMBus(系统管理总线System Management Bus) PMBus(电源管理总线Power Management Bus)。

I2C 驱动可以用来通过 I2C 界面发送和接收数据,还可以返回传输操作的状态。
函数描述格式:
函数名 外设函数的名称
函数原形 原形声明
功能描述 简要解释函数是如何执行的
输入参数{x} 输入参数描述
输出参数{x} 输出参数描述
返回值 函数的返回值
先决条件 调用函数前应满足的要求
被调用函数 其他被该函数调用的库函数

一、图片预览,无格式(CSDN)

二、 I2C库函数固件库函数预览

函数名 描述
I2C_DeInit 将外设 I2Cx 寄存器重设为缺省值
I2C_Init 根据 I2C_InitStruct 中指定的参数初始化外设 I2Cx 寄存器
I2C_StructInit 把 I2C_InitStruct 中的每一个参数按缺省值填入
I2C_Cmd 使能或者失能 I2C 外设
I2C_DMACmd 使能或者失能指定 I2C 的 DMA 请求
I2C_DMALastTransferCmd 使下一次 DMA 传输为最后一次传输
I2C_GenerateSTART 产生 I2Cx 传输 START 条件
I2C_GenerateSTOP 产生 I2Cx 传输 STOP 条件
I2C_AcknowledgeConfig 使能或者失能指定 I2C 的应答功能
I2C_OwnAddress2Config 设置指定 I2C 的自身地址 2
I2C_DualAddressCmd 使能或者失能指定 I2C 的双地址模式
I2C_GeneralCallCmd 使能或者失能指定 I2C 的广播呼叫功能
I2C_ITConfig 使能或者失能指定的 I2C 中断
I2C_SendData 通过外设 I2Cx 发送一个数据
I2C_ReceiveData 返回通过 I2Cx 最近接收的数据
I2C_Send7bitAddress 向指定的从 I2C 设备传送地址字
I2C_ReadRegister 读取指定的 I2C 寄存器并返回其值
I2C_SoftwareResetCmd 使能或者失能指定 I2C 的软件复位
I2C_SMBusAlertConfig 驱动指定 I2Cx 的 SMBusAlert 管脚电平为高或低
I2C_TransmitPEC 使能或者失能指定 I2C 的 PEC 传输
I2C_PECPositionConfig 选择指定 I2C 的 PEC 位置
I2C_CalculatePEC 使能或者失能指定 I2C 的传输字 PEC 值计算
I2C_GetPEC 返回指定 I2C 的 PEC 值
I2C_ARPCmd 使能或者失能指定 I2C 的 ARP
I2C_StretchClockCmd 使能或者失能指定 I2C 的时钟延展
I2C_FastModeDutyCycleConfig 选择指定 I2C 的快速模式占空比
I2C_GetLastEvent 返回最近一次 I2C 事件
I2C_CheckEvent 检查最近一次 I2C 事件是否是输入的事件
I2C_GetFlagStatus 检查指定的 I2C 标志位设置与否
I2C_ClearFlag 清除 I2Cx 的待处理标志位
I2C_GetITStatus 检查指定的 I2C 中断发生与否
I2C_ClearITPendingBit 清除 I2Cx 的中断待处理位

2.1 函数I2C_DeInit

__
函数名 I2C_DeInit
函数原形 void I2C_DeInit(I2C_TypeDef* I2Cx)
功能描述 将外设 I2Cx 寄存器重设为缺省值
输入参数 I2Cx:x 可以是 1 或者 2,来选择 I2C 外设
输出参数 无
返回值 无
先决条件 无
被调用函数 RCC_APB1PeriphClockCmd().
例:
/* Deinitialize I2C2 interface*/
I2C_DeInit(I2C2);

2.2 函数I2C_ Init

函数名 I2C_Init
函数原形 void I2C_Init(I2C_TypeDef* I2Cx, I2C_InitTypeDef* I2C_InitStruct)
功能描述 根据 I2C_InitStruct 中指定的参数初始化外设 I2Cx 寄存器
输入参数 1 I2Cx:x 可以是 1 或者 2,来选择 I2C 外设
输入参数 2 I2C_InitStruct:指向结构 I2C_InitTypeDef 的指针,包含了外设 GPIO 的配置信息 参阅 Section:I2C_InitTypeDef 查阅更多该参数允许取值范围
输出参数 无
返回值 无
先决条件 无
被调用函数 无
I2C_InitTypeDef structure
typedef struct
{
u16 I2C_Mode;
u16 I2C_DutyCycle;
u16 I2C_OwnAddress1;
u16 I2C_Ack;
u16 I2C_AcknowledgedAddress;
u32 I2C_ClockSpeed;
} I2C_InitTypeDef;
I2C_Mode
I2C_Mode 用以设置 I2C 的模式。
_

I2C_Mode 描述
I2C_Mode_I2C 设置 I2C 为 I2C 模式
I2C_Mode_SMBusDevice 设置 I2C 为 SMBus 设备模式
I2C_Mode_SMBusHost 设置 I2C 为 SMBus 主控模式
I2C_DutyCycle
I2C_DutyCycle 用以设置 I2C 的占空比。

I2C_DutyCycle 描述
I2C_DutyCycle_ 16_9 I2C 快速模式 Tlow / Thigh = 16/9
I2C_DutyCycle_2 I2C 快速模式 Tlow / Thigh = 2
注意:该参数只有在 I2C 工作在快速模式(时钟工作频率高于 100KHz)下才有意义。

I2C_OwnAddress1
该参数用来设置第一个设备自身地址,它可以是一个 7 位地址或者一个 10 位地址。
I2C_AcknowledgedAddres 描述
I2C_AcknowledgeAddress_7bit 应答 7 位地址
I2C_AcknowledgeAddress_ 10bit 应答 10 位地址

I2C_Ack
I2C_Ack 使能或者失能应答(ACK),
I2C_Ack 描述
I2C_Ack_Enable 使能应答(ACK)
I2C_Ack_Disable 失能应答(ACK)
I2C_AcknowledgedAddress
I2C_AcknowledgedAddres 定义了应答 7 位地址还是 10 位地址。

I2C_ClockSpeed
该参数用来设置时钟频率,这个值不能高于 400KHz。
例:
/* Initialize the I2C1 according to the I2C_InitStructure members */
I2C_InitTypeDef I2C_InitStructure;
I2C_InitStructure.I2C_Mode = I2C_Mode_SMBusHost;
I2C_InitStructure.I2C_DutyCycle = I2C_DutyCycle_2;
I2C_InitStructure.I2C_OwnAddress1 = 0x03A2;
I2C_InitStructure.I2C_Ack = I2C_Ack_Enable;
I2C_InitStructure.I2C_AcknowledgedAddress =
I2C_AcknowledgedAddress_7bit;
I2C_InitStructure.I2C_ClockSpeed = 200000;
I2C_Init(I2C1, &I2C_InitStructure);

2.3 函数I2C_ StructInit

__
函数名 I2C_StructInit
函数原形 void I2C_StructInit(I2C_InitTypeDef* I2C_InitStruct)
功能描述 把 I2C_InitStruct 中的每一个参数按缺省值填入
输入参数 I2C_InitStruct:指向结构 I2C_InitTypeDef 的指针,待初始化
输出参数 无
返回值 无
先决条件 无
被调用函数 无
I2C InitStruct 默认值
_

成员 缺省值
I2C_Mode I2C_Mode_I2C
I2C_DutyCycle I2C_DutyCycle_2
I2C_OwnAddress1 0
I2C_Ack I2C_Ack_Disable
I2C_AcknowledgedAddres I2C_AcknowledgedAddress_7bit
I2C_ ClockSpeed 5000
例:
/* Initialize an I2C_InitTypeDef structure */
I2C_InitTypeDef I2C_InitStructure;
I2C_StructInit(&I2C_InitStructure);

2.4 函数I2C_ Cmd

函数名 I2C_ Cmd
函数原形 void I2C_Cmd(I2C_TypeDef* I2Cx, FunctionalState NewState)
功能描述 使能或者失能 I2C 外设
输入参数 1 I2Cx:x 可以是 1 或者 2,来选择 I2C 外设
输入参数 2 NewState: 外设 I2Cx 的新状态
这个参数可以取: ENABLE 或者 DISABLE
输出参数 无
返回值 无
先决条件 无
被调用函数 无
例:
/* Enable I2C1 peripheral */
I2C_Cmd(I2C1, ENABLE);

2.5 函数I2C_ DMACmd

__
函数名 I2C_ DMACmd
函数原形 I2C_DMACmd(I2C_TypeDef* I2Cx, FunctionalState NewState)
功能描述 使能或者失能指定 I2C 的 DMA 请求
输入参数 1 I2Cx:x 可以是 1 或者 2,来选择 I2C 外设
输入参数 2 NewState: I2Cx DMA 传输的新状态
这个参数可以取: ENABLE 或者 DISABLE
输出参数 无
返回值 无
先决条件 无
被调用函数 无
例:
/* Enable I2C2 DMA transfer */
I2C_DMACmd(I2C2, ENABLE);

2.6 函数I2C_ DMALastTransferCmd

函数名 I2C_ DMALastTransferCmd
函数原形 I2C_DMALastTransferCmd(I2C_TypeDef* I2Cx, FunctionalState NewState)
功能描述 使下一次 DMA 传输为最后一次传输
输入参数 1 I2Cx:x 可以是 1 或者 2,来选择 I2C 外设
输入参数 2 NewState: I2Cx DMA 最后一次传输的新状态
这个参数可以取: ENABLE 或者 DISABLE
输出参数 无
返回值 无
先决条件 无
被调用函数 无
例:
/* Specify that the next I2C2 DMA transfer is the last one */
I2C_DMALastTransferCmd(I2C2, ENABLE);

2.7 函数I2C_ GenerateSTART

_

函数名 I2C_ GenerateSTART
函数原形 void I2C_GenerateSTART(I2C_TypeDef* I2Cx, FunctionalState NewState)
功能描述 产生 I2Cx 传输 START 条件
输入参数 1 I2Cx:x 可以是 1 或者 2,来选择 I2C 外设
输入参数 2 NewState: I2Cx START 条件的新状态
这个参数可以取: ENABLE 或者 DISABLE
输出参数 无
返回值 无
先决条件 无
被调用函数 无
例:
/* Generate a START condition on I2C1 */
I2C_GenerateSTART(I2C1, ENABLE);

2.8 函数I2C_ GenerateSTOP

函数名 I2C_ GenerateSTOP
函数原形 void I2C_GenerateSTOP(I2C_TypeDef* I2Cx, FunctionalState NewState)
功能描述 产生 I2Cx 传输 STOP 条件
输入参数 1 I2Cx:x 可以是 1 或者 2,来选择 I2C 外设
输入参数 2 NewState: I2Cx STOP 条件的新状态
这个参数可以取: ENABLE 或者 DISABLE
输出参数 无
返回值 无
先决条件 无
被调用函数 无
例:
/* Generate a STOP condition on I2C2 */
I2C_GenerateSTOP(I2C2, ENABLE);

2.9 函数I2C_ AcknowledgeConfig


函数名 I2C_ AcknowledgeConfig
函数原形 void I2C_AcknowledgeConfig(I2C_TypeDef* I2Cx, FunctionalState NewState)
功能描述 使能或者失能指定 I2C 的应答功能
输入参数 1 I2Cx:x 可以是 1 或者 2,来选择 I2C 外设
输入参数 2 NewState: I2Cx 应答的新状态
这个参数可以取: ENABLE 或者 DISABLE
输出参数 无
返回值 无
先决条件 无
被调用函数 无
例:
/* Enable the I2C1 Acknowledgement */
I2C_AcknowledgeConfig(I2C1, ENABLE);

2.10 函数I2C_ OwnAddress2Config

函数名 I2C_ OwnAddress2Config
函数原形 void I2C_OwnAddress2Config(I2C_TypeDef* I2Cx, u8 Address)
功能描述 设置指定 I2C 的自身地址 2
输入参数 1 I2Cx:x 可以是 1 或者 2,来选择 I2C 外设
输入参数 2 Address: 指定的 7 位 I2C 自身地址 2
输出参数 无
返回值 无
先决条件 无
被调用函数 无
例:
/* Set the I2C1 own address2 to 0x38 */
I2C_OwnAddress2Config(I2C1, 0x38);

2.11 函数I2C_ DualAddressCmd

函数名 I2C_ DualAddressCmd
函数原形 void I2C_DualAddressCmd(I2C_TypeDef* I2Cx, FunctionalState NewState)
功能描述 使能或者失能指定 I2C 的双地址模式
输入参数 1 I2Cx:x 可以是 1 或者 2,来选择 I2C 外设
输入参数 2 NewState: I2Cx 双地址模式的新状态
这个参数可以取: ENABLE 或者 DISABLE
输出参数 无
返回值 无
先决条件 无
被调用函数 无
例:
/* Enable the I2C2 dual addressing mode*/
I2C_DualAdressCmd(I2C2, ENABLE);

2.12 函数I2C_ GeneralCallCmd

函数名 I2C_ GeneralCallCmd
函数原形 void I2C_GeneralCallCmd(I2C_TypeDef* I2Cx, FunctionalState NewState)
功能描述 使能或者失能指定 I2C 的广播呼叫功能
输入参数 1 I2Cx:x 可以是 1 或者 2,来选择 I2C 外设
输入参数 2 NewState: I2Cx 广播呼叫的新状态
这个参数可以取: ENABLE 或者 DISABLE
输出参数 无
返回值 无
先决条件 无
被调用函数 无
例:
/* Enable the I2C1 general call feature */
I2C_GeneralCallCmd(I2C1, ENABLE);

2.13 函数I2C_ ITConfig


函数名 I2C_ITConfig
函数原形 void I2C_ITConfig(I2C_TypeDef* I2Cx, u16 I2C_IT, FunctionalState NewState)
功能描述 使能或者失能指定的 I2C 中断
输入参数 1 I2Cx:x 可以是 1 或者 2,来选择 I2C 外设
输入参数 2 I2C_IT:待使能或者失能的 I2C 中断源
参阅 Section:I2C_IT 查阅更多该参数允许取值范围
输入参数 3 NewState:I2Cx 中断的新状态
这个参数可以取: ENABLE 或者 DISABLE
输出参数 无
返回值 无
先决条件 无
被调用函数 无
I2C_IT
输入参数 I2C_IT 使能或者失能 I2C 的中断。可以取下表的一个或者多个取值的组合作为该参数的值。
_

I2C_IT 描述
I2C_IT_BUF 缓存中断屏蔽
I2C_IT_EVT 事件中断屏蔽
I2C_IT_ERR 错误中断屏蔽
例:
/* Enable I2C2 event and buffer interrupts */
I2C_ITConfig(I2C2, I2C_IT_BUF | I2C_IT_EVT, ENABLE);

2.14 函数I2C_ SendData

函数名 I2C_ SendData
函数原形 void I2C_SendData(I2C_TypeDef* I2Cx, u8 Data)
功能描述 通过外设 I2Cx 发送一个数据
输入参数 1 I2Cx:x 可以是 1 或者 2,来选择 I2C 外设
输入参数 2 Data: 待发送的数据
输出参数 无
返回值 无
先决条件 无
被调用函数 无
例:
/* Transmit 0x5D byte on I2C2 /
I2C_SendData(I2C2, 0x5D);
2.15 函数I2C_ ReceiveData
函数名 I2C_ ReceiveData
函数原形 u8 I2C_ReceiveData(I2C_TypeDef
I2Cx)
功能描述 返回通过 I2Cx 最近接收的数据
输入参数 I2Cx:x 可以是 1 或者 2,来选择 I2C 外设
输出参数 无
返回值 接收到的字
先决条件 无
被调用函数 无
例:
/* Read the received byte on I2C1 */
u8 ReceivedData;
ReceivedData = I2C_ReceiveData(I2C1);

2.16 函数I2C_ Send7bitAddress

函数名 I2C_ Send7bitAddress
函数原形 void I2C_Send7bitAddress(I2C_TypeDef* I2Cx, u8 Address, u8
I2C_Direction)
功能描述 向指定的从 I2C 设备传送地址字
输入参数 1 I2Cx:x 可以是 1 或者 2,来选择 I2C 外设
输入参数 2 Address: 待传输的从 I2C 地址
输入参数 3 I2C_Direction:设置指定的 I2C 设备工作为发射端还是接收端 参阅 Section:I2C_Direction 查阅更多该参数允许取值范围
输出参数 无
返回值 无
先决条件 无
被调用函数 无
I2C_Direction
该参数设置 I2C 界面为发送端模式或者接收端模式
_

I2C_Direction 描述
I2C_Direction_Transmitter 选择发送方向
I2C_Direction_Receiver 选择接收方向
例:
/* Send, as transmitter, the Slave device address 0xA8 in 7-bit
addressing mode in I2C1 */
I2C_Send7bitAddress(I2C1, 0xA8, I2C_Direction_Transmitter);

2.17 函数I2C_ ReadRegister


函数名 I2C_ ReadRegister
函数原形 u16 I2C_ReadRegister(I2C_TypeDef* I2Cx, u8 I2C_Register)
功能描述 读取指定的 I2C 寄存器并返回其值
输入参数 1 I2Cx:x 可以是 1 或者 2,来选择 I2C 外设
输入参数 2 I2C_Register:待读取的 I2C 寄存器
参阅 Section:I2C_Register 查阅更多该参数允许取值范围
输出参数 无
返回值 被读取的寄存器值 1.
先决条件 无
被调用函数 无

  1. 读取寄存器可能会清除某些标志位
    I2C_Register
    给出了所有可以被函数 I2C_ ReadRegister 读取的寄存器列表

I2C_Register 描述
I2C_Register_CR1 选择读取寄存器 I2C_CR1
I2C_Register_CR2 选择读取寄存器 I2C_CR2
I2C_Register_OAR1 选择读取寄存器 I2C_OAR1
I2C_Register_OAR2 选择读取寄存器 I2C_OAR2
I2C_Register_DR 选择读取寄存器 I2C_DR
I2C_Register_SR1 选择读取寄存器 I2C_SR1
I2C_Register_SR2 选择读取寄存器 I2C_SR2
I2C_Register_CCR 选择读取寄存器 I2C_ CCR
I2C_Register_TRISE 选择读取寄存器 I2C_TRISE
例:
/* Return the I2C_CR1 register value of I2C2 peripheral */
u16 RegisterValue;
RegisterValue = I2C_ReadRegister(I2C2, I2C_Register_CR1);

2.18 函数I2C_ SoftwareResetCmd

函数名 I2C_ SoftwareResetCmd
函数原形 I2C_SoftwareResetCmd(I2C_TypeDef* I2Cx, FunctionalState NewState)
功能描述 使能或者失能指定 I2C 的软件复位
输入参数 1 I2Cx:x 可以是 1 或者 2,来选择 I2C 外设
输入参数 2 NewState:I2Cx 软件复位的新状态
这个参数可以取: ENABLE 或者 DISABLE
输出参数 无
返回值 无
先决条件 无
被调用函数 无
例:
/* Put under reset the I2C1 peripheral */
I2C_SoftwareResetCmd(I2C1, ENABLE);

2.19 函数I2C_ SMBusAlertConfig

函数名 I2C_ SMBusAlertConfig
函数原形 void I2C_SMBusAlertConfig(I2C_TypeDef* I2Cx, u16 I2C_SMBusAlert)
功能描述 驱动指定 I2Cx 的 SMBusAlert 管脚电平为高或低
输入参数 1 I2Cx:x 可以是 1 或者 2,来选择 I2C 外设
输入参数 2 I2C_ SMBusAlert:SMBusAlert 管脚电平
参阅 Section:I2C_ SMBusAlert 查阅更多该参数允许取值范围
输出参数 无
返回值 无
先决条件 无
被调用函数 无
I2C_SMBusAlert
I2C_ SMBusAlert 用以设置 SMBusAlert 管脚的有效电平。
__
I2C_ SMBusAlert 描述
I2C_SMBusAlert_Low 驱动 SMBusAlert 管脚电平为高
I2C_SMBusAlert_High 驱动 SMBusAlert 管脚电平为低
例:
/* Let the I2C2 SMBusAlert pin High */
I2C_SMBusAlertConfig(I2C2, I2C_SMBusAlert_High);

2.20 函数I2C_ TransmitPEC

__
函数名 I2C_ TransmitPEC
函数原形 I2C_TransmitPEC(I2C_TypeDef* I2Cx, FunctionalState NewState)
功能描述 使能或者失能指定 I2C 的 PEC 传输
输入参数 1 I2Cx:x 可以是 1 或者 2,来选择 I2C 外设
输入参数 2 NewState:I2CxPEC 传输的新状态
这个参数可以取: ENABLE 或者 DISABLE
输出参数 无
返回值 无
先决条件 无
被调用函数 无
例:
/* Enable the I2C1 PEC transfer */
I2C_TransmitPEC(I2C1, ENABLE);

2.21 函数I2C_ PECPositionConfig

函数名 I2C_ PECPositionConfig
函数原形 void I2C_PECPositionConfig(I2C_TypeDef* I2Cx, u16 I2C_PECPosition)
功能描述 选择指定 I2C 的 PEC 位置
输入参数 1 I2Cx:x 可以是 1 或者 2,来选择 I2C 外设
输入参数 2 I2C_ PECPosition:PEC 位置
参阅 Section:I2C_ PECPositiont 查阅更多该参数允许取值范围
输出参数 无
返回值 无
先决条件 无
被调用函数 无
I2C_PECPosition
I2C_ PECPosition 用以设置 PEC 位置。
__
I2C_ PECPosition 描述
I2C_PECPosition_Next PEC 位提示下一字为 PEC
I2C_PECPosition_Current PEC 位提示当前字为 PEC
例:
/* Configure the PEC bit to indicvates that the next byte in shift
register is PEC for I2C2 */
I2C_PECPositionConfig(I2C2, I2C_PECPosition_Next);

2.22 函数I2C_ CalculatePEC

__
函数名 I2C_ CalculatePEC
函数原形 void I2C_CalculatePEC(I2C_TypeDef* I2Cx, FunctionalState NewState)
功能描述 使能或者失能指定 I2C 的传输字 PEC 值计算
输入参数 1 I2Cx:x 可以是 1 或者 2,来选择 I2C 外设
输入参数 2 NewState:I2Cx 传输字 PEC 值计算的新状态
这个参数可以取: ENABLE 或者 DISABLE
输出参数 无
返回值 无
先决条件 无
被调用函数 无
例:
/* Enable the PEC calculation for the transfered bytes from I2C2 */
I2C_CalculatePEC(I2C2, ENABLE);

2.23 函数I2C_ GetPEC

函数名 I2C_ GetPEC
函数原形 u8 I2C_GetPEC(I2C_TypeDef* I2Cx)
功能描述 返回指定 I2C 的 PEC 值
输入参数 I2Cx:x 可以是 1 或者 2,来选择 I2C 外设
输出参数 无
返回值 PEC 值
先决条件 无
被调用函数 无
例:
/* Returns the I2C2 PEC value */
u8 PECValue;
PECValue = I2C_GetPEC(I2C2);

2.24 函数I2C_ ARPCmd

函数名 I2C_ ARPCmd
函数原形 void I2C_ARPCmd(I2C_TypeDef* I2Cx, FunctionalState NewState)
功能描述 使能或者失能指定 I2C 的 ARP
输入参数 1 I2Cx:x 可以是 1 或者 2,来选择 I2C 外设
输入参数 2 NewState:I2Cx ARP 的新状态
这个参数可以取: ENABLE 或者 DISABLE
输出参数 无
返回值 无
先决条件 无
被调用函数 无
例:
/* Enable the I2C1 ARP feature */
I2C_ARPCmd(I2C1, ENABLE);

2.25 函数I2C_ StretchClockCmd

函数名 I2C_ StretchClockCmd
函数原形 void I2C_StretchClockCmd(I2C_TypeDef* I2Cx, FunctionalState NewState)
功能描述 使能或者失能指定 I2C 的时钟延展
输入参数 1 I2Cx:x 可以是 1 或者 2,来选择 I2C 外设
输入参数 2 NewState:I2Cx 时钟延展的新状态
这个参数可以取: ENABLE 或者 DISABLE
输出参数 无
返回值 无
先决条件 无
被调用函数 无
例:
/* Enable the I2C2 clock stretching */
I2C_StretchClockCmd(I2C2, ENABLE);

2.26 函数I2C_ FastModeDutyCycleConfig


函数名 I2C_ FastModeDutyCycleConfig
函数原形 void I2C_FastModeDutyCycleConfig(I2C_TypeDef* I2Cx, u16 I2C_DutyCycle)
功能描述 选择指定 I2C 的快速模式占空比
输入参数 1 I2Cx:x 可以是 1 或者 2,来选择 I2C 外设
输入参数 2 I2C_DutyCycle:快速模式占空比
参阅 Section:I2C_DutyCycle 查阅更多该参数允许取值范围
输出参数 无
返回值 无
先决条件 无
被调用函数 无
I2C_DutyCycle
I2C_DutyCycle 用以设置 I2C 快速模式的占空比。

I2C_DutyCycle 描述
I2C_DutyCycle_ 16_9 I2C 快速模式 Tlow / Thigh = 16/9
I2C_DutyCycle_2 I2C 快速模式 Tlow / Thigh = 2
例:
/* Set the fast mode duty cyle to 16/9 for I2C2 */
I2C_FastModeDutyCycleConfig(I2C2, I2C_DutyCycle_16_9);

2.27 函数I2C_ GetLastEvent

函数名 I2C_ GetLastEvent
函数原形 u32 I2C_GetLastEvent(I2C_TypeDef* I2Cx)
功能描述 返回最近一次 I2C 事件
输入参数 I2Cx:x 可以是 1 或者 2,来选择 I2C 外设
输出参数 无
返回值 最近一次 I2C 事件
先决条件 无
被调用函数 无
例:
/* Get last I2C1 event */
u32 Event;
Event = I2C_GetLastEvent(I2C1);

2.28 函数 I2C_ CheckEvent

函数名 I2C_ CheckEvent
函数原形 ErrorStatus I2C_CheckEvent(I2C_TypeDef* I2Cx, u32 I2C_EVENT)
功能描述 检查最近一次 I2C 事件是否是输入的事件
输入参数 1 I2Cx:x 可以是 1 或者 2,来选择 I2C 外设
输入参数 3 I2C_Event:待检查的事件
参阅 Section:I2C_Event 查阅更多该参数允许取值范围
输出参数 无
返回值 ErrorStatus 枚举值:
SUCCESS:最近一次 I2C 事件是 I2C_Event
ERROR:最近一次 I2C 事件不是 I2C_Event
先决条件 无
被调用函数 无
I2C_Event
列举了所有可以被函数 I2C_ CheckEvent 检查的事件。
_

I2C_Event 描述
I2C_EVENT_SLAVE_RECEIVER_ADDRESS_MATCHED EV1
I2C_EVENT_SLAVE_TRANSMITTER_ADDRESS_MATCHED EV1
I2C_EVENT_SLAVE_RECEIVER_SECONDADDRESS_MATCHED EV1
I2C_EVENT_SLAVE_TRANSMITTER_SECONDADDRESS_MATCHED EV1
I2C_EVENT_SLAVE_GENERALCALLADDRESS_MATCHED EV1
I2C_EVENT_SLAVE_BYTE_RECEIVED EV2
I2C_EVENT_SLAVE_BYTE_TRANSMITTED EV3
I2C_EVENT_SLAVE_ACK_FAILURE EV3-1
I2C_EVENT_SLAVE_STOP_DETECTED EV4
I2C_EVENT_MASTER_MODE_SELECT EV5
I2C_EVENT_MASTER_RECEIVER_MODE_SELECTED EV6
I2C_EVENT_MASTER_TRANSMITTER_MODE_SELECTED EV6
I2C_EVENT_MASTER_BYTE_RECEIVED EV7
I2C_EVENT_MASTER_BYTE_TRANSMITTED EV8
I2C_EVENT_MASTER_MODE_ADDRESS10 EV9
例:
/* Check if the event happen on I2C1 is equal to
I2C_EVENT_MASTER_BYTE_RECEIVED */
ErrorStatus Status;
Status = I2C_CheckEvent(I2C1, I2C_EVENT_MSTER_BYTE_RECEIVED);

2.29 函数I2C_ GetFlagStatus


函数名 I2C_ GetFlagStatus
函数原形 FlagStatus I2C_GetFlagStatus(I2C_TypeDef* I2Cx, u32 I2C_FLAG)
功能描述 检查指定的 I2C 标志位设置与否
输入参数 1 I2Cx:x 可以是 1 或者 2,来选择 I2C 外设
输入参数 2 I2C_FLAG:待检查的 I2C 标志位
参阅 Section:I2C_FLAG 查阅更多该参数允许取值范围
输出参数 无
返回值 I2C_FLAG 的新状态 1.
先决条件 无
被调用函数 无

  1. 读取寄存器可能会清除某些标志位
    I2C_FLAG
    给出了所有可以被函数 I2C_ GetFlagStatus 检查的标志位列表
    _

I2C_FLAG 描述
I2C_FLAG_DUALF 双标志位(从模式)
I2C_FLAG_SMBHOST SMBus 主报头(从模式)
I2C_FLAG_SMBDEFAULT SMBus 缺省报头(从模式)
I2C_FLAG_GENCALL 广播报头标志位(从模式)
I2C_FLAG_TRA 发送/接收标志位
I2C_FLAG_BUSY 总线忙标志位
I2C_FLAG_MSL 主/从标志位
I2C_FLAG_SMBALERT SMBus 报警标志位
I2C_FLAG_TIMEOUT 超时或者 Tlow 错误标志位
I2C_FLAG_PECERR 接收 PEC 错误标志位
I2C_FLAG_OVR 溢出/不足标志位(从模式)
I2C_FLAG_AF 应答错误标志位
I2C_FLAG_ARLO 仲裁丢失标志位(主模式)
I2C_FLAG_BERR 总线错误标志位
I2C_FLAG_TXE 数据寄存器空标志位(发送端)
I2C_FLAG_RXNE 数据寄存器非空标志位(接收端)
I2C_FLAG_STOPF 停止探测标志位(从模式)
I2C_FLAG_ADD10 10 位报头发送(主模式)
I2C_FLAG_BTF 字传输完成标志位
I2C_FLAG_ADDR 地址发送标志位(主模式) “ADSL”
地址匹配标志位(从模式) “ENDAD”
I2C_FLAG_SB 起始位标志位(主模式)
注意:只有位[27:0]被函数 I2C_ GetFlagStatus 用来返回指定的标志位状态。值对应经计算的寄存器中的
标志位位置,该寄存器包含 2 个 I2C 状态寄存器 I2C_SR1 和 I2C_SR2。
例:
/* Return the I2C_FLAG_AF flag state of I2C2 peripheral */
Flagstatus Status;
Status = I2C_GetFlagStatus(I2C2, I2C_FLAG_AF);

2.30 函数I2C_ ClearFlag


函数名 I2C_ ClearFlag
函数原形 void I2C_ClearFlag(I2C_TypeDef* I2Cx, u32 I2C_FLAG)
功能描述 清除 I2Cx 的待处理标志位
输入参数 1 I2Cx:x 可以是 1 或者 2,来选择 I2C 外设
输入参数 2 I2C_FLAG:待清除的 I2C 标志位
参阅 Section:I2C_FLAG 查阅更多该参数允许取值范围
注意:标志位 DUALF, SMBHOST, SMBDEFAULT, GENCALL, TRA, BUSY,MSL, TXE 和 RXNE 不能被本函数清除
输出参数 无
返回值 无
先决条件 无
被调用函数 无
I2C_FLAG
给出了所有可以被函数 I2C_ ClearFlag 清除的标志位列表。
_

I2C_FLAG 描述
I2C_FLAG_SMBALERT SMBus 报警标志位
I2C_FLAG_TIMEOUT 超时或者 Tlow 错误标志位
I2C_FLAG_PECERR 接收 PEC 错误标志位
I2C_FLAG_OVR 溢出/不足标志位(从模式)
I2C_FLAG_AF 应答错误标志位
I2C_FLAG_ARLO 仲裁丢失标志位(主模式)
I2C_FLAG_BERR 总线错误标志位
I2C_FLAG_STOPF 停止探测标志位(从模式)
I2C_FLAG_ADD10 10 位报头发送(主模式)
I2C_FLAG_BTF 字传输完成标志位
I2C_FLAG_ADDR 地址发送标志位(主模式) “ADSL”
地址匹配标志位(从模式) “ENDAD”
I2C_FLAG_SB 起始位标志位(主模式)
例:
/* Clear the Stop detection flag on I2C2 */
I2C_ClearFlag(I2C2, I2C_FLAG_STOPF);

2.31 函数I2C_ GetITStatus

函数名 I2C_ GetITStatus
函数原形 ITStatus I2C_GetITStatus(I2C_TypeDef* I2Cx, u32 I2C_IT)
功能描述 检查指定的 I2C 中断发生与否
输入参数 1 I2Cx:x 可以是 1 或者 2,来选择 I2C 外设
输入参数 2 I2C_IT:待检查的 I2C 中断源
参阅 Section:I2C_IT 查阅更多该参数允许取值范围
输出参数 无
返回值 I2C_IT 的新状态(SET 或者 RESET)1.
先决条件 无
被调用函数 无

  1. 读取寄存器可能会清除某些标志位
    I2C_IT
    给出了所有可以被函数 I2C_ GetITStatus 检查的中断标志位列表
    _

I2C_IT 描述
I2C_IT_SMBALERT SMBus 报警标志位
I2C_IT_TIMEOUT 超时或者 Tlow 错误标志位
I2C_IT_PECERR 接收 PEC 错误标志位
I2C_IT_OVR 溢出/不足标志位(从模式)
I2C_IT_AF 应答错误标志位
I2C_IT_ARLO 仲裁丢失标志位(主模式)
I2C_IT_BERR 总线错误标志位
I2C_IT_STOPF 停止探测标志位(从模式)
I2C_IT_ADD10 10 位报头发送(主模式)
I2C_IT_BTF 字传输完成标志位
I2C_IT_ADDR 地址发送标志位(主模式) “ADSL”
地址匹配标志位(从模式) “ENDAD”
I2C_IT_SB 起始位标志位(主模式)
例:
/* Return the I2C_IT_OVR flag state of I2C1 peripheral */
ITstatus Status;
Status = I2C_GetITStatus(I2C1, I2C_IT_OVR);

2.32 函数I2C_ ClearITPendingBit

函数名 I2C_ ClearITPendingBit
函数原形 void I2C_ClearITPendingBit(I2C_TypeDef* I2Cx, u32 I2C_IT)
功能描述 清除 I2Cx 的中断待处理位
输入参数 1 I2Cx:x 可以是 1 或者 2,来选择 I2C 外设
输入参数 2 I2C_IT:待检查的 I2C 中断源
参阅 Section:I2C_IT 查阅更多该参数允许取值范围
输出参数 无
返回值 无
先决条件 无
被调用函数 无
I2C_IT
给出了所有可以被函数 I2C_ ClearITPendingBit 清除的中断待处理位列表
_

I2C_IT 描述
I2C_IT_SMBALERT SMBus 报警标志位
I2C_IT_TIMEOUT 超时或者 Tlow 错误标志位
I2C_IT_PECERR 接收 PEC 错误标志位
I2C_IT_OVR 溢出/不足标志位(从模式)
I2C_IT_AF 应答错误标志位
I2C_IT_ARLO 仲裁丢失标志位(主模式)
I2C_IT_BERR 总线错误标志位
I2C_IT_STOPF 停止探测标志位(从模式)
I2C_IT_ADD10 10 位报头发送(主模式)
I2C_IT_BTF 字传输完成标志位
I2C_IT_ADDR 地址发送标志位(主模式) “ADSL”
地址匹配标志位(从模式) “ENDAD”
I2C_IT_SB 起始位标志位(主模式)
例:
/* Clear the Timeout interrupt opending bit on I2C2 */
I2C_ClearITPendingBit(I2C2, I2C_IT_TIMEOUT);

该文档修改记录:

修改时间修改说明
2023年8月20日第一次发布,介绍了STM32内部集成电路(I2C)所有函数的介绍及使用

总结

以上就是3 STM32标准库函数 之 内部集成电路(I2C)所有函数的介绍及使用的内容,本文介绍了 内部集成电路(I2C)所有函数的介绍及使用所有函数的简单使用。
有不明白的地方欢迎留言;有建议欢迎留言,我后面编写文档好改进。
创作不容,如果文档对您有帮助,记得给个赞。

  • 3
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
### 回答1: STM32标准库函数说明书是非常重要的文档,它包含了开发人员使用STM32系列芯片编程所需要的全部API函数的详细信息。在STM32标准库函数说明书中,开发人员可以找到各种API函数的参数、返回值、功能、用法,以及代码示例等相关信息。 另外,STM32标准库函数说明书还提供了对芯片的基本功能、外设特性、时钟管理等方面的描述。它涵盖了STM32系列芯片的所有类型,包括Cortex-M0,Cortex-M3和Cortex-M4等不同的型号,并且还包括了各种开发板和外设的使用说明,如USB、CAN、SDIO等。 在使用STM32芯片进行嵌入式开发时,开发人员可以轻松地快速上手,通过使用STM32标准库函数说明书的内容进行编程。依靠STM32标准库函数说明书,开发人员可以轻松地开发各种应用程序,如工控系统、智能家居、医疗设备、机器人等等。 总之,STM32标准库函数说明书是非常重要的文档,它为开发人员提供了必要的信息和工具,使得他们可以更加高效地开发STM32系列芯片的应用程序。无论是初学者还是专业人士,都可以从中获得很大的帮助。 ### 回答2: STM32标准库函数说明书是一本极其重要的资料,它是STM32系列芯片软件开发过程中不可或缺的参考资料。 STM32标准库提供了丰富的函数库,包含了几乎所有与STM32芯片相关的操作和功能。这些函数通过底层驱动实现各种外设的控制和数据处理,其中常用的有GPIO、USART、I2C、SPI、ADC等。这些函数通常是从其相应的.s文件中调用的,并且支持中断和DMA操作。 此外,STM32标准库还提供了一些实用函数,如字符串、数学和时间函数等。例如,可以使用库中的sprintf()函数来格式化输出字符串,并使用库中的sin()和cos()函数来执行三角函数运算。 在使用STM32标准库函数时,必须确保正确设置芯片时钟和引脚,以及正确初始化相应的外设。在使用函数时,必须遵循相应的函数调用接口,传递正确的参数,并正确处理返回值或错误码。 总之,STM32标准库函数说明书是STM32软件开发必不可少的参考资料。熟练掌握STM32标准库函数,可以更方便地创建高效的STM32应用程序,并快速实现各种应用需求。 ### 回答3: STM32标准库函数说明书是一本详细介绍STM32系列单片机标准库函数的手册。它包含了STM32系列单片机的所有常用的标准库函数,提供了完整的函数原型、函数功能、函数参数以及使用示例等信息,能够帮助开发者快速了解并熟练使用STM32标准库函数。 该手册按照功能分类,包括了STM32系列单片机的GPIO、USART、SPI、I2C、DMA、NVIC、FLASH等模块的标准库函数,涵盖了软件开发的所有主要部分。每个函数介绍都非常详细,包括函数的名称、参数、返回值、应用示例等,还有代码示例和应用注意事项,可帮助开发者快速掌握STM32标准库函数使用方法。 此外,该手册也介绍STM32标准库函数使用流程和应用实例,通过这些实例可以更好地理解函数的具体使用方法和流程。同时,该手册也提供了STM32系列单片机的数据手册、参考手册等相关文档的链接,方便开发者深入学习和了解STM32系列单片机的具体功能和特性。 总之,STM32标准库函数说明书是STM32系列单片机开发过程中必备的工具和参考资料,对于初学者和有一定开发经验的开发者都是非常有用和实用的。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

常驻客栈

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值