void HAL_I2C_SlaveRxCpltCallback(I2C_HandleTypeDef *hi2c) {
// 处理接收到的数据
ProcessReceivedData();
// 准备好接收下一个数据包
HAL_I2C_Slave_Receive_IT(hi2c, buffer, buffer_size);
}
void HAL_I2C_SlaveTxCpltCallback(I2C_HandleTypeDef *hi2c) {
// 发送下一个数据包或结束传输
PrepareNextDataToSend();
// 准备好接收来自主机的下一个命令
HAL_I2C_Slave_Receive_IT(hi2c, buffer, buffer_size);
}
void HAL_I2C_ErrorCallback(I2C_HandleTypeDef *hi2c) {
// 处理I2C错误
HandleI2CError();
// 重新初始化I2C外设
HAL_I2C_Init(hi2c);
}
|