『开源项目』基于STM32的智能垃圾桶之综合代码(HAL库)

本文详述了一个基于STM32的智能垃圾桶项目,包括综合代码的编写,涉及语音识别、舵机控制、RGB灯及串口通信。项目功能包括识别不同类型的垃圾并自动打开相应垃圾桶,通过HAL库实现。文章介绍了关键代码如定时器配置、串口初始化、舵机控制及语音播报,并提供完整代码下载链接。
摘要由CSDN通过智能技术生成

大家好,我是『芯知识学堂』的SingleYork,前面给大家简单介绍了<基于STM32的智能垃圾桶之成员简介>、 <基于STM32的智能垃圾桶之语音识别>、 <基于STM32的智能垃圾桶之语音播报>和 <基于STM32的智能垃圾桶之舵机控制(HAL库)>,今天笔者将要给大家介绍我们这个DIY智能垃圾桶套件的最后一个知识点,那就是这个项目的“综合代码”了,相信很多小伙伴都已经等得不耐烦了吧,不过笔者最近确实有点忙,很抱歉让大家久等了。
在这里插入图片描述

一说到“综合代码”,很多初学者,可能会一脸懵逼,因为,他们往往只会跟着开发板配套的教程,跑单一功能的代码,比如:控制某个LED亮与灭、串口收发、定时器基本操作、AD/DA控制等,这些单独的外设用的是“贼6”,可是,一旦让他们自己动手写包含多个外设的综合代码的时候,可能就是“狗咬刺猬—无从下手”。当然咯,基础知识不扎实可能是其一方面,另外一个关键的原因就是练的太少,尤其是缺少项目实操的经验。那么,笔者希望通过我们这个“智能垃圾桶”的综合例程,对广大初学者有所帮助!

在介绍代码之前,我们先来看一下,我们这个“智能垃圾桶”项目要实现的功能:

1、呼唤“猫头鹰”–>应答“主人请吩咐”,板载RGB红灯亮,5秒内呼唤“旧报纸”->识别成功板载RGB绿灯亮,语音播报“可回收垃圾”,同时对应垃圾桶打开,延时5秒,垃圾桶合盖,RGB绿灯灭;

2、呼唤“猫头鹰”–>应答“主人请吩咐”,板载RGB红灯亮,5秒内呼唤“剩菜” ->识别成功板载RGB绿灯亮, 语音播报“厨余垃圾” ,同时对应垃圾桶打开,延时5秒,垃圾桶合盖,RGB绿灯灭;

3、呼唤“猫头鹰”–>应答“主人请吩咐”,板载RGB红灯亮,5秒内呼唤“灯泡” ->识别成功板载RGB绿灯亮,语音播报“有害垃圾” ,同时对应垃圾桶打开,延时5秒,垃圾桶合盖,RGB绿灯灭;

4、呼唤“猫头鹰”–>应答“主人请吩咐”,板载RGB红灯亮,5秒内呼唤“瓜子壳”->识别成功板载RGB绿灯亮,语音播报“其他垃圾” ,同时对应垃圾桶打开,延时5秒,垃圾桶合盖,RGB绿灯灭;

在呼叫“猫头鹰”成功后,板载RGB红灯亮,若10秒内没有说出具体垃圾名,红灯灭,需要再一次唤醒“猫头鹰”。

硬件部分的连线,大家根据我们的扩展板的接口来连接即可,舵机的接线方式前面<基于STM32的智能垃圾桶之舵机控制(HAL库)>有介绍过,不清楚的小伙伴们可以去看一下,其中四个舵机接口定义如下:

  • 舵机1接口对应“可回收垃圾”所在垃圾桶上的舵机;
  • 舵机2接口对应“厨余垃圾”所在垃圾桶上的舵机;
  • 舵机3接口对应“有害垃圾”所在垃圾桶上的舵机;
  • 舵机4接口对应“其他垃圾”所在垃圾桶上的舵机;
    在这里插入图片描述

前面介绍单独的舵机驱动程序的时候,笔者是手把手教大家用CubeMX工具一步一步配置的,但是,今天的综合代码,笔者就不再给大家介绍如何用CubeMX工具来配置了,而是直接移植了硬石科技的例程,然后做了一些修改,这样比起自己完全用CubeMX工具来配置,还是要省不少事,而且,硬石科技的例程代码风格还是挺不错的,移植起来比较方便。废话不多说,我们还是来看代码吧,由于整个项目的代码比较多,限于篇幅也不可能全部进行讲解,这里主要是针对一些关键的代码部分进行简单讲解,需要完整代码的小伙伴们,可以在文末获取下载链接下载完整代码。

我们先来看配置部分相关的函数,配置部分主要都放在了main()函数的开头部分:
在这里插入图片描述

这里面的配置函数比较多,笔者主要介绍几个关键的函数,首先是系统时钟配置函数SystemClock_Config():
在这里插入图片描述

系统时钟配置部分基本上不需要做修改,跟CubeMX工具生产的代码也差不多,如果我们使用的是外部8MHz的晶振,基本上直接复制粘贴即可。这里需要注意的一个地方就是系统滴答定时器的配置,当我们有用到库函数HAL_Delay进行延时控制的话,就需要根据我们所需要延时的最小时间来配置系统滴答定时器。

接下来,就是GENERAL_TIMx_Init()这个函数,这个函数是在“bsp_GeneralTIM.c”这个文件中,是整个例程中比较关键的一个配置函数,主要实现了定时器TIM2定时1ms中断一次,还有定时器TIM3通道1-4作为PWM输出:
在这里插入图片描述在这里插入图片描述

GENERAL_TIMx_Init()这个函数里面用到了很多宏定义,这些宏定义都是在“bsp_GeneralTIM.h”这个文件中,用宏定义增强了代码的可读性,便于后续维护、移植。
在这里插入图片描述

由于我们用到了定时器TIM3的PWM功能,所以,对TIM3的四个通道到引脚也需要进行配置,主要在HAL_TIM_MspPostInit(TIM_HandleTypeDef* htim)这个函数中实现,代码如下:
在这里插入图片描述

串口部分配置的代码,主要在“bsp_usartx.c”这个文件中,其中MX_USARTx_Init()这个函数用于对USART1、USART2和USART3的参数进行配置:
在这里插入图片描述

同样,这里用到了很多宏定义,宏定义部分的代码在“bsp_usartx.h”文件中实现:
在这里插入图片描述在这里插入图片描述

虽然这里配置了3个串口,实际上,我们这个例程中,只需要用到USART1和USART3这两个串口,这里尤其是要注意一下USART1,STM32F103C8T6的USART1的TX和RX默认是在PA9和PA10这两个引脚上,而我们的扩展板使用的是PB6和PB7这两个引脚,所以,我们在USART1硬件初始化配置的时候,还需要添加一行“__HAL_AFIO_REMAP_USART1_ENABLE();”这个代码,将USART1重映射到PB6和PB7这两个引脚上:
在这里插入图片描述

USART2和USART3因为没有涉及到引脚的重映射,所以使用默认的配置即可:
在这里插入图片描述

接下来,我们就来看下语音播报相关的函数,前面讲 <基于STM32的智能垃圾桶之语音播报>时候,笔者给大家提到了WT2003S-16S 这个MP3芯片“指定SPI-FLASH索引播放”功能的指令帧格式:
在这里插入图片描述

于是,我们可以这条控制指令的特点,写如下这样一个函数:
在这里插入图片描述

这样的话,在我们需要播放第N首音频文件的时候,只需要调用PlayByFileIndex(N)就可以播放了。

另外,我们还可以控制音频播放时音量的大小,同样,WT2003S-16S这个芯片提供了这样一个指令可用于设置音量的大小:
在这里插入图片描述

同样的,我们根据这条指令,写了如下这么一个函数:
在这里插入图片描述

这样我们就可以直接通过VolumeSetting(N)来设置播放音量等级为N了。

我们的板子上还搭载了一颗RGB的指示灯,实际上对于我们这个例程来说是无关紧要的,但是,为了便于我们更方便的观察到一些实验现象,笔者还是讲这个RGB灯用起来了,那么,我们来看下这个RGB灯的初始化代码吧,主要是通过“bsp_led.c”文件中的LED_GPIO_Init()函数来实现:
在这里插入图片描述

同样的,我们也使用了大量的宏定义,这些宏定义在“bsp_led.h”文件中:
在这里插入图片描述

在所有的外设都配置完成后,我们就可以来使用这些外设的功能了,由于我们要使用到定时器TIM2的定时中断功能,所以,我们要在中断模式下启动定时器TIM2,调用HAL_TIM_Base_Start_IT(&htimx2)这个函数即可实现。另外,我们还有用到定时器TIM3的PWM输出功能,因此,我们还需要启动定时器TIM3的四个PWM通道输出:
在这里插入图片描述

我们用定时器TIM2来实现1ms整数倍时间的定时,是在“非阻塞模式下定时器的回调函数” HAL_TIM_PeriodElapsedCallback(TIM_HandleTypeDef *htim)中,添加一些变量来实现:
在这里插入图片描述

接下来,我们可以设置4个舵机的初始状态,根据 <基于STM32的智能垃圾桶之舵机控制(HAL库)>中介绍的有关舵机控制的知识,我们可以通过如下方式设置4个舵机的初始角度为0°,并将4个舵机的状态都设置为“空闲”状态:
在这里插入图片描述

因为我们有使用到USART1和USART3这两个串口的中断功能,所以,我们还需要使能他们的中断接收:
在这里插入图片描述

在使能中断接收后,当串口有接收到数据,便会自动进入到“串口接收完成回调函数” HAL_UART_RxCpltCallback(UART_HandleTypeDef *UartHandle)里面来:
在这里插入图片描述

我们在使用定时器中断和串口中断时,还需要在“stm32f1xx_it.c”文件中,添加如下代码,否则,定时器中断和串口中断不起作用:
在这里插入图片描述

接下来,我们就要来实现语音识别部分的代码,如下图所示,让我们USART1接收到0xFE(即:254)是,语音模块口令模式唤醒成功,这个时候RGB红灯亮,同时语音播报模块会提示“主人请吩咐”。若10秒内没有说出具体的垃圾名,则RGB红灯灭,下一次操作时需要重新唤醒:
在这里插入图片描述

这个时候,便进入了具体的垃圾类别的处理程序,当我们语音播报模块播放“主人请吩咐”完成后,我们便可以说出具体的垃圾名,然后,系统会根据语音识别模块的返回值来执行对应的动作,这里是通过一个switch()语句来实现:
在这里插入图片描述

具体的垃圾分类识别成功后,RGB绿色指示灯会亮,且语音播报模块会播放对应的垃圾分类名,同时,对应的垃圾桶盖会慢慢打开,这个打开的速度,可以在一定范围内调节。垃圾桶盖打开完成后,延时5秒,便会自动关闭,这部分功能实现代码,是在Servo_OpenAndClose()这个函数中,以舵机1的代码为例,其余3个舵机代码类似:
在这里插入图片描述

接下来,我们只需要将代码下载到我们的开发板中,即可看到运行的效果:

『芯知识学堂』智能垃圾桶演示视频

由于我们的蜂鸣器正好跟舵机4共用了定时器TIM3的通道4引脚,所以,下载程序后蜂鸣器会一直在响,可能会对语音识别有一点小干扰,但是影响不会很大,如果有小伙伴在用我们的『OWL Micro F1开发板』做这个DIY项目,大家也可以把蜂鸣器拆除。

好了,到这里,我们的整个<智能垃圾桶>的DIY项目就全部介绍完成了,感兴趣的小伙伴们可以自己动手做起来,虽然这个代码是在我们的『OWL Micro F1开发板』上实现的,但是,如果大家没有我们的这款开发板,大家也可以将代码移植到别的STM32F1系列的板子上去运行。当然咯,大家也可以在我们的代码基础上继续做一些优化,做一个更好玩的DIY项目出来。需要完整代码的小伙伴们可自行下载,若有疑问,可私信作者,感谢大家的支持!

本站下载链接: https://download.csdn.net/download/u012535488/12675326

在这里插入图片描述

嵌入式-stm32-基于HAL库的感应关盖垃圾桶项目(源)
01-05
本项目“嵌入式-stm32-基于HAL库的感应关盖垃圾桶项目”正是这样一个实例,它展示了如何利用STM32微控制器和其HAL库来实现智能感应垃圾桶的功能。HAL库(Hardware Abstraction Layer,硬件抽象层)是ST公司提供的...
STM32项目_无垃圾桶的智能垃圾桶
qbh001的博客
07-14 278
智能垃圾桶分为两个外设分别为超声波模块HC-04,SG90、0.96OLED单片机内部资源使用情况:TIM1、TIM2、TIM3、GPIO口(软件模拟)
基于stm32智能垃圾桶.zip
06-13
本次主要是利用单片机设计并制作一套智能垃圾箱。要求以单片机为控制核心,通过红外传感器检测是否有人扔垃圾,并自动打垃圾箱盖,扔完垃圾后再自动关闭。
基于STM32发的智能垃圾桶系统
最新发布
2401_84204806的博客
08-19 932
本文介绍了如何使用STM32微控制器和多种传感器与模块实现一个智能垃圾桶系统,从系统初始化、传感器数据采集与垃圾桶控制、显示与状态指示到Wi-Fi通信与远程监控,详细介绍了每一步的操作步骤。本系统可用于家庭智能垃圾桶,通过实时检测垃圾桶的满溢情况,自动控制垃圾桶盖的关,提高生活便利性和卫生水平,同时通过Wi-Fi实现远程监控,方便家庭成员随时了解垃圾桶的状态。本系统还可应用于公共场所的垃圾管理,通过对垃圾桶的实时监控与远程管理,优化垃圾收集流程,提升公共环境的卫生水平,并减少垃圾桶满溢导致的环境问题。
stm32智能垃圾桶.zip
11-30
stm32智能垃圾桶程序,智能垃圾桶采用先进的微电脑控制芯片、红外传感探测装置、机械传动部分组成,是集机光电于一体的高科技新产品,当人的手或物体接近投料口(应感窗)约25cm-35cm时,垃圾桶盖会自动启,待垃圾投入3-4秒后桶盖又会自动关闭,人、物不需接触垃圾桶,彻底的解决了传统垃圾桶对使用者存在的卫生感染的隐患,能有效杜绝各种传染性疾病通过垃圾进行传播和防止桶内垃圾气味溢出。
基于STM32智能垃圾桶,基于stm32智能垃圾桶设计,C,C++
09-10
基于STM32智能垃圾桶,实现的功能有红外传感器检测自动盖,LED屏显示,温湿度测量,超重报警,异味检测,可燃气体检测
单片机设计_语音识别分类智能垃圾桶(STM32 ESP8266 LD3320)
更多资料私我
12-21 7815
单片机设计_语音识别分类智能垃圾桶(STM32 ESP8266 LD3320) 说出唤醒词“垃圾桶”后,再说一句垃圾名称,语音识别模块端识别到相应关键词,便会将结果通过串口发送到STM32端,STM32端接着会发送打相应垃圾桶盖的指令,6s后,垃圾桶盖自动关闭。其中翻盖功能是通过STM32端控制舵机实现。STM32端若判断到有人说出唤醒词了,通过串口发送指令给语音播报模块,外放喇叭便会播报“你好”的音频,若判断到相应的垃圾种类,便会播报相应的垃圾种类音频。
基于STM32智能垃圾桶_stm32_垃圾桶_红外_基于STM32智能垃圾桶_智能垃圾桶
09-10
在项目发过程中,发者需要编写固件代码,利用STM32的CubeMX配置工具进行初始化设置,然后用HAL库或者LL库编写应用程序。同时,可能还需要进行硬件设计,包括电路板布局和传感器的选择与连接。通过综合运用这些...
智能四轮车组电磁循迹基于stm32cubeMX配置HAL库程序代码
11-14
在这个项目中,STM32CubeMX配置的HAL库程序代码扮演着核心角色,它负责管理和控制车辆的各种功能。 STM32是一款基于ARM Cortex-M内核的微控制器,具有高性能、低功耗的特点,广泛应用于各种嵌入式系统,如智能车...
基于 STM32智能垃圾桶设计
01-24
本文设计了一种基于 STM32F103C8T6 单片机智能垃圾桶控制系统。该系统主要由超声波测距 电路、红外感应电路、电机驱动模块和语音播报模块等功能模块组成,以超声波传感器、红外传感 器和 STM32 单片机为核心,通过超声波传感器采集桶内垃圾的高度,LCD1602 显示屏实时显示当前 垃圾桶容量状态,如果红外感应传感器检测到可测范围内有物体靠近,则垃圾箱自动翻盖,经过延 迟程序,垃圾桶盖会实现自动关闭,如果超声波检测到垃圾箱已满,单片机系统就会实现 WT588D 语 音播报系统实现语音提示。垃圾取走之后,按下消毒按键,垃圾桶盖会自动关闭,继电器闭合, 始消毒。本设计能够有效的避免了人与垃圾桶的接触,减小接触细菌的几率。同时能够提醒人们及 时清理垃圾,减少室内细菌的滋生,保证室内的空气干净清新。本产品具有智能,方便,节约资源 等特点,是一款必备的智能家居产品
基于STM32智能垃圾桶仿真设计资料(包含原理图源程序)
07-24
通过说出关键词“垃圾桶”即可启动,通过语音识别模块LD3320识别说出的垃圾名称,对应的舵机打对应的垃圾桶。
基于STM32单片机+LD2330语音识别模块智能垃圾桶设计资料(包含原理图PCB及源程序).rar
12-17
智能垃圾桶设计,可语音识别干垃圾、湿垃圾、可回收垃圾和有害垃圾,并利用舵机控制垃圾桶合。包含原理图PCB及源程序文件
基于STM32F103c8t6的智能垃圾桶.rar
05-17
STM32F103c8t6为核心,配合HC-SRO4超声波模块测距,SG90舵控制垃圾桶关,用OLED显示屏显示垃圾桶关状态。
基于stm32语音识别与RFID技术智能分类垃圾桶
12-08
通过上位机设置相应的语音指令,在通过单片机到达指定位置,然后通过RFID识别技术对垃圾进行分类,在通过舵机打相应的垃圾桶
基于STM32智能垃圾桶设计(论文+源码)_kaic
涉及毕业论文、远程调试、小程序、管理系统、JAVA、C#、IDEA、VS开发工具等
05-08 2665
基于STM32智能垃圾桶设计 摘 要 随着社会科学技术的迅猛进展,人们的生活质量和速度也在不断提高。然而,大多数传统的家庭垃圾桶已经过时且缺乏创新,缺乏人性化设计。它们使用起来不方便、不卫生,所有的生活和废物垃圾都被混合装载,没有经过仔细的分类。这导致清洁工所面临的任务量以几何级数增长,浪费大量时间检查垃圾种类以及往返检查的过程中。在推崇效率和尽可能减少劳动时间的时代,人们越来越依赖于科技进步带来的方便。 为了更好地解决此类问题。本文设计了一种基于STM32F103C8T6的语音识别智能垃圾
基于STM32智能垃圾桶设计(1)-按键+舵机控制部分
anyi66622的博客
11-14 2367
基于STM32的按键控制舵机,智能垃圾桶第一步骤,使用PWM占空比调节控制舵机任意角度。工程有CUBEX生成,KEIL5编译
写文章

热门文章

  • 基于TEC1-12706半导体制冷片的微型“小冰箱” 30816
  • 如何用Visual Studio运行C代码(基于VS2015平台) 25821
  • 超实用技能|Altium Designer中如何实现多个原理图文件关联同一个PCB文件? 24136
  • 分享一个N-MOS管和P-MOS管驱动应用实例 20161
  • [直流有刷电机&步进电机]驱动芯片AS4950完美替代A4950/DRV8870/AT8870/TMI8870/G2057 17192

分类专栏

  • 基于STC15系列单片机工业自动化控制实战教学 付费 19篇
  • STC15单片机与迪文DGUS屏/昆仑通泰人机界面应用教程 付费 11篇
  • 基于STM32F1系列MCU的完全开源的智能垃圾桶 付费 5篇
  • 硬件设计实例分享 6篇
  • DIY专区 5篇
  • K210开发套件 1篇
  • Keil实用技能 1篇
  • Altium Designer实用技能 1篇
  • Visual Studio 专区 1篇

最新评论

  • 基于TEC1-12706半导体制冷片的微型“小冰箱”

    一只打酱油的猫: 大佬可以看看原理图吗

  • 分享一款Type C接口USB转2路485模块【带完整原理图】

    CSDN-Ada助手: 不知道 C 技能树是否可以帮到你:https://edu.csdn.net/skill/c?utm_source=AI_act_c

  • AS4950全桥(H桥)直流有刷电机驱动 2相4线步进电机驱动 替代L298N【附开源设计资料】

    云梦深处: 可能是你PWM波的频率太高了

  • 分享一款基于51单片机和MCP23017的IO扩展方案

    SingleYork: 可以通过微信公众号联系到我,发你

  • 基于TEC1-12706半导体制冷片的微型“小冰箱”

    2302_80402779: 可以告诉我电风扇等工具的具体尺寸嘛亲爱的博主

最新文章

  • 分享一款Type C接口USB转2路485模块【带完整原理图】
  • 【STC15系列】SYK-0806-A2S1 工业自动化控制之【18-内部AD采集外部电压】
  • 【STC15系列】SYK-0806-A2S1 工业自动化控制之【17-EEPROM实现数据掉电保存】
2024年1篇
2021年17篇
2020年34篇

目录

目录

评论 8
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

SingleYork

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或 充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 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 网站制作 网站优化