STM32与K210串口通信

文章详细介绍了如何通过串口通信,让K210向STM32发送数据包,STM32接收到数据后显示在OLED屏幕上。K210使用UART1通过GPIO18发送,STM32使用USART1的PA10接收。代码示例展示了K210端的数据发送函数和STM32端的数据接收中断处理,确保数据的完整性和安全性。
摘要由CSDN通过智能技术生成

目录

1.前言

 2.接线部分

3.代码部分

1.k210部分

1.调用自带的库文件

2.将I/O18设置为UART1_TX功能并设置串口

3.数据发送函数

4.主函数

4.程序现象

2.STM32部分

1主函数

2.串口接收程序

3.程序现象

 4.完整代码

5.总结


1.前言

        这篇文章是为了填上一篇 k210的简单PID巡线埋下的坑,k210和STM32通过串口通信,我是采用数据包的形式发送数据的,因为K210发送的数据有几种,采用数据包的形式发送比较安全。

        本文代码运行的平台是STM32F103C8T6K210 Dock,只涉及到K210发送数据给STM32,stm32将接受到的数据显示到0.96寸OLED屏上。

 2.接线部分

        STM32使用串口外设是USART1,由于只接受数据所以只用到I/O的PA10;K210的串口通信I/O可以自行定义,我使用的是靠5V口近的GPIO18。STM32上的3.3V电源和GND分别K210上的5V电源和GND连接。最后测试的时,直接用typ-c给K210供电,K210再给stm32供电。这个时候就有人会问了“为什么5V可以直接STM32供电?”因为一般的STM32F103C8T6最小系统上自带一块线性稳压器,它可以将K210的5V电源转化为3.3V给STM32芯片供电。(这只是为了方便测试,请检查你的STM32上是否有线性稳压器,若没有请单独供电

K210    TX发送STM32F103   RX接收
GPIO 18PA 10
5V3.3V
GNDGND

3.代码部分

1.k210部分

1.调用自带的库文件

import time #延迟函数 
from machine import UART #串口库函数
from fpioa_manager import fm # GPIO重定向函数

2.将I/O18设置为UART1_TX功能并设置串口

fm.register(18, fm.fpioa.UART1_TX, force=True)
uart_A = UART(UART.UART1, 115200, 8, 0, 1, timeout=1000, read_buf_len=4096)

        在使用 uart1 前,我们需要使用 fm 来对芯片引脚进行映射和管理,将 I/O 18 设置为 uart1 的发送引脚。

        波特率设置为115200,这里注意要和STM32设置的一样。8位数据宽度,不需要奇偶校验位,1位停止位。

        timeout 为串口接收超时时间。read_buf_len 串口接收缓冲,串口通过中断来接收数据,如果缓冲满了,将自动停止数据接收

3.数据发送函数

def sending_data(x,y,z):
    FH = bytearray([0x2C,0x12,x,y,z,0x5B])
    uart_A.write(FH);

        传入你所需要发送的数据x、y、z,FH = bytearray([0x2C,0x12,x,y,z,0x5B])是将你的数据存入FH这个数组中。

        uart_A.write用于使用串口发送数据,将这个数据包发送出去。

4.主函数

Cx = 0
Cy = 0
Cz = 0

while True:
    
    Cx+=1;
    Cy+=1;
    Cz+=1;
    sending_data(Cx,Cy,Cz)
    print("Cx:",Cx,"Cy",Cy,"Cz:",Cz)
    time.sleep_ms(1000)

        该例子是让Cx、Cy、Cz每一秒自加一并发送给STM32。

4.程序现象

         程序运行后,串行终端每一秒打印一次

         用一个CH340模块连接电脑读取一下串口数据。        

        电脑可以成功接收每组6个的数据包,每组数据中不变的就是帧头的两个2C,12和帧尾的5B。知道了这个格式,那么我们就可以开始编写STM32上的代码了。

2.STM32部分

1主函数

        本次程序在STM32上要实现的功能是接收数据后显示到OLED上,只需要初始化OLED和串口,在编写一下OLED显示的代码就行了。

#include "stm32f10x.h"                  // Device header
#include "OLED.h"
#include "Serial.h"
int main (void)
{
	OLED_Init();
	Serial_Init();
	OLED_ShowString(1,1,"Cx:");
	OLED_ShowString(2,1,"Cy:");
	OLED_ShowString(3,1,"Cz:");
	while(1)
	{
		OLED_ShowNum(1,4,Cx,4);
		OLED_ShowNum(2,4,Cy,4);
		OLED_ShowNum(3,4,Cz,4);
	}

}

        这里的Cx、Cy、Cz我是直接在Serial.h中使用了extern 外部变量声明。

2.串口接收程序

 先进行串口初始化。

#include "stm32f10x.h"                  // Device header

uint8_t Cx,Cy,Cz;         
                           
void Serial_Init(void)
{
	RCC_APB2PeriphClockCmd(RCC_APB2Periph_USART1, ENABLE);
	RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA, ENABLE);
	
	//USART1_RX	  PA10
	GPIO_InitTypeDef GPIO_InitStructure;
	GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IPU;
	GPIO_InitStructure.GPIO_Pin = GPIO_Pin_10;
	GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
	GPIO_Init(GPIOA, &GPIO_InitStructure);
	
	USART_InitTypeDef USART_InitStructure;
	USART_InitStructure.USART_BaudRate = 115200;
	USART_InitStructure.USART_HardwareFlowControl = USART_HardwareFlowControl_None;
	USART_InitStructure.USART_Mode = USART_Mode_Rx;
	USART_InitStructure.USART_Parity = USART_Parity_No;
	USART_InitStructure.USART_StopBits = USART_StopBits_1;
	USART_InitStructure.USART_WordLength = USART_WordLength_8b;
	USART_Init(USART1, &USART_InitStructure);
	
	USART_ITConfig(USART1, USART_IT_RXNE, ENABLE);
	
	NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);
	
	NVIC_InitTypeDef NVIC_InitStructure;
	NVIC_InitStructure.NVIC_IRQChannel = USART1_IRQn;
	NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;
	NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 1;
	NVIC_InitStructure.NVIC_IRQChannelSubPriority = 1;
	NVIC_Init(&NVIC_InitStructure);
	
	USART_Cmd(USART1, ENABLE);
}

        使用的是USART1,它对应的接收引脚为PA10,将PA10设置为GPIO_Mode_IPU(输入上拉)模式,波特率设置为115200,8位数据宽度,不需要奇偶校验位,1位停止位,要和K210一致。再初始化串口中断并使能中断。

 接收数据包的逻辑编写

void USART1_IRQHandler(void)			 
{
		u8 com_data; 
		u8 i;
		static u8 RxCounter1=0;
		static u16 RxBuffer1[6]={0};
		static u8 RxState = 0;	

		if( USART_GetITStatus(USART1,USART_IT_RXNE)!=RESET)  	   //接收中断  
		{
			
				USART_ClearITPendingBit(USART1,USART_IT_RXNE);   //清除中断标志
				com_data = USART_ReceiveData(USART1);
				if(RxState==0&&com_data==0x2C)  //0x2c帧头
				{
					
					RxState=1;
					RxBuffer1[RxCounter1++]=com_data;
				}
		
				else if(RxState==1&&com_data==0x12)  //0x12帧头
				{
					RxState=2;
					RxBuffer1[RxCounter1++]=com_data;
				}
		
				else if(RxState==2)
				{
					RxBuffer1[RxCounter1++]=com_data;

					if(RxCounter1==6 && com_data == 0x5B)       //RxBuffer1接受满了,接收数据结束
					{
						
						Cx=RxBuffer1[RxCounter1-4];
						Cy=RxBuffer1[RxCounter1-3];
						Cz=RxBuffer1[RxCounter1-2];
						RxCounter1 = 0;
						RxState = 0;	
					}
					else if(RxCounter1 > 6)            //接收异常
					{
						RxState = 0;
						RxCounter1=0;
						for(i=0;i<6;i++)
						{
								RxBuffer1[i]=0x00;      //将存放数据数组清零
						}
					
					}
				}
				else   //接收异常
				{
						RxState = 0;
						RxCounter1=0;
						for(i=0;i<6;i++)
						{
								RxBuffer1[i]=0x00;      //将存放数据数组清零
						}
				}

		}
		
}

        com_data 用于读取STM32串口收到的数据,这个数据会被下一个数据掩盖,所以要将它用一个数组储存起来。

        RxBuffer1[6]={0} 定义一个6个成员的数组,可以存放6个数据,刚好放下一个数据包。

        RxCounter1 用来计次,让RXBufeer1这个数组能依次存入数据包。

        RxState 接收状态,判断程序应该接收第一个帧头、第二个帧头、数据或帧尾。

        com_data = USART_ReceiveData(USART1); 读取 将串口接收到的数据。

        if(RxState==0&&com_data==0x2C)  //0x2c帧头
                {
                    RxState=1;
                    RxBuffer1[RxCounter1++]=com_data;
                }

        当RXState处于0时,为接收帧头1模式。若接收到帧头1(0x2C),将RXState置1,切换到接收帧头2模式,并将帧头1存入RxBuffer1[0]的位置,RxCounter1加一。

else if(RxState==1&&com_data==0x12)  //0x12帧头
                {
                    RxState=2;
                    RxBuffer1[RxCounter1++]=com_data;
                }

        当RXState处于1时,为接收帧头2模式。若接收到帧头2(0x12),将RXState置2,切换到保存数据模式,并将帧头2存入RxBuffer1[1]的位置,RxCounter1加一。

else if(RxState==2)
                {
                    RxBuffer1[RxCounter1++]=com_data;

                    if(RxCounter1==6 && com_data == 0x5B)     //RxBuffer1接受满了,接收数据束
                    {      
                        Cx=RxBuffer1[RxCounter1-4];
                        Cy=RxBuffer1[RxCounter1-3];
                        Cz=RxBuffer1[RxCounter1-2];
                        RxCounter1 = 0;
                        RxState = 0;    
                    }

                }        

        当RXState处于2时,为保存数据模式。RxBuffer1[]将接收到的数据依次存入RxBuffer1[2]、RxBuffer1[3]、RxBuffer1[4]、RxBuffer1[5]中。当接收到第六位数据时,进行判断是否为帧尾(0x5B),若是帧尾分别保存数据RxBuffer1[2]、RxBuffer1[3]、RxBuffer1[4]Cx、Cy、 Cz中。

else if(RxCounter1 > 6)
                    {
                        RxState = 0;
                        RxCounter1=0;
                        for(i=0;i<6;i++)
                        {
                                RxBuffer1[i]=0x00;      //将存放数据数组清零
                        }
                    }

        若是不是帧尾帧尾将会把RxState、RxCounter1和RxBuffer1[]全部置零做接收异常处理。

else   //接收异常
                {
                        RxState = 0;
                        RxCounter1=0;
                        for(i=0;i<6;i++)
                        {
                                RxBuffer1[i]=0x00;      //将存放数据数组清零
                        }
                }

        }

        若没接收到帧头1(0x2C)和帧头2(0x12),将会把RxState、RxCounter1和RxBuffer1[]全部置零做接收异常处理。

3.程序现象

        OLED显示Cx、Cy、 Cz每秒加一

 4.完整代码

        K210

# Untitled - By: User - 周日 4月 23 2023
import time
from machine import UART #串口库函数
from fpioa_manager import fm # GPIO重定向函数

fm.register(18, fm.fpioa.UART1_TX, force=True)
uart_A = UART(UART.UART1, 115200, 8, 0, 1, timeout=1000, read_buf_len=4096)


def sending_data(x,y,z):
    FH = bytearray([0x2C,0x12,x,y,z,0x5B])
    uart_A.write(FH);

Cx = 0
Cy = 0
Cz = 0

while True:

    Cx+=1;
    Cy+=1;
    Cz+=1;
    sending_data(Cx,Cy,Cz)
    print("Cx:",Cx,"Cy",Cy,"Cz:",Cz)
    time.sleep_ms(1000)

        STM32

k210与stm32通信icon-default.png?t=N3I4https://gitee.com/AD123zsg/electronic-game-code/tree/486edcd7466f0e19a2ecc559c43238f8af6af34b/%E4%B8%BB%E6%8E%A7/C8T6/k210%E4%B8%8Estm32%E9%80%9A%E4%BF%A1

5.总结

        目前已经讲述了 STM32驱动A4950、 K210的简单PID循迹,但要做出一辆循迹小车还是不够的,还需要PID速度环去调节小车的速度,才能完成一个完整的循迹小车,有时间我会更新后面的代码。

变优秀吧
关注 关注
  • 136
    点赞
  • 978
    收藏
    觉得还不错? 一键收藏
  • 39
    评论
STM32+K210项目】基于K210智能人脸识别+车牌识别系统(完整工程资料源码)
08-05 5311
随着时代的进步和科技的迅猛发展,人们对居住安全的重视程度不断提升,对安全防范系统的需求也日益增强。在安防系统中,门禁系统占据着重要的位置。传统的门禁控制方式主要依靠钥匙、密码和门禁卡等,这些方式易于被破解和复制,安全性较低。然而,近年来,生物识别技术的迅速发展和成熟,为解决这一问题提供了新的方案。生物识别技术具备便携性、非易失性、不易遗忘以及难以盗用等优点,逐渐被引入到门禁系统中。传统的小区门禁系统往往依赖人工管理,存在一定的局限性,难以满足用户多样化的需求,也浪费了人力资源。
stm32K210/openmv串口通信+源码
05-13
stm32串口通信入门 stm32K210/openmv串口通信+源码 stm32端代码 -> stm32串口调试.zip k210端代码 -> k210.py openmv端代码 -> openmv.py stm32端 引脚定义: 四脚I2C OLED: SCL -> B12 SDA -> B13 串口1: TX->A9 RX->A10 波特率9600 功能: 接收数据并显示在OLED上 k210端 引脚定义: 串口1: TX-> 15 RX-> 16 波特率9600 功能: 交替发送a,b字符; openmv端 引脚定义: 串口3: TX-> P4 RX-> P5 波特率9600 功能: 交替发送a,b字符; 适用场景: stm32k210,openmv通信
K210stm32串口通信
lml1781978327的博客
07-31 2247
补上一篇文章的漏洞,这章讲一下k210stm32串口通信其实openmv和k210通信代码是一样的。
K210 UART串口通信介绍与 STM32通信
嗨咯!这里是三马分享家的博客,欢迎你的到来
01-30 4492
K210 UART串口通信介绍和K210STM32串口通信
第八章 K210(openMV)与STM32 通信教程
最新发布
m0_73823991的博客
10-10 1215
K210(openMV)与STM32 通信教程。
K210学习笔记(三) K210STM32进行串口通信K210发STM收
热门推荐
qq_45138815的博客
04-25 2万+
文章目录前言一、以/r/n为结尾二、K210端代码三、STM32端3.1 main函数四、测试结果4.1当收到1时4.2当收到2时总结 前言 前面我们讲了STM32K210发数据,大家可以看看这篇。 K210学习笔记(二) K210STM32进行串口通信K210收,STM32发 那么今天我们来讲一下K210STM32发数据。 硬件平台:STM32F103ZET6正点原子用的也是正点原子的串口例程 ,K210 M1N DOCK 软件平台:keil5 ,maixPython IDE 接线: S
k210stm32的串口通讯
m0_75121878的博客
08-26 2487
stm32k210的串口通讯
电赛备赛日记(一):K210STM32串口通信
qq_54152756的博客
03-29 9698
电赛备赛日记(一):K210STM32通信
K210STM32之间的通信
weixin_52385589的博客
08-24 5641
K210STM32之间使用串口进行通信
K210STM32通信(串口通信)
weixin_51789234的博客
03-28 1万+
由于需要做比赛时需要单片机STM32之间进行通信,经过查阅资料终于把它搞定,所以写了这篇博客,希望能帮到有需要的同学。
基于stm32K210,openmv串口通信
11-05
文件说明: stm32端代码 -> stm32串口调试.zip k210端代码 -> k210.py openmv端代码 -> openmv.py stm32端 引脚定义: 四脚I2C OLED: SCL -> B12 SDA -> B13 串口1: TX->A9 RX->A10 波特率9600 功能: 接收数据并显示在OLED上 k210端 引脚定义: 串口1: TX-> 15 RX-> 16 波特率9600 功能: 交替发送a,b字符; openmv端 引脚定义: 串口3: TX-> P4 RX-> P5 波特率9600 功能: 交替发送a,b字符; 适用场景: stm32k210,openmv通信 视频链接
STM32+K210+0.96OLED代码
07-26
STM32+亚博K210手写数字识别 ... 由K210识别手写数字,通过K210STM32串口通信,将识别到的手写数字传回STM32,最后由OLED显示 接线方式: STM32与OLED:B8-SCL;B9:SDA STM32K210:A2 - Tx;A3 - Rx
stm32k210串口通信
07-25
stm32k210之间的串口通信可以通过使用UART(通用异步收发器)来实现。在stm32的代码中,可以使用USART1_IRQHandler函数来处理串口中断,通过判断接收数据寄存器是否非空来接收数据,并通过发送数据寄存器发送数据...
stm32k210串口通信乱码
07-25
引用\[1\]:在进行stm32k210串口通信时,有一些常见的问题可能导致乱码。首先,需要确保正确配置映射管脚,以使得RX和TX能够正确连接。如果自己映射使用,可能会导致乱码和无法获取数据。因此,建议查看K210的原理...
K210stm32串口通信(stm32端)
qq_35452794的博客
04-01 6819
引言:上次的串口通信说明只附带了K210端,在之前的考虑中一直认为需要用到打包函数,其实根本不用,只用最简单最基本的配置就行了。今天就提供一下STM32端的源码和解释。 正文: 硬件需求:杜邦线,单片机(STM32),K210。只需要将STM32的RX和K210的TX,STM32的TX和K210的RX分别用杜邦线连接。然后STM32K210共同接GND。 软件:给K210上电,STM32上电之后STM32端代码: ...
一文解决K210STM32串口通信问题
shiwen233的博客
07-17 732
STM32的代码可以直接拿江科大9-5的代码(点这里)来用,为了使本文尽量浅显易懂,我的K210串口代码直接与之匹配。等你们弄懂了这个案例中的具体原理后就可以自定义自己的收发协议了。
K210学习笔记(二) K210STM32进行串口通信K210收,STM32
qq_45138815的博客
04-20 1万+
文章目录前言一、STM32端二、K210测试结果 前言 想用STM32通过串口给K210发数据,并在屏幕上显示,看了好几篇博客,终于搞通了,大家感兴趣也可以看看。 K210学习笔记(一) K210STM32串口通信相关 接线,STM32的串口引脚比较固定,而K210就牛比了,任意映射,懒人福音。这里我找了两个没有被复用的IO,IO9和IO10 STM32 K210 GND GND PA10(RXD) IO10(TXD) PA9(TXD) IO9(RXD) 一、STM32端 我
亚博K210视觉模块与stm32f103c8t6最小系统串口通信
qq_63288936的博客
09-24 4094
实现亚博k210视觉模块与stm32f103c8t6最小系统进行串口通信[附代码]
k210stm32通讯,人脸识别
07-15
K210是一款由海思公司设计的嵌入式处理器,主要用于华为的智能设备如摄像头模组,而STM32是一系列广泛应用的32位微控制器,常用于物联网(IoT)、工业控制等领域。 如果要在K210STM32之间进行通讯,一种常见的做法是通过UART(通用异步收发器)、SPI或者I2C接口进行数据传输。首先,需要在各自的系统中设置相应的驱动程序来初始化通信,并配置好数据帧格式。然后,在发送端,K210可以将人脸数据打包成适合这些通信协议的数据包发送;在接收端,STM32接收到数据后解析并处理,可能涉及到人脸图像的解码以及人脸识别算法的应用。 对于人脸识别部分,通常STM32负责实时采集图像并通过连接的K210处理。K210由于其强大的计算能力,可以运行复杂的人脸识别模型,比如深度学习算法(如卷积神经网络CNN),对抓取到的人脸图片进行特征提取、比对和识别。识别结果再返回给STM32进行进一步的操作,例如控制设备响应或者存储记录等。
写文章

热门文章

  • STM32与K210串口通信 29176
  • k210的简单PID巡线 22949
  • 基于STM32F103的PWM电机驱动A4950 10599
  • STM32串口接收正点原子MS53L1M激光测距模块数据 3998
  • K210串口接收数据包 2074

最新评论

  • k210的简单PID巡线

    2301_80282433: 32的代码都没写你怎么驱动电机表情包

  • STM32与K210串口通信

    sakura 7_7: 我的UART为什么只进了一次中断

  • STM32与K210串口通信

    吃河北VS看: 主函数或者Serial.h文件里面加上extern uint8_t Cx,Cy,Cz。这里估计加到.h文件里面了,主文件没有,会报错

  • STM32与K210串口通信

    2301_76779890: 哥哥,能发妹妹一个完整的工程吗?妹妹不会整合

  • STM32与K210串口通信

    2301_76779890: 希望直接发个工程最好

大家在看

  • VidEgoThink:评估具身智能以自我中心的视频理解能力 509
  • P21 神经网络-搭建小实战和序列Sequential的使用
  • P22 神经网络-损失函数Loss Functions与反向传播backward 26

最新文章

  • K210串口接收数据包
  • STM32串口接收正点原子MS53L1M激光测距模块数据
  • k210的简单PID巡线
2023年5篇

目录

目录

评论 39
添加红包

请填写红包祝福语或标题

红包个数最小为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 网站制作 网站优化