遇到问题了求助大家~关于L6218E 头文件也添加了~

2019-07-20 21:24发布

.FlashObjoutput.axf: Error: L6218E: Undefined symbol acc (referred from mpu9250.o).
.FlashObjoutput.axf: Error: L6218E: Undefined symbol gyr (referred from mpu9250.o).
.FlashObjoutput.axf: Error: L6218E: Undefined symbol mag (referred from mpu9250.o).
.FlashObjoutput.axf: Error: L6218E: Undefined symbol tmp (referred from mpu9250.o).
Not enough information to list image symbols.
Finished: 1 information, 0 warning and 4 error messages.
".FlashObjoutput.axf" - 4 Error(s), 4 Warning(s).
Target not created.
Build Time Elapsed:  00:00:35[mw_shl_code=c,true]#ifndef _MPU9250_H_
#define _MPU9250_H_
#include "stm32f4xx.h"
#include "arm_math.h"
#include "spi.h"

#define G 9.86
#define M 0.27
#define PI 3.14159265358979f
//10000GS(¸ßË1)μèóú1T(ìØË1à-)£¬μØ′Å3¡Ô¼0.6Gs
//5883êä3ö-2048-2047£¬3¬á¿3ìoó£¬êä3öÎa-4096
#define MPU_ACCE_K (8 * G / 32768.0)                        //μ¥λ»»Ë㣬½«LSB»ˉÎam*s^-2£¬Ç°ÃæμÄ"2"Dè¸ù¾Yá¿3ìDT¸Ä
#define MPU_GYRO_K (1000 / 32768.0 * PI / 180)        //μ¥λ»»Ë㣬½«LSB»ˉÎarad/s
#define MPU_MAGN_K (49.12 / 32760.0)                        //μ¥λ»»Ë㣬½«LSB»ˉÎaGs
#define MPU_TEMP_K (0.002995177763f)                        //degC/LSB

#define MPU_GYRO_ZERO_CALI_FACT 512                                //íóÂYòÇáãμãD£Õy2éÑù′Îêy£¬512′ÎÔ¼600ms£¬Dè±£3ÖíóÂYòǾ2Ö1
#define MPU_CORRECTION_FLASH     0x080FF000                //′æ′¢D£Õyêy¾YμÄFLASHμØÖ·£¬SIZE=6*3*4×Ö½ú
/*
|     |      ACCELEROMETER      |        GYROSCOPE        |
| LPF | BandW | Delay  | Sample | BandW | Delay  | Sample |
+-----+-------+--------+--------+-------+--------+--------+
|  0  | 260Hz |    0ms |  1kHz  | 256Hz | 0.98ms |  8kHz  |
|  1  | 184Hz |  2.0ms |  1kHz  | 188Hz |  1.9ms |  1kHz  |
|  2  |  94Hz |  3.0ms |  1kHz  |  98Hz |  2.8ms |  1kHz  |
|  3  |  44Hz |  4.9ms |  1kHz  |  42Hz |  4.8ms |  1kHz  |
|  4  |  21Hz |  8.5ms |  1kHz  |  20Hz |  8.3ms |  1kHz  |
|  5  |  10Hz | 13.8ms |  1kHz  |  10Hz | 13.4ms |  1kHz  |
|  6  |   5Hz | 19.0ms |  1kHz  |   5Hz | 18.6ms |  1kHz  |
|  7  | -- Reserved -- |  1kHz  | -- Reserved -- |  8kHz  |
*/
typedef enum {
        MPU_GYRO_LPS_250HZ   = 0x00,
        MPU_GYRO_LPS_184HZ   = 0x01,
        MPU_GYRO_LPS_92HZ    = 0x02,
        MPU_GYRO_LPS_41HZ    = 0x03,
        MPU_GYRO_LPS_20HZ    = 0x04,
        MPU_GYRO_LPS_10HZ    = 0x05,
        MPU_GYRO_LPS_5HZ     = 0x06,
        MPU_GYRO_LPS_DISABLE = 0x07,
} MPU_GYRO_LPF_TypeDef;

typedef enum {
        MPU_ACCE_LPS_460HZ   = 0x00,
        MPU_ACCE_LPS_184HZ   = 0x01,
        MPU_ACCE_LPS_92HZ    = 0x02,
        MPU_ACCE_LPS_41HZ    = 0x03,
        MPU_ACCE_LPS_20HZ    = 0x04,
        MPU_ACCE_LPS_10HZ    = 0x05,
        MPU_ACCE_LPS_5HZ     = 0x06,
        MPU_ACCE_LPS_DISABLE = 0x08,
} MPU_ACCE_LPF_TypeDef;

typedef enum {
        MPU_GYRO_FS_250  = 0x00,
        MPU_GYRO_FS_500  = 0x08,
        MPU_GYRO_FS_1000 = 0x10,
        MPU_GYRO_FS_2000 = 0x18,
} MPU_GYRO_FS_TypeDef;

typedef enum {
        MPU_ACCE_FS_2G  = 0x00,
        MPU_ACCE_FS_4G  = 0x08,
        MPU_ACCE_FS_8G  = 0x10,
        MPU_ACCE_FS_16G = 0x18,
} MPU_ACCE_FS_TypeDef;

typedef enum {
        MPU_READ_ACCE = 1 << 0,
        MPU_READ_TEMP = 1 << 1,
        MPU_READ_GYRO = 1 << 2,
        MPU_READ_MAGN = 1 << 3,
        MPU_READ_ALL  = 0x0F,
} MPU_READ_TypeDef;

typedef enum {
        MPU_CORRECTION_PX = 0x01,
        MPU_CORRECTION_NX = 0x02,
        MPU_CORRECTION_PY = 0x03,
        MPU_CORRECTION_NY = 0x04,
        MPU_CORRECTION_PZ = 0x05,
        MPU_CORRECTION_NZ = 0x06,
        MPU_CORRECTION_GYRO = 0x07,
        MPU_CORRECTION_CALCX = 0x08,
        MPU_CORRECTION_CALCY = 0x09,
        MPU_CORRECTION_CALCZ = 0x0A,
        MPU_CORRECTION_SAVE = 0x0B,
        MPU_CORRECTION_CIRCLE = 0x0C,
        MPU_CORRECTION_CIRCLEZ = 0x0D,
} MPU_CORRECTION_TypeDef;

/* ---- MPU6500 Reg In MPU9250 ---------------------------------------------- */

#define MPU6500_I2C_ADDR            ((u8)0xD0)
#define MPU6500_DEV_ID              ((u8)0x71)  // In MPU9250

#define MPU6500_SELF_TEST_XG        ((u8)0x00)
#define MPU6500_SELF_TEST_YG        ((u8)0x01)
#define MPU6500_SELF_TEST_ZG        ((u8)0x02)
#define MPU6500_SELF_TEST_XA        ((u8)0x0D)
#define MPU6500_SELF_TEST_YA        ((u8)0x0E)
#define MPU6500_SELF_TEST_ZA        ((u8)0x0F)
#define MPU6500_XG_OFFSET_H         ((u8)0x13)
#define MPU6500_XG_OFFSET_L         ((u8)0x14)
#define MPU6500_YG_OFFSET_H         ((u8)0x15)
#define MPU6500_YG_OFFSET_L         ((u8)0x16)
#define MPU6500_ZG_OFFSET_H         ((u8)0x17)
#define MPU6500_ZG_OFFSET_L         ((u8)0x18)
#define MPU6500_SMPLRT_DIV          ((u8)0x19)
#define MPU6500_CONFIG              ((u8)0x1A)
#define MPU6500_GYRO_CONFIG         ((u8)0x1B)
#define MPU6500_ACCEL_CONFIG        ((u8)0x1C)
#define MPU6500_ACCEL_CONFIG_2      ((u8)0x1D)
#define MPU6500_LP_ACCEL_ODR        ((u8)0x1E)
#define MPU6500_MOT_THR             ((u8)0x1F)
#define MPU6500_FIFO_EN             ((u8)0x23)
#define MPU6500_I2C_MST_CTRL        ((u8)0x24)
#define MPU6500_I2C_SLV0_ADDR       ((u8)0x25)
#define MPU6500_I2C_SLV0_REG        ((u8)0x26)
#define MPU6500_I2C_SLV0_CTRL       ((u8)0x27)
#define MPU6500_I2C_SLV1_ADDR       ((u8)0x28)
#define MPU6500_I2C_SLV1_REG        ((u8)0x29)
#define MPU6500_I2C_SLV1_CTRL       ((u8)0x2A)
#define MPU6500_I2C_SLV2_ADDR       ((u8)0x2B)
#define MPU6500_I2C_SLV2_REG        ((u8)0x2C)
#define MPU6500_I2C_SLV2_CTRL       ((u8)0x2D)
#define MPU6500_I2C_SLV3_ADDR       ((u8)0x2E)
#define MPU6500_I2C_SLV3_REG        ((u8)0x2F)
#define MPU6500_I2C_SLV3_CTRL       ((u8)0x30)
#define MPU6500_I2C_SLV4_ADDR       ((u8)0x31)
#define MPU6500_I2C_SLV4_REG        ((u8)0x32)
#define MPU6500_I2C_SLV4_DO         ((u8)0x33)
#define MPU6500_I2C_SLV4_CTRL       ((u8)0x34)
#define MPU6500_I2C_SLV4_DI         ((u8)0x35)
#define MPU6500_I2C_MST_STATUS      ((u8)0x36)
#define MPU6500_INT_PIN_CFG         ((u8)0x37)
#define MPU6500_INT_ENABLE          ((u8)0x38)
#define MPU6500_INT_STATUS          ((u8)0x3A)
#define MPU6500_ACCEL_XOUT_H        ((u8)0x3B)
#define MPU6500_ACCEL_XOUT_L        ((u8)0x3C)
#define MPU6500_ACCEL_YOUT_H        ((u8)0x3D)
#define MPU6500_ACCEL_YOUT_L        ((u8)0x3E)
#define MPU6500_ACCEL_ZOUT_H        ((u8)0x3F)
#define MPU6500_ACCEL_ZOUT_L        ((u8)0x40)
#define MPU6500_TEMP_OUT_H          ((u8)0x41)
#define MPU6500_TEMP_OUT_L          ((u8)0x42)
#define MPU6500_GYRO_XOUT_H         ((u8)0x43)
#define MPU6500_GYRO_XOUT_L         ((u8)0x44)
#define MPU6500_GYRO_YOUT_H         ((u8)0x45)
#define MPU6500_GYRO_YOUT_L         ((u8)0x46)
#define MPU6500_GYRO_ZOUT_H         ((u8)0x47)
#define MPU6500_GYRO_ZOUT_L         ((u8)0x48)
#define MPU6500_EXT_SENS_DATA_00    ((u8)0x49)
#define MPU6500_EXT_SENS_DATA_01    ((u8)0x4A)
#define MPU6500_EXT_SENS_DATA_02    ((u8)0x4B)
#define MPU6500_EXT_SENS_DATA_03    ((u8)0x4C)
#define MPU6500_EXT_SENS_DATA_04    ((u8)0x4D)
#define MPU6500_EXT_SENS_DATA_05    ((u8)0x4E)
#define MPU6500_EXT_SENS_DATA_06    ((u8)0x4F)
#define MPU6500_EXT_SENS_DATA_07    ((u8)0x50)
#define MPU6500_EXT_SENS_DATA_08    ((u8)0x51)
#define MPU6500_EXT_SENS_DATA_09    ((u8)0x52)
#define MPU6500_EXT_SENS_DATA_10    ((u8)0x53)
#define MPU6500_EXT_SENS_DATA_11    ((u8)0x54)
#define MPU6500_EXT_SENS_DATA_12    ((u8)0x55)
#define MPU6500_EXT_SENS_DATA_13    ((u8)0x56)
#define MPU6500_EXT_SENS_DATA_14    ((u8)0x57)
#define MPU6500_EXT_SENS_DATA_15    ((u8)0x58)
#define MPU6500_EXT_SENS_DATA_16    ((u8)0x59)
#define MPU6500_EXT_SENS_DATA_17    ((u8)0x5A)
#define MPU6500_EXT_SENS_DATA_18    ((u8)0x5B)
#define MPU6500_EXT_SENS_DATA_19    ((u8)0x5C)
#define MPU6500_EXT_SENS_DATA_20    ((u8)0x5D)
#define MPU6500_EXT_SENS_DATA_21    ((u8)0x5E)
#define MPU6500_EXT_SENS_DATA_22    ((u8)0x5F)
#define MPU6500_EXT_SENS_DATA_23    ((u8)0x60)
#define MPU6500_I2C_SLV0_DO         ((u8)0x63)
#define MPU6500_I2C_SLV1_DO         ((u8)0x64)
#define MPU6500_I2C_SLV2_DO         ((u8)0x65)
#define MPU6500_I2C_SLV3_DO         ((u8)0x66)
#define MPU6500_I2C_MST_DELAY_CTRL  ((u8)0x67)
#define MPU6500_SIGNAL_PATH_RESET   ((u8)0x68)
#define MPU6500_MOT_DETECT_CTRL     ((u8)0x69)
#define MPU6500_USER_CTRL           ((u8)0x6A)
#define MPU6500_PWR_MGMT_1          ((u8)0x6B)
#define MPU6500_PWR_MGMT_2          ((u8)0x6C)
#define MPU6500_FIFO_COUNTH         ((u8)0x72)
#define MPU6500_FIFO_COUNTL         ((u8)0x73)
#define MPU6500_FIFO_R_W            ((u8)0x74)
#define MPU6500_WHO_AM_I            ((u8)0x75)        // ID = 0x71 In MPU9250
#define MPU6500_XA_OFFSET_H         ((u8)0x77)
#define MPU6500_XA_OFFSET_L         ((u8)0x78)
#define MPU6500_YA_OFFSET_H         ((u8)0x7A)
#define MPU6500_YA_OFFSET_L         ((u8)0x7B)
#define MPU6500_ZA_OFFSET_H         ((u8)0x7D)
#define MPU6500_ZA_OFFSET_L         ((u8)0x7E)

/* ---- AK8963 Reg In MPU9250 ----------------------------------------------- */

#define AK8963_I2C_ADDR             ((u8)0x0C)
#define AK8963_DEV_ID               ((u8)0x48)

//Read-only Reg
#define AK8963_WIA                  ((u8)0x00)
#define AK8963_INFO                 ((u8)0x01)
#define AK8963_ST1                  ((u8)0x02)
#define AK8963_HXL                  ((u8)0x03)
#define AK8963_HXH                  ((u8)0x04)
#define AK8963_HYL                  ((u8)0x05)
#define AK8963_HYH                  ((u8)0x06)
#define AK8963_HZL                  ((u8)0x07)
#define AK8963_HZH                  ((u8)0x08)
#define AK8963_ST2                  ((u8)0x09)
//Write/Read Reg
#define AK8963_CNTL1                ((u8)0x0A)
#define AK8963_CNTL2                ((u8)0x0B)
#define AK8963_ASTC                 ((u8)0x0C)
#define AK8963_TS1                  ((u8)0x0D)
#define AK8963_TS2                  ((u8)0x0E)
#define AK8963_I2CDIS               ((u8)0x0F)
//Read-only Reg ( ROM )
#define AK8963_ASAX                 ((u8)0x10)
#define AK8963_ASAY                 ((u8)0x11)
#define AK8963_ASAZ                 ((u8)0x12)
#define sample_rate 1000                        //2é&#209;ù&#194;ê
typedef struct MpuCorrection
{
        float acc_offset[3];
        float acc_gain[3];
        float gyr_offset[3];
        float gyr_gain[3];
        float mag_offset[3];
        float mag_gain[3];
} MpuCorrection;
typedef float Quarternion[4];        //w x y z
typedef float Eular[3];                        //r p y


extern signed short mpu_acce[3];
extern signed short mpu_gyro[3];
extern signed short mpu_magn[3];
extern signed short mpu_temp;
extern float acc[3];
extern float gyr[3];
extern float mag[3];
extern float tmp;
extern Eular position_e ;       


extern Quarternion position_q_new;
extern Eular position_e_new;
extern Quarternion position_q_adjust;
void mpu_init(void);
void mpu_get(float *acc, float *gyr, float *mag, float *tem);
void mpu_get_acc(float *acc);
void mpu_get_gyr(float *gyr);
void mpu_get_mag(float *mag);
void mpu_read(MPU_READ_TypeDef mr);
void posit_proc(float *avalf, float *gvalf, float *mvalf);
void mpu_load_correction(void);
void mpu_init_correction(MPU_CORRECTION_TypeDef correct);
void posit_adjust_rst(void);
void posit_adjust(void);
#endif //_MPU9250_H_[/mw_shl_code]
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
10条回答
春夜喜小雨
1楼-- · 2019-07-21 01:10
已经定义了啊
春夜喜小雨
2楼-- · 2019-07-21 05:00
 精彩回答 2  元偷偷看……
龙之谷
3楼-- · 2019-07-21 07:32
1.保证定义
2.保证添加路径
3.保证包含头文件
春夜喜小雨
4楼-- · 2019-07-21 09:57
 精彩回答 2  元偷偷看……
xfcjava3
5楼-- · 2019-07-21 11:39
把你头文件 MPU9250.h  全局变量定义中的extern取消就可以了

你原来头文件的定义如下:
extern float acc[3];
extern float gyr[3];
extern float mag[3];
extern float tmp;

修改为:
float acc[3];
float gyr[3];
float mag[3];
float tmp;

即可!
春夜喜小雨
6楼-- · 2019-07-21 17:28
xfcjava3 发表于 2016-7-7 19:00
把你头文件 MPU9250.h  全局变量定义中的extern取消就可以了

你原来头文件的定义如下:

为什么这样就行了

一周热门 更多>