MPU9250配置例程_第1页
MPU9250配置例程_第2页
MPU9250配置例程_第3页
MPU9250配置例程_第4页
MPU9250配置例程_第5页
已阅读5页,还剩8页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、MPU9250的SPI读取例程,由一个忘了什么来源的程序改成,只需要改SPI和CS的宏定义,加上延时函数,就可以使用,亲测可用,发上来给那些找不到例程的朋友,配置后的状态在另一个文档里,名为 MPU9250刷新速率和单位,程序如有侵权等,请联系 /MPU9250 的陀螺仪单位转换系数:/#define MPU9250_Gyro_FS1000 32.8/MPU9250 的加速度计单位转换系数:/#define Acc_FS2g 1671.84 /to m/ss/MPU9250 磁力计的单位转换系数:/#define Mega_FS16BIT_Ga 6.83/*1uT-10mGass*/stati

2、c s16 MPU9250_AK8963_ASA3 = 0, 0, 0;/1T=10000GASS 1uT=0.01GASS/ 定义 MPU9250 内部地址/Register Map for Gyroscope and Accelerometer#define MPU9250_SELF_TEST_X_GYRO#define MPU9250_SELF_TEST_Y_GYRO#define MPU9250_SELF_TEST_Z_GYRO#define MPU9250_SELF_TEST_X_ACCEL#define MPU9250_SELF_TEST_Y_ACCEL#define MPU925

3、0_SELF_TEST_Z_ACCEL#define MPU9250_XG_OFFSET_H#define MPU9250_XG_OFFSET_L#define MPU9250_YG_OFFSET_H#define MPU9250_YG_OFFSET_L#define MPU9250_ZG_OFFSET_H#define MPU9250_ZG_OFFSET_L#define MPU9250_SMPLRT_DIV#define MPU9250_CONFIG#define MPU9250_GYRO_CONFIG0x18(不自检,2000deg/s)#define MPU9250_ACCEL_CON

4、FIG频率,典型值:0x01(不自本叙,2G, 5Hz)#define MPU9250_ACCEL_CONFIG2#define MPU9250_LP_ACCEL_ODR#define MPU9250_WOM_THR#define MPU9250_FIFO_EN#define MPU9250_I2C_MST_CTRL#define MPU9250_I2C_SLV0_ADDR#define MPU9250_I2C_SLV0_REG#define MPU9250_I2C_SLV0_CTRL#define MPU9250I2CSLV1ADDR0x000x010x020x0D0x0E0x0F0x130

5、x140x150x160x170x180x19陀螺仪采样率,典型值:0x07(125Hz)0x1A / 低通滤波频率,典型值: 0x06(5Hz)0x1B/ 陀螺仪自检及测量范围,典型值:0x1C/ 加速计自检、测量范围及高通滤波0x1D0x1E0x1F0x230x240x250x260x270x28#define MPU9250_I2C_SLV1_REG0x29#define MPU9250_I2C_SLV1_CTRL0x2A#define MPU9250_I2C_SLV2_ADDR0x2B#define MPU9250_I2C_SLV2_REG0x2C#define MPU9250_I2C

6、_SLV2_CTRL0x2D#define MPU9250_I2C_SLV3_ADDR0x2E#define MPU9250_I2C_SLV3_REG0x2F#define MPU9250_I2C_SLV3_CTRL0x30#define MPU9250_I2C_SLV4_ADDR0x31#define MPU9250_I2C_SLV4_REG0x32#define MPU9250_I2C_SLV4_DO0x33#define MPU9250_I2C_SLV4_CTRL0x34#define MPU9250_I2C_SLV4_DI0x35#define MPU9250_I2C_MST_STAT

7、US0x36#define MPU9250_INT_PIN_CFG0x37#define MPU9250_INT_ENABLE0x38#define MPU9250_INT_STATUS0x3A#define MPU9250_ACCEL_XOUT_H0x3B#define MPU9250_ACCEL_XOUT_L0x3C#define MPU9250_ACCEL_YOUT_H0x3D#define MPU9250_ACCEL_YOUT_L0x3E#define MPU9250_ACCEL_ZOUT_H0x3F#define MPU9250_ACCEL_ZOUT_L0x40#define MPU

8、9250_TEMP_OUT_H0x41#define MPU9250_TEMP_OUT_L0x42#define MPU9250_GYRO_XOUT_H0x43#define MPU9250_GYRO_XOUT_L0x44#define MPU9250_GYRO_YOUT_H0x45#define MPU9250_GYRO_YOUT_L0x46#define MPU9250_GYRO_ZOUT_H0x47#define MPU9250_GYRO_ZOUT_L0x48#define MPU9250_EXT_SENS_DATA_000x49#define MPU9250_EXT_SENS_DATA

9、_010x4A#define MPU9250_EXT_SENS_DATA_020x4B#define MPU9250_EXT_SENS_DATA_030x4C#define MPU9250_EXT_SENS_DATA_040x4D#define MPU9250_EXT_SENS_DATA_050x4E#define MPU9250_EXT_SENS_DATA_060x4F#define MPU9250_EXT_SENS_DATA_070x50#define MPU9250_EXT_SENS_DATA_080x51#define MPU9250_EXT_SENS_DATA_090x52#defi

10、ne MPU9250_EXT_SENS_DATA_100x53#define MPU9250_EXT_SENS_DATA_110x54#define MPU9250_EXT_SENS_DATA_12#define MPU9250_EXT_SENS_DATA_13#define MPU9250_EXT_SENS_DATA_14#define MPU9250_EXT_SENS_DATA_15#define MPU9250_EXT_SENS_DATA_16#define MPU9250_EXT_SENS_DATA_17#define MPU9250_EXT_SENS_DATA_18#define M

11、PU9250_EXT_SENS_DATA_19#define MPU9250_EXT_SENS_DATA_20#define MPU9250_EXT_SENS_DATA_21#define MPU9250_EXT_SENS_DATA_22#define MPU9250_EXT_SENS_DATA_23#define MPU9250_I2C_SLV0_DO#define MPU9250_I2C_SLV1_DO#define MPU9250_I2C_SLV2_DO#define MPU9250_I2C_SLV3_DO#define MPU9250_I2C_MST_DELAY_CTRL#define

12、 MPU9250_SIGNAL_PATH_RESET#define MPU9250_MOT_DETECT_CTRL#define MPU9250_USER_CTRL#define MPU9250_PWR_MGMT_1#define MPU9250_PWR_MGMT_2#define MPU9250_FIFO_COUNTH#define MPU9250_FIFO_COUNTL#define MPU9250_FIFO_R_W#define MPU9250_WHO_AM_I#define MPU9250_XA_OFFSET_H#define MPU9250_XA_OFFSET_L#define MP

13、U9250_YA_OFFSET_H#define MPU9250_YA_OFFSET_L0x550x560x570x580x590x5A0x5B0x5C0x5D0x5E0x5F0x600x630x640x650x660x670x680x690x6A0x6B /电源管理,典型值:0x00(正常启用)0x6C0x720x730x740x75 /ID寄存器(默认数值0x71,只读)0x770x780x7A0x7B#define MPU9250_ZA_OFFSET_H0x7D#define MPU9250_ZA_OFFSET_L0x7E/#define MPU9250_I2C_READ 0x80/Ma

14、gnetometer register maps#define MPU9250_AK8963_WIA0x00#define MPU9250_AK8963_INFO0x01#define MPU9250_AK8963_ST10x02#define MPU9250AK8963XOUTL0x03#define MPU9250_AK8963_XOUT_H#define MPU9250_AK8963_YOUT_L#define MPU9250_AK8963_YOUT_H#define MPU9250_AK8963_ZOUT_L#define MPU9250_AK8963_ZOUT_H#define MP

15、U9250_AK8963_ST2#define MPU9250_AK8963_CNTL#define MPU9250_AK8963_CNTL2#define MPU9250_AK8963_RSV<MPU9250_AK8963_CNTL2>#define MPU9250_AK8963_ASTC#define MPU9250_AK8963_TS1#define MPU9250_AK8963_TS2#define MPU9250_AK8963_I2CDIS#define MPU9250_AK8963_ASAX#define MPU9250_AK8963_ASAY#define MPU92

16、50AK8963ASAZ0x040x050x060x070x080x090x0A0x0B0x0B /DO NOT ACCESS0x0C0x0D /DO NOT ACCESS0x0E /DO NOT ACCESS0x0F0x100x110x12#define MPU9250_AK8963_I2C_ADDR 0x0C#define MPU9250_AK8963_POWER_DOWN 0x10#define MPU9250_AK8963_FUSE_ROM_ACCESS 0x1F#define MPU9250_AK8963_SINGLE_MEASUREMENT 0x11#define MPU9250_

17、AK8963_CONTINUOUS_MEASUREMENT 0x16 /MODE2 刷新速率 100Hz#define MPU9250_AK8963_DATA_READY(0x01)#define MPU9250_AK8963_DATA_OVERRUN (0x02)#define MPU9250_AK8963_OVERFLOW(0x80)#define MPU9250_AK8963_DATA_ERROR(0x40)#define MPU9250_AK8963_CNTL2_SRST 0x01/#define MPU9250_I2C_SLV4_EN 0x80#define MPU9250_I2C_

18、SLV4_DONE 0x40#define MPU9250_I2C_SLV4_NACK 0x10 /#define MPU9250_I2C_IF_DIS (0x10)#define MPU9250_I2C_MST_EN (0x20)#define MPU9250_FIFO_RST (0x04)#define MPU9250_FIFO_ENABLE (0x40)/#define MPU9250_RESET 0x80#define MPU9250_CLOCK_MASK 0xF8#define MPU9250_CLOCK_INTERNAL 0x00#define MPU9250_CLOCK_PLL

19、0x01#define MPU9250_CLOCK_PLLGYROZ 0x03#define MPU9250_FS_SEL_MASK 0xE7#define MPU9250_SLEEP_MASK 0x40/#define MPU9250_XYZ_GYRO 0xC7#define MPU9250_XYZ_ACCEL 0xF8/#define MPU9250_RAW_RDY_EN (0x01)#define MPU9250_RAW_DATA_RDY_INT (0x01)#define MPU9250_FIFO_OVERFLOW (0x10) /#define MPU9250_INT_ANYRD_2

20、CLEAR (0x10)#define MPU9250_LATCH_INT_EN (0x20)/#define MPU9250_MAX_FIFO (1024)#define MPU9250_FIFO_SIZE_1024 (0x40)#define MPU9250_FIFO_SIZE_2048 (0x80)#define MPU9250_FIFO_SIZE_4096 (0xC0)#define MPU9250_TEMP_OUT (0x80)#define MPU9250_GYRO_XOUT (0x40)#define MPU9250_GYRO_YOUT (0x20)#define MPU9250

21、_GYRO_ZOUT (0x10)#define MPU9250_ACCEL (0x08)/#define SMPLRT_DIV 0#define MPU9250_SPIx_ADDR 0x00/*/#define MPU9250_SPI_ReadWriteByte(x) SPI1_ReadWriteByte(x)#define MPU9250_CS_LGPIO_ResetBits(GPIOA,GPIO_Pin_4)#define MPU9250_CS_HGPIO_SetBits(GPIOA,GPIO_Pin_4)/*/enum MPU9250_GYRO_DLPFMPU9250_GYRO_DLP

22、F_250HZ = 0,MPU9250_GYRO_DLPF_184HZ,MPU9250_GYRO_DLPF_92HZ,MPU9250_GYRO_DLPF_41HZ,MPU9250_GYRO_DLPF_20HZ,MPU9250_GYRO_DLPF_10HZ,MPU9250_GYRO_DLPF_5HZ, MPU9250_GYRO_DLPF_3600HZ, NUM_GYRO_DLPF;enum MPU9250_GYRO_FSRMPU9250_FSR_250DPS = 0,MPU9250_FSR_500DPS,MPU9250_FSR_1000DPS,MPU9250_FSR_2000DPS, MPU92

23、50_NUM_GYRO_FSR ;enum MPU9250_ACCEL_DLPFMPU9250_ACCEL_DLPF_460HZ = 0, MPU9250_ACCEL_DLPF_184HZ, MPU9250_ACCEL_DLPF_92HZ,MPU9250_ACCEL_DLPF_41HZ,MPU9250_ACCEL_DLPF_20HZ,MPU9250_ACCEL_DLPF_10HZ,MPU9250_ACCEL_DLPF_5HZ, MPU9250_ACCEL_DLPF_460HZ2, MPU9250_NUM_ACCEL_DLPF ;enum MPU9250_ACCEL_FSRMPU9250_FSR

24、_2G = 0,MPU9250_FSR_4G,MPU9250_FSR_8G,MPU9250_FSR_16G,MPU9250_NUM_ACCEL_FSR;enum MPU9250_CLKMPU9250_CLK_INTERNAL = 0,MPU9250_CLK_PLL,MPU9250_NUM_CLK;/MPU9250_SPI_WriteMPU9250的SPI写一个字节函数/reg_addr 寄存器地址data 要写入的数据void MPU9250_SPI_Write(u8 reg_addr, u8 data) MPU9250_CS_L;MPU9250_SPI_ReadWriteByte(reg_a

25、ddr);MPU9250_SPI_ReadWriteByte(data);MPU9250_CS_H;/MPU9250_SPI_Writes/MPU9250的SPI写多个字节函数/ reg_addr 寄存器地址len 字节数*data 要写入的数据存放的数组void MPU9250_SPI_Writes(u8 reg_addr, u8 len, u8* data) u32 i = 0;MPU9250_CS_L;MPU9250_SPI_ReadWriteByte(reg_addr); while(i < len) MPU9250_SPI_ReadWriteByte(datai+);MPU92

26、50_CS_H;/MPU9250_SPI_Read/MPU9250 的读一个字节函数/reg_addr 寄存器地址u8 MPU9250_SPI_Read(u8 reg_addr) u8 dummy = 0;u8 data = 0;MPU9250_CS_L;MPU9250_SPI_ReadWriteByte(0x80 | reg_addr);data = MPU9250_SPI_ReadWriteByte(dummy);MPU9250_CS_H;return data;/MPU9250_SPI_Reads/MPU9250 的读多个字节函数/reg_addr 寄存器地址len 读取字节数*data

27、 数据存放数组void MPU9250_SPI_Reads(u8 reg_addr, u8 len, u8* data) u32 i = 0;u8 dummy = 0x00;MPU9250_CS_L;MPU9250_SPI_ReadWriteByte(MPU9250_I2C_READ | reg_addr); while(i < len)datai+ = MPU9250_SPI_ReadWriteByte(dummy);MPU9250_CS_H;/ 以下四个函数,作用是设置磁力计int MPU9250_AK8963_SPI_Read(u8 akm_addr, u8 reg_addr, u

28、8* data)u8 status = 0;u32 timeout = 0;MPU9250_SPI_Writes(MPU9250_I2C_SLV4_REG, 1, &reg_addr); delay_ms(1);reg_addr = akm_addr | MPU9250_I2C_READ;MPU9250_SPI_Writes(MPU9250_I2C_SLV4_ADDR, 1, &reg_addr); delay_ms(1);reg_addr = MPU9250_I2C_SLV4_EN;MPU9250_SPI_Writes(MPU9250_I2C_SLV4_CTRL, 1, &a

29、mp;reg_addr); delay_ms(1);doif (timeout+ > 50)return -2;MPU9250_SPI_Reads(MPU9250_I2C_MST_STATUS, 1, &status); delay_ms(1);while (status & MPU9250_I2C_SLV4_DONE) = 0);MPU9250_SPI_Reads(MPU9250_I2C_SLV4_DI, 1, data); return 0;int MPU9250_AK8963_SPI_Reads(u8 akm_addr, u8 reg_addr, u8 len, u

30、8* data) u8 index = 0;u8 status = 0;u32 timeout = 0;u8 tmp = 0;tmp = akm_addr | MPU9250_I2C_READ;MPU9250_SPI_Writes(MPU9250_I2C_SLV4_ADDR, 1, &tmp);delay_ms(1);while(index < len)tmp = reg_addr + index;MPU9250_SPI_Writes(MPU9250_I2C_SLV4_REG, 1, &tmp); delay_ms(1);tmp = MPU9250_I2C_SLV4_EN

31、;MPU9250_SPI_Writes(MPU9250_I2C_SLV4_CTRL, 1, &tmp); delay_ms(1);do if (timeout+ > 50)return -2;MPU9250_SPI_Reads(MPU9250_I2C_MST_STATUS, 1, &status); delay_ms(2); while (status & MPU9250_I2C_SLV4_DONE) = 0);MPU9250_SPI_Reads( MPU9250_I2C_SLV4_DI, 1, data + index);delay_ms(1);index+;r

32、eturn 0;int MPU9250_AK8963_SPI_Write(u8 akm_addr, u8 reg_addr, u8 data)u32 timeout = 0;uint8_t status = 0;u8 tmp = 0;tmp = akm_addr;MPU9250_SPI_Writes(MPU9250_I2C_SLV4_ADDR, 1, &tmp); delay_ms(1);tmp = reg_addr;MPU9250_SPI_Writes(MPU9250_I2C_SLV4_REG, 1, &tmp);delay_ms(1);tmp = data;MPU9250_

33、SPI_Writes(MPU9250_I2C_SLV4_DO, 1, &tmp); delay_ms(1);tmp = MPU9250_I2C_SLV4_EN;MPU9250_SPI_Writes(MPU9250_I2C_SLV4_CTRL, 1, &tmp);delay_ms(1);do if (timeout+ > 50) return -2;MPU9250_SPI_Reads(MPU9250_I2C_MST_STATUS, 1, &status); delay_ms(1); while (status & MPU9250_I2C_SLV4_DONE)

34、 = 0);if (status & MPU9250_I2C_SLV4_NACK)return -3;return 0;int MPU9250_AK8963_SPI_Writes(u8 akm_addr, u8 reg_addr, u8 len, u8* data)u32 timeout = 0;uint8_t status = 0;u8 tmp = 0;u8 index = 0;tmp = akm_addr;MPU9250_SPI_Writes(MPU9250_I2C_SLV4_ADDR, 1, &tmp);delay_ms(1);while(index < len)t

35、mp = reg_addr + index;MPU9250_SPI_Writes(MPU9250_I2C_SLV4_REG, 1, &tmp);delay_ms(1);MPU9250_SPI_Writes(MPU9250_I2C_SLV4_DO, 1, data + index); delay_ms(1);tmp = MPU9250_I2C_SLV4_EN;MPU9250_SPI_Writes(MPU9250_I2C_SLV4_CTRL, 1, &tmp);delay_ms(1);do if (timeout+ > 50)return -2;MPU9250_SPI_Rea

36、ds(MPU9250_I2C_MST_STATUS, 1, &status); delay_ms(1); while (status & MPU9250_I2C_SLV4_DONE) = 0);if (status & MPU9250_I2C_SLV4_NACK)return -3;index+;return 0;/ MPU9250_Get9AxisRawData/MPU9250 获取九轴数据/ *accel 加速计数据*gyro 陀螺仪数据*mag 磁力计数据数组 数组大小应为3 x y z void MPU9250_Get9AxisRawData(short *ac

37、cel, short * gyro, short * mag) u8 data22;MPU9250_SPI_Reads(MPU9250_ACCEL_XOUT_H, 22, data);accel0 = (data0 << 8) | data1;accel1 = (data2 << 8) | data3;accel2 = (data4 << 8) | data5;gyro0 = (data8 << 8)| data9;gyro1 = (data10 << 8) | data11;gyro2 = (data12 << 8) |

38、 data13;if (!(data14& MPU9250_AK8963_DATA_READY) |(data14&MPU9250_AK8963_DATA_OVERRUN) return;if (data21 & MPU9250_AK8963_OVERFLOW) return;mag0 = (data16 << 8) | data15;mag1 = (data18 << 8) | data17;mag2 = (data20 << 8) | data19;/ned x,y,zmag0 = (long)mag0 * MPU9250_AK8

39、963_ASA0) >> 8;mag1 = (long)mag1 * MPU9250_AK8963_ASA1) >> 8;mag2 = (long)mag2 * MPU9250_AK8963_ASA2) >> 8;/MPU9250_GetDeviceID/MPU9250 获取 IDu8 MPU9250_GetDeviceID(void)return MPU9250_SPI_Read(MPU9250_WHO_AM_I);/MPU9250_Init/MPU9250 初始化void MPU9250_Init(void)u8 data = 0, state = 0;

40、uint8_t response3 = 0, 0, 0;/MPU9250 ResetMPU9250_SPI_Write(MPU9250_PWR_MGMT_1, MPU9250_RESET); delay_ms(100);/MPU9250 Set Clock SourceMPU9250_SPI_Write(MPU9250_PWR_MGMT_1, MPU9250_CLOCK_PLLGYROZ);delay_ms(1);/MPU9250 Set Interrupt/Interrupt status is cleared if any read operation is performed.MPU92

41、50_SPI_Write(MPU9250_INT_PIN_CFG, MPU9250_INT_ANYRD_2CLEAR);delay_ms(1);MPU9250_SPI_Write(MPU9250_INT_ENABLE, DISABLE);delay_ms(1);/MPU9250 Set Sensors/Enable all xyzMPU9250_SPI_Write(MPU9250_PWR_MGMT_2,MPU9250_XYZ_GYRO &MPU9250_XYZ_ACCEL);delay_ms(1);/MPU9250 Set SampleRate/SAMPLE_RATE = Intern

42、al_Sample_Rate / (1 + SMPLRT_DIV) MPU9250_SPI_Write(MPU9250_SMPLRT_DIV, SMPLRT_DIV);delay_ms(1);/MPU9250 Set Full Scale Gyro Range/Fchoice_b1:0 = 00 enable DLPFMPU9250_SPI_Write(MPU9250_GYRO_CONFIG, (MPU9250_FSR_1000DPS << 3); delay_ms(1);/MPU9250 Set Full Scale Accel Range PS:2GMPU9250_SPI_Wr

43、ite(MPU9250_ACCEL_CONFIG, (MPU9250_FSR_2G << 3); delay_ms(1);/MPU9250 Set Accel DLPFdata = MPU9250_SPI_Read(MPU9250_ACCEL_CONFIG2);data |= MPU9250_ACCEL_DLPF_41HZ;delay_ms(1);MPU9250_SPI_Write(MPU9250_ACCEL_CONFIG2, data);delay_ms(1);/MPU9250 Set Gyro DLPFMPU9250_SPI_Write(MPU9250_CONFIG, MPU9

44、250_GYRO_DLPF_41HZ);delay_ms(1);/MPU9250 Set SPI Modestate = MPU9250_SPI_Read(MPU9250_USER_CTRL);delay_ms(1);/Reset I2C Slave module and put the serial interface in SPI mode only. This bit auto clears after one clock cycle.MPU9250_SPI_Write(MPU9250_USER_CTRL, state | MPU9250_I2C_IF_DIS); delay_ms(1)

45、;state = MPU9250_SPI_Read(MPU9250_USER_CTRL);delay_ms(1);/Enable the I2C Master I/F module; pins ES_DA and ES_SCL are isolated from pins SDA/SDI and SCL/ SCLK.MPU9250_SPI_Write(MPU9250_USER_CTRL, state | MPU9250_I2C_MST_EN); delay_ms(1);/AK8963 Setup/reset AK8963MPU9250_AK8963_SPI_Write(MPU9250_AK8963_I2C_ADDR,MPU9250_AK8963_CNTL2,MPU9250_AK8963_CNTL2_SRST);delay_ms(2);/BIT: Output bit setting 4800uT/ "1": 16-bit outputMPU9250_AK8963_SPI_Write(MPU9250_AK8963_I2C_ADDR,MPU9250_AK8963_CNTL,MPU9250_AK8963_POWER_DOWN);delay_ms(1);/Fuse ROM access modeMPU

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论