ZBLOG

Rebuild started: Project: BH-F103 *** Using Compiler 'V5.06 update 4 (build 422)', folder: 'C:\Users\Yuluoqiao\AppData\Local\Keil_v5\ARM\ARMCC\Bin' Rebuild target 'BH-F103' compiling stm32f10x_dac.c... compiling stm32f10x_it.c... compiling misc.c....

根据你提供的编译信息,出现了几个错误,主要是因为函数声明不一致以及在调用时参数不匹配。以下是具体分析和解决方案:

错误分析

  1. 错误:函数声明不兼容

    • 你在 i2c.h 中声明了 I2C_Init 函数:
      
      void I2C_Init(I2C_TypeDef* I2Cx, I2C_InitTypeDef* I2C_InitStruct);
      
    • 然而,在你的实现文件 i2c.c 中,你将其定义为无参数版本:
      
      void I2C_Init(void)
      
    • 这导致了“declaration is incompatible with”的错误,因为两个函数的参数数量和类型不匹配。
  2. 错误:调用时参数过多

    • 编译器还报告了“too many arguments in function call”的错误,这表明你在某处尝试以多个参数调用无参版本的 I2C_Init

解决方案

1. 修复函数声明

首先,你需要使 i2c.hi2c.c 中的函数声明与定义一致。如果确实需要传递两个参数,请更新 i2c.c 文件中的实现,如下所示:

// i2c.h
#ifndef __I2C_H
#define __I2C_H

#include "stm32f10x_i2c.h"

// 确保此处与实现一致
void I2C_Init(I2C_TypeDef* I2Cx, I2C_InitTypeDef* I2C_InitStruct);

#endif /* __I2C_H */
// iic.c 或者 i2c.c
#include "i2c.h"

void I2C_Init(I2C_TypeDef* I2Cx, I2C_InitTypeDef* I2C_InitStruct) {
    // 在这里添加初始化代码,使用传入的参数进行配置。
}

确保你的代码逻辑适应这两个参数,并在主程序或其他相关位置相应地调用此函数。

3. 检查函数调用

检查所有对 I2C_Init() 的调用,确保它们都传递正确数量和类型的参数。例如,如果你想要初始化并且有相关结构体实例,可以这样做:

I2C_TypeDef* myIIC = ...; // 根据实际情况获取或定义这个变量
I2C_InitTypeDef myInitStruct;
// 填充 myInitStruct 的字段,例如设置波特率、模式等

// 调用时确保提供所需的两个参数
I2C_Init(myIIC, &myInitStruct);

结论

  • 确保所有涉及到的函数声明和实现都是一致的,包括其参数。
  • 修改每个地方以确保使用正确数量和类型的参数来调用这个函数。
  • 完成上述修改后,重新编译项目以查看问题是否已解决。如果仍然存在问题,请继续寻求帮助!


    内容由零声教学AI助手提供,问题来源于学员提问

本站部分文章来源于网络,版权归原作者所有,如有侵权请联系站长删除。
转载请注明出处:https://sdn.0voice.com/?id=7597

分享:
扫描分享到社交APP
上一篇
下一篇
发表列表
游客 游客
此处应有掌声~
评论列表

还没有评论,快来说点什么吧~

联系我们

在线咨询: 点击这里给我发消息

微信号:3007537140

上班时间: 10:30-22:30

关注我们
x

注册

已经有帐号?