【问题标题】:Error when building project using Atmel Studio 6, for Atmega2560(with HMC5883L, MPU6050 and I2Cdev libararies)使用 Atmel Studio 6 为 Atmega2560(带有 HMC5883L、MPU6050 和 I2Cdev 库)构建项目时出错
【发布时间】:2014-09-28 15:36:57
【问题描述】:

这是我的代码:

#include <Wire.h>
#include <I2Cdev.h>
#include <HMC5883L.h>
#include <MPU6050.h>

#include "Arduino.h"
void setup();
void loop();

MPU6050 accelgyro;
HMC5883L mag;

int16_t mx, my, mz;

void setup() {
    Wire.begin();
    accelgyro.initialize();
    accelgyro.setI2CBypassEnabled(true);
    Serial.begin(9600);

    // initialize device
    Serial.println("Initializing I2C devices...");
    mag.initialize();

    // verify connection
    Serial.println("Testing device connections...");
    Serial.println(mag.testConnection() ? "HMC5883L connection successful" : "HMC5883L connection failed");

}

void loop() {
    mag.getHeading(&mx, &my, &mz);

    Serial.print("mag:\t");
    Serial.print(mx); Serial.print("\t");
    Serial.print(my); Serial.print("\t");
    Serial.print(mz); Serial.print("\t");

    float heading = atan2(my, mx);
    if(heading < 0)
    heading += 2 * M_PI;
    Serial.print("heading:\t");
    Serial.println(heading * 180/M_PI);

}

它可以在 Arduino IDE 上运行。 这是 Atmel Studio 6 中的警告(2 个未初始化警告和 4 个由 I2Cdev 库生成的警告),没有错误。

warning 5   **'progBuffer' may be used uninitialized in this function [-Wuninitialized]**   D:/Program Files (x86)/Arduino/libraries/MPU6050/MPU6050.cpp    2971    14  HMC
warning 6   **'progBuffer' may be used uninitialized in this function [-Wuninitialized]**   D:/Program Files (x86)/Arduino/libraries/MPU6050/MPU6050.cpp    3076    101 HMC
warning 4   **#warning - Timeout detection (some Wire requests block forever) [-Wcpp]** D:/Program Files (x86)/Arduino/libraries/I2Cdev/I2Cdev.cpp  67  14  HMC
warning 2   **#warning Arduino IDE v1.0.1+ with I2CDEV_BUILTIN_FASTWIRE implementation is recommended. [-Wcpp]**    D:/Program Files (x86)/Arduino/libraries/I2Cdev/I2Cdev.cpp  65  14  HMC
warning 3   **#warning This I2Cdev implementation does not support: [-Wcpp]**   D:/Program Files (x86)/Arduino/libraries/I2Cdev/I2Cdev.cpp  66  14  HMC
warning 1   **#warning Using current Arduino IDE with Wire library is functionally limiting. [-Wcpp]**  D:/Program Files (x86)/Arduino/libraries/I2Cdev/I2Cdev.cpp  64  14  HMC

这是输出:

collect2: ld returned 1 exit status
make: *** [HMC.elf] Error 1

谁能帮帮我?非常感谢!!

【问题讨论】:

    标签: gcc initialization atmelstudio mpu


    【解决方案1】:

    从警告中,我假设编译器告诉您某些代码/库在您使用的环境中不可用。所以发生的情况是代码编译正常,但链接器失败,因为它找不到相应的静态库。

    所以如果it can work on Arduino IDE,请坚持下去(除非有什么原因你没有告诉我们)。

    您确定没有更多的链接器错误吗?也许这些记录在某个文件中,检查一下。

    【讨论】:

    • 您好,感谢您的回答!实际上唯一的问题是这个错误1,它没有给我任何其他问题或错误。我之所以要使用AS6是因为我需要在atMega 2560上使用freeRTOS,而我没有找到适合Arduino IDE的好版本,你有什么好的想法吗?非常感谢!
    • 不超过我在回答中发布的内容:为了追查问题,您需要找到链接器错误消息。没有这个,我看不出你的问题怎么回答。
    猜你喜欢
    • 2018-09-07
    • 2015-10-29
    • 1970-01-01
    • 2011-04-08
    • 1970-01-01
    • 2020-05-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多