ZBLOG

Build started: Project: BH-F103 *** Using Compiler 'V5.06 update 4 (build 422)', folder: 'C:\Users\Yuluoqiao\AppData\Local\Keil_v5\ARM\ARMCC\Bin' Build target 'BH-F103' compiling i2c.c... ..\..\User\i2c.h(14): warning: #1-D: last line of file end...

根据您提供的错误信息,代码中存在多个问题。以下是详细分析和解决方案:

错误分析

  1. 函数声明不兼容
    • I2C_Init 的实现与在 i2c.h 中声明的签名不匹配。头文件中声明为:
      
      void I2C_Init(I2C_TypeDef* I2Cx, I2C_InitTypeDef* I2C_InitStruct);
      
      而在 i2c.c 中定义为:
      
      void I2C_Init(void)
      

这两个函数的参数列表不同,导致了编译器报错。

  1. 函数调用参数过多

    • 当你尝试调用 I2C_Init() 时,传递了比它接受更多的参数,这与其实际定义不符。
  2. 隐式声明

    • SDA_HIGH, SCL_HIGH, SDA_LOW, 和 SCL_LOW 函数未被正确定义或包含,相应的函数原型缺失。
  3. 返回值类型错误

    • 在某个返回类型为 void 的函数中使用了 return 0; 语句,这是不允许的。
  4. 文件最后一行没有换行符(警告):

    • 这是一个轻微的问题,不会导致编译失败,但最好在文件末尾添加换行符以消除警告。

解决方案

  1. 修正函数定义: 修改您的 i2c.c 文件中的 I2C_Init 函数实现,使其与头文件中的声明相匹配。例如:
   void I2C_Init(I2C_TypeDef* I2Cx, I2C_InitTypeDef* I2C_InitStruct) {
       // 初始化代码
   }

确保在调用时也提供相应参数。

  1. 检查调用: 确保所有对 I2C_Init() 的调用都传入正确数量和类型的参数。例如:

    I2C_Init(I2Cx, &I2C_Config); // 假设你有一个正确配置好的结构体
    
  2. 确保所有函数都有声明: 为每个未明确声明的宏或函数(如 SDA_HIGH, SCL_HIGH 等)添加适当的前置声明,例如,在你的 i2c.h 中或者合适的位置:

    void SDA_HIGH(void);
    void SCL_HIGH(void);
    void SDA_LOW(void);
    void SCL_LOW(void);
    
  3. 删除无效返回语句: 在任何返回类型为 void 的函数中,删除不必要的返回语句。例如,把这一行删除:

      return 0; // 删除这一行,因为该函数应该是 void 类型。
    
  4. 清理警告: 在源文件最后添加一个新行来清理“最后一行没有换行”的警告。

示例代码修正

整合这些建议后,你可能会得到如下类似结构:

#include "i2c.h"

// Function prototypes for helper functions (ensure they're defined somewhere)
void SDA_HIGH(void);
void SCL_HIGH(void);
void SDA_LOW(void);
void SCL_LOW(void);

void I2C_Init(I2C_TypeDef* I2Cx, I2C_InitTypeDef* I2C_InitStruct) {
   // Initialization code here.
}

void SomeFunction() {
   // Correctly call the function with parameters.
   I2C_Init(I1Cx, &init_struct); // Ensure init_struct is properly defined and populated.
}

// Example read function:
void I2C_ReadBytes(uint8_t addr, uint8_t reg, uint8_t *buf, uint16_t len) {
   // Implementation code here.
}

总结

通过以上步骤,可以逐步排查并解决问题。如果仍然遇到其他错误,请继续提供相关信息,我将很高兴帮助您!


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

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

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

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

联系我们

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

微信号:3007537140

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

关注我们
x

注册

已经有帐号?