外设驱动库开发笔记22:ADXL345三轴数字加速度计驱动

55 篇文章 138 订阅
订阅专栏

移动设备的广泛应用增加对移动过程中各种参数的检测需求。ADXL345三轴数字加速度计可以用来检测加速度、进而测量倾斜角度等。在这一篇中,我们将讨论ADXL345三轴数字加速度计驱动程序的设计与实现。

1、功能概述

ADXL345是一款小而薄的超低功耗3轴加速度计,分辨率高(13),测量范围达±16 g。数字输出数据为16位二进制补码格式,可通过SPI(3线或4线)I2C数字接口访问。采用SPI通讯接口时,最大SPI时钟速度为5 MHz,时序方案按照时钟极性(CPOL)= 1、时钟相位(CPHA)= 1执行。采用I2C通讯接口时,ALT ADDRESS引脚处于高电平,器件的7I2C地址是0x1D,随后为R / W位。这转化为0x3A写入,0x3B读取。通过ALT ADDRESS引脚(引脚12)接地,可以选择备用I2C地址0x53(随后为R / W)。这转化为0xA6写入,0xA7读取。引脚定义及封装如下:

ADXL345非常适合移动设备应用。它可以在倾斜检测应用中测量静态重力加速度,还可以测量运动或冲击导致的动态加速度。其高分辨率(3.9 mg/LSB),能够测量不到1.0°的倾斜角度变化。

该器件提供多种特殊检测功能。活动和非活动检测功能通过比较任意轴上的加速度与用户设置的阈值来检测有无运动发生。敲击检测功能可以检测任意方向的单振和双振动作。自由落体检测功能可以检测器件是否正在掉落。这些功能可以独立映射到两个中断输出引脚中的一个。正在申请专利的集成式存储器管理系统采用一个32级先进先出(FIFO)缓冲器,可用于存储数据,从而将主机处理器负荷降至最低,并降低整体系统功耗。

低功耗模式支持基于运动的智能电源管理,从而以极低的功耗进行阈值感测和运动加速度测量。

ADXL345是一款完整的3轴加速度测量系统,可选择的测量范围有±2 g±4 g±8 g±16 g。既能测量运动或冲击导致的动态加速度,也能测量静止加速度,例如重力加速度,使得器件可作为倾斜传感器使用。

2、驱动设计与实现

我们对ADXL345驱动设计与其它设备一样。我们先抽象对象类型并考虑对对象的初始化和操作。

2.1、对象定义

基于对象的操作至少要包括3方面内容:对象的定义,对象的初值以及对象的操作。接下来我们就从这里个方面入手设计并实现ADXL345的驱动。

2.1.1、抽象对象类型

对于ADXL345也同时支持SPI接口通讯和I2C接口通讯。所以我们在抽象ADXL345对象类型时将接口类型作为属性以区别不同的特性。在使用I2C时,设备有地址以区别不同的设备,所以我们将I2C设备地址也定义为属性。而使用SPI时,没有设备地址但有片选信号,我们将对片选的操作定义为对象的操作函数。

/*定义ADXL345三轴数据结构*/
typedef struct Adxl345Object {
       uint8_t devAddress;
       uint8_t devID;
       Adxl345PortType port;
       int16_t incidence_X;
       int16_t incidence_Y;
       int16_t incidence_Z;
      
       float incidence_Xf;
       float incidence_Yf;
       float incidence_Zf;
      
       void (*ReadBytes)(struct Adxl345Object *adxl,uint8_t regAdd,uint8_t *rData,uint16_t rSize);  //读ADXL345寄存器操作
       void (*WriteBytes)(struct Adxl345Object *adxl,uint8_t regAdd,uint8_t *wData,uint16_t wSize);//写ADXL345寄存器操作
       void (*ChipSelect)(Adxl345CSType en);    //使用SPI接口时,片选操作
       void (*Delayus)(volatile uint32_t nTime);      /*实现us延时操作*/
}Adxl345ObjectType;

2.1.2、对象初始化函数

一个对象必须赋初值方可使用,所以我们还需要一个初始化函数来对对象初始化。初始化函数除了为对象属性赋初始值和给操作指定函数指针外,还需要检测参数的合法性以及对硬件设备做必要的配置。基于此我们设计ADXL345的初始化函数如下:

/*对ADXL345进行初始化配置*/
void Adxl345Initialization(Adxl345ObjectType *adxl,uint8_t devAdd,
                           Adxl345PortType port,
                           Adxl345ReadBytesType read,
                           Adxl345WriteBytesType write,
                           Adxl345ChipSelectType cs,
                           Adxl345DelayType delay)
{
       uint8_t devID=0;
       uint8_t setValue=0;
      
       if((adxl==NULL)||(read==NULL)||(write=NULL)||(delay==NULL))
       {
              return;
       }
      
       if(port==SPI)
       {
              if(cs==NULL)
              {
                     return;
              }
             
              adxl->ChipSelect=cs;
              adxl->devAddress=0x00;
       }
       else
       {
              if((devAdd==0xA6)||(devAdd==0x3A))
              {
                     adxl->devAddress=devAdd;
              }
              else if((devAdd==0x53)||(devAdd==0x1D))
              {
                     adxl->devAddress=(devAdd<<1);
              }
              else
              {
                     adxl->devAddress=0x00;
              }
              adxl->ChipSelect=NULL;
       }
      
       adxl->port=port;
       adxl->devID=0xE5;
       adxl->incidence_X=0;
       adxl->incidence_Xf=0.0;
       adxl->incidence_Y=0;
       adxl->incidence_Yf=0.0;
       adxl->incidence_Z=0;
       adxl->incidence_Zf=0.0;
      
       adxl->ReadBytes=read;
       adxl->WriteBytes=write;
       adxl->Delayus=delay;
      
       /*读取设备ID,在每次操作前读一次*/
       devID=Adxl345ReadRegister(adxl,REG_DEVID);
       if(adxl->devID!=devID)
       {
              return;
       }
       adxl->Delayus(300);
 
       /*配置数据格式*/
       setValue = 0x2B;
       Adxl345WriteRegister(adxl,REG_DATA_FORMAT,setValue);
       adxl->Delayus(50);
   
       /*配置数据速率及功率模式*/
       setValue = 0x0A;
       Adxl345WriteRegister(adxl,REG_BW_RATE,setValue);
       adxl->Delayus(50);
   
       /*配置电源特性*/
       setValue = 0x28;
       Adxl345WriteRegister(adxl,REG_POWER_CTL,setValue);
       adxl->Delayus(50);
   
       /*配置中断使能*/
       setValue = 0;
       Adxl345WriteRegister(adxl,REG_INT_ENABLE,setValue);
       adxl->Delayus(50);

       /*配置X轴偏移*/
       Adxl345WriteRegister(adxl,REG_OFSX,setValue);
       adxl->Delayus(50);

       /*配置Y轴偏移*/
       Adxl345WriteRegister(adxl,REG_OFSY,setValue);
       adxl->Delayus(50);

       /*配置Z轴偏移*/
       Adxl345WriteRegister(adxl,REG_OFSZ,setValue);
       adxl->Delayus(500);
}

2.2、对象操作

我们定义一个对象的目的是操作这个对象,这也是驱动程序的主要内容。接下来我们就来实现对ADXL345对象的操作函数。

2.2.1、写数据操作

ADXL345对象的写操作因为使用的接口不同其数据帧格式也会有不同。使用SPI接口时,其数据帧格式如下:

而使用I2C接口时,可以同时写多个寄存器,其数据帧格式如下:

根据上述的数据帧格式和时序图我们可以编写写ADXL345的寄存器函数:

/* 写ADXL345的寄存器 */
static void Adxl345WriteRegister(Adxl345ObjectType *adxl,uint8_t regAdd,uint8_t wData)
{
       if(adxl->port==SPI)
       {
              adxl->ChipSelect(ADXL345CS_Enable);
              adxl->Delayus(50);
              adxl->WriteBytes(adxl,regAdd,&wData,1);
              adxl->Delayus(50);
              adxl->ChipSelect(ADXL345CS_Disable);
       }
       else
       {
              adxl->WriteBytes(adxl,regAdd,&wData,1);
       }
}

2.2.2、读数据操作

ADXL345对象的读操作也同样在使用不同的接口时拥有不同的数据帧结构。使用SPI接口时,其数据帧格式如下:

而在使用I2C接口时,可以实现一个或多个寄存器的读操作,其数据帧格式如下:

根据以上的数据帧格式和时序图我们可以开发读取ADXL345的寄存器操作函数:

/* 读取ADXL345的寄存器 */
static uint8_t Adxl345ReadRegister(Adxl345ObjectType *adxl,uint8_t regAdd)
{
       uint8_t regValue=0;
      
       if(adxl->port==SPI)
       {
              adxl->ChipSelect(ADXL345CS_Enable);
              adxl->Delayus(50);
              adxl->ReadBytes(adxl,regAdd,&regValue,1);
              adxl->Delayus(50);
              adxl->ChipSelect(ADXL345CS_Disable);
       }
       else
       {
              adxl->ReadBytes(adxl,regAdd,&regValue,1);
       }
      
       return regValue;
}

2.2.3、测量数据输出

我们操作ADXL345对象的目的当然是获取我们想要的数据。最基本的,我们开发从ADXL345获取3个坐标数据。

/*读取数据值,分辨率(3.9 mg/LSB)*/
void GetValueFromAdxl345(Adxl345ObjectType *adxl)
{
  uint8_t devID = 0;
  uint8_t dataTemp[6];

  /*读取设备ID,在每次操作前读一次*/
  devID=Adxl345ReadRegister(adxl,REG_DEVID);
  if(adxl->devID!=devID)
  {
     return;
  }
  adxl->Delayus(200);
 
  /*读取三轴数据值*/
  Adxl345ReadMultiReg(adxl,REG_DATAX0,dataTemp,6);
 
  /*数据解析*/
  adxl->incidence_X = (int16_t)(dataTemp[0] + ((uint16_t)dataTemp[1] << 8));
  adxl->incidence_Y = (int16_t)(dataTemp[2] + ((uint16_t)dataTemp[3] << 8));
  adxl->incidence_Z = (int16_t)(dataTemp[4] + ((uint16_t)dataTemp[5] << 8));
      
  adxl->incidence_Xf = (float)(adxl->incidence_X * 0.0039);
  adxl->incidence_Yf = (float)(adxl->incidence_Y * 0.0039);
  adxl->incidence_Zf = (float)(adxl->incidence_Z * 0.0039);
}

3、驱动的使用

完成了驱动的设计开发,我们还要使用驱动实现ADXL345的应用。与其它外设一样,我们也按照实际项目的使用流程来验证之。

3.1、声明并初始化对象

首先我们使用前面定义的Adxl345ObjectType类型声明一个ADXL345对象变量。如:Adxl345ObjectType adxl345

声明对象变量后还需要调用Adxl345Initialization初始化函数对ADXL345对象变量进行初始化。当然在调用初始化函数前需要考虑传入的参数。特别是几个函数指针需要实现响应的函数。需要实现的函数类型如下:

typedef void (*Adxl345ReadBytesType)(struct Adxl345Object *adxluint8_t regAdduint8_t *rDatauint16_t rSize);    //ADXL345寄存器操作

typedef void (*Adxl345WriteBytesType)(struct Adxl345Object *adxluint8_t regAdduint8_t *wDatauint16_t wSize);//ADXL345寄存器操作

typedef void (*Adxl345ChipSelectType)(Adxl345CSType en);       //使用SPI接口时,片选操作

typedef void (*Adxl345DelayType)(volatile uint32_t nTime);      /*实现us延时操作*/

定义这几个函数后,就可以将器函数指针作为实参传递给初始化函数。调用如下:

Adxl345Initialization(&adxl345devAddportreadwritecsdelay);

其中adxl345为需要初始化的ADXL345对象。devAdd为使用I2C通讯时的设备地址,使用SPI时无用。port为通讯端口的类型,SPI或者I2Cread读操作函数指针,是对硬件层的封装。write为写操作函数指针,是对硬件层的封装。cs为使用SPI接口时,片选操作函数指针。delay为延时函数的指针。

3.2、基于对象进行操作

对象初始化完成后就可进行相应的操作。ADXL345的操作比较简单就是调用GetValueFromAdxl345函数获取我们需要的数据。具体的调用样式如下:

GetValueFromAdxl345(&adxl345);

这个使用比较简单,因为我们在初始化时将数据格式、数据速率及功率模式、电源特性、中断使能、各轴的数据偏移量等都按我们的需要在初始化时作了配置。如果需要不同配置则需要做相应的修改。

4、应用总结

在我们的应用中,我们将其设置为全分辨率,±16g的测量范围,读取数据与预期一致。

使用I2C接口时,设备地址使用7位输入或8位输入都没问题,地址一共有4种可能。其他的都为非法地址,在地址输入不符合要求时,会被默认初始化为广播地址。

在使用SPI接口时,如果是通过软件操作片选信号则需要实现操作函数并将函数指针传递给初始化函数。如果硬件上采取永久选中的形式则可将NULL作为参数传入。

欢迎关注:

 

ADXL345-数字加速度计
weixin_34318956的博客
02-21 3476
一、方向判断 注意看管脚1,x,y,z三轴如图所示,当重力加速度方向与坐标轴方向相反时为正,重力加速度方向与坐标轴相同时为负。 二、驱动 采用了IIC接口,实际上也支持SPI接口。 ADXL345.h: #ifndef _ADXL345_H #define _ADXL345_H typedef unsigned char u8; //0x0B To 0x1F ...
ADXL345加速度传感器基本程序(基于51)
01-30
基于CC2430芯片写的ADXL345初始化和数据读取程序。加速度测量结果为float型变量,补码输出。用于初始化和测试用。如自己有特殊功能需要,请工程师另作修改。部分初始化程序已经添加了设计说明
ADXL345加速度传感器(IIC协议 STM32)
最新发布
qq_44016222的博客
09-04 1717
ADXL345是一款由ADI公司生产的三轴数字加速度传感器。它常用于消费电子、工业自动化、运动检测、游戏设备和医疗器等应用领域。可以同时测量XY和Z三个轴的加速度和倾斜角度,支持自由空间运动和倾斜角度检测支持I²C和SPI数字接口,方便与微控制器和其他数字设备进行通信。以下是ADXL345加速度传感器的参数:供电电压DC:3~5V使用芯片ADXL345通信方式IIC/SPI通信协议测量范围±16g分辨率13位。
SILAN士兰微新品SC7A20±2G/±4G/±8G/±16G三轴微机械数字加速度计
SZKoyuElec的博客
03-14 1341
SC7A20 是一款高精度 12bit 数字三轴加速度传感器芯片,内置功能 更丰富,功耗更低,体积更小,测量更精确。 芯片通过 IC²/SPI 接口与 MCU 通信,加速度测量数据以断方式或 查询方式获取。INT1和INT2断管脚提供多种内部自动检测的断信号, 适应多种运动检测场合,断源包括 6D/4D 方向检测断信号、自由落体 检测断信号、睡眠和唤醒检测断信号、单击和双击检测断信号。芯 片内置高精度校准模块,对传感器的失调误差和增益误差进行精确补偿。 ±2G、±4G、±8G 和±16G
ADI公司提供3轴MEMS加速度计
12-10
美国模拟器件公司(ANALOG DEVICES, INC :ADI),有着十多年的MEMS技术创新业绩的全球领先公司,今日在马萨诸塞州诺伍德市(NORWOOD,MASS.)发布为其IMEMS:registered:系列运动信号处理产品增加的3轴加速度计。ADI公司凭借其业界公认的MEMS制造技术和将MEMS传感器结构与信号调理电路相结合能力这种专家经验将新的ADXL330 3轴加速度计的功耗电流降低到200 ΜA(2.0 V电源电压条件下),这比同类器件的功耗典型值低50%,成为同类器件功耗最低的产品。考虑到手机和其它便携式消费类电子产品的设计要求,ADXL330在采用小型(4 MM × 4 MM × 1.45
《STM32开发指南》第三十四章 ADXL345三轴加速度传感器实验
04-14
在本实验,我们将深入探讨如何使用STM32微控制器与ADXL345三轴加速度传感器进行交互。ADXL345是一款高度集成、低功耗的传感器,广泛应用于运动检测、冲击记录以及姿态测量等领域。STM32系列微控制器以其强大的处理...
ADXL345 加速度传感器 STM32驱动程序源代码.rar
03-22
ADXL345是一款高性能、低功耗的三轴数字加速度计,广泛应用于移动设备、运动健身产品以及物联网(IoT)设备的倾斜检测、振动测量和自由落体检测等。 首先,让我们了解ADXL345的基本特性。它能够测量±2g、±4g、±...
STM32F103C8T6驱动ADXL345三轴传感器源码
04-10
在本项目,我们将探讨如何使用STM32F103C8T6驱动ADXL345三轴加速度传感器。 ADXL345是一款低功耗、高性能的三轴数字加速度计,适用于移动设备和运动应用。它可以测量沿X、Y、Z三个轴的线性加速度,并通过I2CSPI...
ADXL345三轴数字加速度传感器快速入门指南
ADXL345是一款专用于三轴加速度测量的数字传感器,其设计旨在提供精确的加速度数据读取。本入门指南由Tomoaki Tusuzki撰写,主要介绍了ADXL345的基本特性、安装方法、电气连接、通信接口以及关键操作步骤。 1. **...
STM32驱动ADXL345(GY291).zip
04-22
2. ADXL345三轴加速度传感器:ADXL345是一款数字输出的微机械加速度计,能够测量静态和动态加速度,广泛应用于运动检测、倾斜传感、振动分析等场合。该传感器支持I²C和SPI两种通信协议,并具有低功耗模式,适合电池...
STM8通过模拟I2C读取三轴芯片ADXL345 三轴数据的源码
01-11
STM8S103通过模拟I2C读取三轴芯片ADXL345 重力加速度三轴数据的源码,调试正常. 特别提示: iar集成开发环境调试状态下读数据不正常.可编译后下载到芯片,重启单片机,通过USB转TTL串口通讯模块看 数据格式为: X = 1142.7 g ,Y = 351.0 g ,Z = 1571.7 g ADXL345数据手册一同打包上传了.
STM8F003+ADXL345+BK214无线模块程序
07-25
STM8F003模拟IIC读写ADXL345设计的丢步器, 采用无线模块BK214上传到主机。
ADXL345串口显示加速度以及倾斜角度+ADXL345文资料.rar
09-06
该资源是ADXL345倾斜角加速度传感器在STM32F1下运行的程序,能实现串口打印倾斜角度以及加速度值,还有它的文数据手册。
ADXL355(1)_adxl355_ADXL355例程_源码
10-04
ADXL355在STM32上的例程,包含SPI.C ADXL355.C Commend.c
STM32读取ADXL345数据.zip_ADXL345 stm32_ADXL345_STM32_STM32 ADXL345_a
07-15
STM32读取ADXL345数据 加速度传感器ADXL345数据读取程序 IIC总线接口
物联网AI MicroPython传感器学习 之 ADXL345 3轴加速度传感器
weixin_39363464的博客
10-17 3649
ADXL345是一款完整的3轴加速度测量系统,可选择的测量范围有士2g,士4g,士8g或士16g。它既能测量运动或冲击导致的动态加速度,也能测量静止加速度,例如重力加速度,这样的特性让它可作为倾斜传感器使用。
stm8s与adxl345的程序请教
weixin_38738073的博客
11-09 677
        请大家帮帮我,调试了几天,通过串口打印读出来的ADXL345三轴加速度只是-1,拜托大牛们帮帮我      IIC程序如下: #include "iic.h" /* 函数名称 : IIC_Config 功 能 : 基本配置 参 数 : 无 返 回 值 : 无 作 者 : 版 本 : V2.3.0 文件版本 : V1.0 日 期 : */ ...
(HAL学习10)SPI屏幕HAL驱动移植(触摸部分下一篇讲),软件SPI
ailta的博客
05-19 2132
我这里用的是4寸SPI带触摸的TFT,但是无论什么型号的,教大家移植方法,都可以使用,先看效果 首先讲讲为什么讲这一节,希望大家能看完我下面这段话 http://www.lcdwiki.com 这个网址可能很多人都熟悉,这是一家做嵌入式屏幕的公司产品展示网页,我之前更新的0.96oled也是这里面的产品,现在更的是SPI驱动的TFT,这里面品类的屏幕我都会抽一个移植HAL给大家并教大家移植方法(其实同品类的屏幕驱动原理是一样的,就是初始化写入寄存器时值不一样,由厂家提供,在给的源码里面可以看见) 然后
写文章

热门文章

  • PID控制器开发笔记之十二:模糊PID控制器的实现 92387
  • PID控制器开发笔记之九:基于前馈补偿的PID控制器的实现 38729
  • 步进电机驱动技术3:基于ULN2003的步进电机驱动 35034
  • 如何获取STM32 MCU的唯一ID 29180
  • PID控制器开发笔记之七:微分先行PID控制器的实现 28780

分类专栏

  • QT开发 3篇
  • 应用软件 8篇
  • 微量气体数据记录 1篇
  • 气象数据记录软件 2篇
  • 二氧化碳同位素 1篇
  • 外设驱动库开发 55篇
  • USB应用开发 1篇
  • 通讯接口 5篇
  • PID控制器算法系列 23篇
  • 数字滤波器 5篇
  • ThreadX 2篇
  • Modbus协议栈开发 17篇
  • 电机驱动技术 4篇
  • 文件系统 1篇
  • uCOS_III 1篇
  • 嵌入式系统IAP 1篇
  • 基于LL库的STM32应用开发 5篇
  • 嵌入式开发 35篇
  • STM32研发 26篇
  • 以太网 5篇
  • FreeRTOS 7篇
  • C语言 32篇
  • 算法 35篇
  • 自动控制 30篇
  • 软件架构 2篇
  • 加密解密 3篇
  • Modbus 15篇
  • CAN通讯
  • 数据库
  • C#语言 2篇
  • LwIP应用开发系列 11篇

最新评论

  • 步进电机驱动技术1:基于TMC2660的步进电机驱动

    zonsrly: 275680809@qq.com,博主可以分享一下程序demo吗?谢谢

  • 软件设计开发笔记6:基于QT的Modbus RTU从站

    跑得慢111: 博主,图片文件好像没有上传啊

  • PID参数自整定库之一:继电反馈整定算法

    qq_41049584: PMV是占空比吗,阶跃怎么求

  • 外设驱动库开发笔记45:MS4515DO压力传感器驱动

    CATHY_T: 博主,求工程文件 谢谢!! tml1314521@sina.com

  • PID参数自整定库之一:继电反馈整定算法

    qq_41049584: 整定周期结束时间呢,在程序里面没1看到

最新文章

  • 基于QT开发的气体成分检测数据记录软件
  • 基于QT实现的微量气体数据记录软件
  • 基于QT开发的温室气体数据记录软件
2024年2篇
2023年12篇
2022年21篇
2021年29篇
2020年46篇
2019年40篇
2018年47篇
2016年11篇

目录

目录

评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值

玻璃钢生产厂家福建景观玻璃钢雕塑设计哪有玻璃钢雕塑加工玻璃钢巨龙雕塑自贡玻璃钢恐龙雕塑南京玻璃钢雕塑一般多少钱中山玻璃钢浮雕雕塑天津商场主题创意商业美陈公司宜昌市玻璃钢雕塑企业玻璃钢花盆模具厂家无机玻璃钢雕塑系北京户内玻璃钢雕塑多少钱泸州玻璃钢仿铜雕塑厂家玻璃钢直销雕塑图片南湖玻璃钢雕塑南京天筑玻璃钢雕塑价格福建欧式玻璃钢雕塑哪家便宜镇江人物玻璃钢雕塑定做江苏知名玻璃钢雕塑价格玻璃钢雕塑设计制作哪家专业临沂玻璃钢小熊雕塑本溪市玻璃钢雕塑承德玻璃钢仿真水果雕塑价格景观玻璃钢雕塑哪家强大足区玻璃钢雕塑玻璃钢仿铜孔子雕塑台前玻璃钢雕塑云南动物玻璃钢雕塑定做西双版纳玻璃钢雕塑厂家直销海淀玻璃钢雕塑做玻璃钢雕塑设计香港通过《维护国家安全条例》两大学生合买彩票中奖一人不认账让美丽中国“从细节出发”19岁小伙救下5人后溺亡 多方发声单亲妈妈陷入热恋 14岁儿子报警汪小菲曝离婚始末遭遇山火的松茸之乡雅江山火三名扑火人员牺牲系谣言何赛飞追着代拍打萧美琴窜访捷克 外交部回应卫健委通报少年有偿捐血浆16次猝死手机成瘾是影响睡眠质量重要因素高校汽车撞人致3死16伤 司机系学生315晚会后胖东来又人满为患了小米汽车超级工厂正式揭幕中国拥有亿元资产的家庭达13.3万户周杰伦一审败诉网易男孩8年未见母亲被告知被遗忘许家印被限制高消费饲养员用铁锨驱打大熊猫被辞退男子被猫抓伤后确诊“猫抓病”特朗普无法缴纳4.54亿美元罚金倪萍分享减重40斤方法联合利华开始重组张家界的山上“长”满了韩国人?张立群任西安交通大学校长杨倩无缘巴黎奥运“重生之我在北大当嫡校长”黑马情侣提车了专访95后高颜值猪保姆考生莫言也上北大硕士复试名单了网友洛杉矶偶遇贾玲专家建议不必谈骨泥色变沉迷短剧的人就像掉进了杀猪盘奥巴马现身唐宁街 黑色着装引猜测七年后宇文玥被薅头发捞上岸事业单位女子向同事水杯投不明物质凯特王妃现身!外出购物视频曝光河南驻马店通报西平中学跳楼事件王树国卸任西安交大校长 师生送别恒大被罚41.75亿到底怎么缴男子被流浪猫绊倒 投喂者赔24万房客欠租失踪 房东直发愁西双版纳热带植物园回应蜉蝣大爆发钱人豪晒法院裁定实锤抄袭外国人感慨凌晨的中国很安全胖东来员工每周单休无小长假白宫:哈马斯三号人物被杀测试车高速逃费 小米:已补缴老人退休金被冒领16年 金额超20万

玻璃钢生产厂家 XML地图 TXT地图 虚拟主机 SEO 网站制作 网站优化