请列出STM32F103的I2C发送与接收函数与STM32F072的I2C发送与接受函数的不同点
时间: 2024-05-12 07:14:25 浏览: 164
STM32F103和STM32F072都支持I2C总线,但它们的外设寄存器和函数用法略有不同。
下面是STM32F103的I2C发送和接收函数示例:
void I2C_SendData(uint8_t data) {
while(I2C_GetFlagStatus(I2C1, I2C_FLAG_TXE) == RESET);
I2C_SendData(I2C1, data);
while(I2C_GetFlagStatus(I2C1, I2C_FLAG_BTF) == RESET);
}
uint8_t I2C_ReceiveData(void) {
while(I2C_GetFlagStatus(I2C1, I2C_FLAG_RXNE) == RESET);
return I2C_ReceiveData(I2C1);
}
在STM32F103中,发送和接收函数分别使用I2C_SendData和I2C_ReceiveData函数,并使用I2C_GetFlagStatus检查传输是否完成。此外,I2C1是I2C控制器的实例。
下面是STM32F072的I2C发送和接收函数示例:
void I2C_SendData(I2C_HandleTypeDef *hi2c, uint8_t data) {
HAL_I2C_Transmit(hi2c, (uint16_t)I2C_ADDRESS, &data, 1, 1000);
}
uint8_t I2C_ReceiveData(I2C_HandleTypeDef *hi2c) {
uint8_t data;
HAL_I2C_Receive(hi2c, (uint16_t)I2C_ADDRESS, &data, 1, 1000);
return data;
}
在STM32F072中,发送和接收函数采用HAL库中的函数HAL_I2C_Transmit和HAL_I2C_Receive,并传入I2C_HandleTypeDef结构体的指针以及I2C地址。此外,STM32F072的I2C控制器实例也需要在I2C_HandleTypeDef结构体中定义。
因此,STM32F103和STM32F072的I2C发送和接收函数的不同点在于使用的函数以及参数传递方式略有不同。
相关推荐


















