stm32标准库和HAL库的对比学习5.《学习pwm输出和驱动舵机》

本文介绍了STM32单片机使用定时器OC功能实现PWM的基本原理,包括CRR输入/捕获寄存器的作用,以及如何通过调整CNT和CRR设置PWM的频率和占空比。作者还提供了使用标准库和HAL库配置PWM输出的示例,以及如何驱动舵机以控制电机角度。
摘要由CSDN通过智能技术生成

本人是大一的学生,学习了一段时间的stm32,此系列博客为个人的学习笔记,方便个人复习,如有错误或问题,非常非常欢迎大家来大力指正。

本篇默认有51单片机基础,所以pwm原理就不再赘述

与51单片机不同,stm32实现pwm的方法是通过定时器的“输出比较output compare(简称oc,不是超频)”来实现的。通过CNT(计时单元)与CRR(输入/捕获寄存器)的比较实现电平的反转。

先说CRR输入/捕获寄存器,顾名思义,他是有输入和输出的功能,输出功能就是输出pwm,输入功能就是对输入的pwm进行识别。而想要驱动舵机,就要用pwm输出来控制。

先讲pwm输出

stm32实现pwm的方法是CNT计数,然后和CRR比较,当CNT=CCR时,对电平产生变化。然后当CNT=ARR时,触发计数器中断,CNT置0,恢复以前的电平,重新计数。这样就是现实电平在一个周期内的有规律变化,通过调整CRR,就可以调整pwm的占空比。

CNT=CRR的电平变化由模式所决定,下面程序说

PWM freq=ck psc(单片机频率)/(psc+1)/(ARR+1)
pwm占空比 duty=ccr/(arr+1)
pwm分辨率 reso=1/(arr+1)

②标准库的代码实现

pwm的基本结构如图,要用到上节定时器的功能,所以要开启RCC时钟,定义时基单元,配置CCR。前两部像上一节一样配就行,但是不用设定NVIC中断。而定义CCR首先要看TIM_OCInitTypeDef structure结构体中所要定义的东西。

有很多都是高级定时器要用的,我们只需要写出我们需要用的进行,看下面代码

输出极性可以理解为“是否要将电平信号反转”

下面4个都是输出极性的定义,死区生成是防止互补输出时两个电路一起导通产生损耗,延迟下一个端口导通的时间

TIM_ocmode中有几个模式,配置输出比较控制器,当CCR=CNT时输出不同形式的电平

第一个为保持原状态

有效电平和无效电平就可以看作高电平和低电平,电平反转可以输出一个固定平衡率的波形

强制电平和第一个差不多,就是暂停后输出特定的电平

pwm模式是可以输出频率可变的波形.

void TIM_CtrlPWMOutputs(TIM_TypeDef* TIMx, FunctionalState NewState);高级寄存器要用这条使能。

第一步开启RCC,定义好TIM时基单元

	RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM2,ENABLE);
	RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA, ENABLE);		//开启GPIOA的时钟
	
	GPIO_InitTypeDef GPIO_InitStructure;
	GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP;//因为一般的GPIO控制权是在寄存器上的,看原理图,OC1通道要接到引脚才能输出pwm,所以要用复用推挽,让引脚接入片上外设
	GPIO_InitStructure.GPIO_Pin = GPIO_Pin_0;
	GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
	GPIO_Init(GPIOA, &GPIO_InitStructure);						

	TIM_InternalClockConfig(TIM2);
	TIM_TimeBaseInitTypeDef TIM_TimeBaseInitStructure;
	TIM_TimeBaseInitStructure.TIM_Prescaler=720-1;         //psc预分频器
    TIM_TimeBaseInitStructure.TIM_CounterMode=TIM_CounterMode_Up;//计数器模式       

    TIM_TimeBaseInitStructure.TIM_Period=100-1;            //ARR自动重装器的初始值(周期)

    TIM_TimeBaseInitStructure.TIM_ClockDivision=TIM_CKD_DIV1;     //滤波分频

    TIM_TimeBaseInitStructure.TIM_RepetitionCounter=0;  //重复计数器
                                
	TIM_TimeBaseInit(TIM2,&TIM_TimeBaseInitStructure);

第二步用结构体定义OC

	TIM_OCInitTypeDef TIM_OCInitStructure;
	TIM_OCStructInit(&TIM_OCInitStructure);//注意事项,初始值赋值,防止未定义的函数产生错误
	TIM_OCInitStructure.TIM_OCMode=TIM_OCMode_PWM1;//配置OC的输出模式
	TIM_OCInitStructure.TIM_OCPolarity=TIM_OCPolarity_High;//比较极性
	TIM_OCInitStructure.TIM_OutputState=TIM_OutputState_Enable;//输出使能
	TIM_OCInitStructure.TIM_Pulse=50 ;//ccr的值
	TIM_OC1Init(TIM2, &TIM_OCInitStructure);//注意OC后面是通道编号
	TIM_Cmd(TIM2, ENABLE);

PWM已经定义完毕。

实现pwm的占空比变化不能像51单片机这样写,要用到专门改变占空比的

 TIM_SetCompare1(TIM2, num);函数来改变CCR的值,从而改变占空比。

改变num的值,就是改变CCR,从而输出PWM。用上面的公式计算。

100hz:ARR:100-1.PSC:720-1

50hz(sg50):ARR:20000-1,PSC:72-1.接上对应接上通道的引脚,就可以输出pwm信号

③HAL库的实现:

我们可以按照标准库的定义开启选项

①开启RCC

②开启TIM,打开内部时钟,选择通道和输出模式,打开NVIC中断

③配置OC(跟着标准库数据配置就好)

然后生成代码

写上下面两条代码

HAL_TIM_Base_Init(&htim2);//初始化tim2

HAL_TIM_PWM_Start(&htim2,TIM_CHANNEL_1);//打开pwm输出

下面那条是比较输出的代码

	__HAL_TIM_SetCompare(&htim2,TIM_CHANNEL_1,CCR的值);
和TIM_SetCompare1(TIM2, num);一样

驱动舵机:

根据上面来输出合适的pwm使电机转动特定的角度,通过上面几条公式,进行计算即可。

        重映射复用端口的小知识:要看手册找到相应的复用端口,先开启RCC时钟(将gpio换为AFIO就可以)然后用gpio_pinremapconfig();来重映射引脚

没有格调的猫
关注 关注
  • 23
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
STM32-SPI方式驱动SD卡,包含标准库HAL库、LL库三种另加HAL库的FATFS代码,共4个工程
03-06
STM32驱动SD卡,使用SPI方式,压缩包内包含标准库、LL库、HAL库三种库的SPI驱动SD卡代码外加HAL库版本的FatFS的代码,作者使用的是正点原子MiniSTM32开发板V2,STM32RBT6那一款,32G的mircosd卡加卡托,已经测试通过!
STM32C8T6使用HAL库驱动多路18B20,GY906,2812LED,舵机
07-18
在这个项目中,开发者使用了HAL库驱动多路传感器和执行器,包括18B20温度传感器、GY906传感器、2812 LED灯串以及舵机。以下是对每个组件的详细说明: 1. **18B20温度传感器**:DS18B20是一种单线数字温度传感器,...
TIM定时器_CNT_ARR_PSC_CRR
qq_52769953的博客
03-25 7334
TIM时钟频率72M PSC=71,TIM时钟经PSC分频后得CNT计数器时钟频率,72M/(71+1)=1MHz. CNT从0计数到ARR后产生中断,计数器清零开始重新计数.ARR即周期 CCR:库函数将Pulse写入CCR寄存器,CCR输出比较寄存器与CNT比较,当CNT小于设置得值输出高电平,否则输出高电平。 以上为我个人得理解 有不对的地方欢迎大家指正补充 ...
STM32标准库HAL库的对比
最新发布
砂御科技
09-16 229
最近看了几个开发板厂的STM32F1系列的工程代码。发现关于时钟配置单独手写了一个,对于用惯了标准库的产生一个疑问,时钟配置不都自带的文件里配置好了,非特殊甚至直接拿来用就行。为什么要单独手写了一个呢?从启动文件往下捋,发现HAL库自带的system_f1xx.c里还真有时钟配置函数,头文件也声明了。但是sym32f1xx.h没有加入.....原因未知。好吧,明白了咋回事,觉得需要先捋一捋文件的关系,HAL库文件关系不用对比了。重要是对比一下CMSIS里的文件关系。简单的进行一下对比吧。
STM32初学者,到底选标准库还是HAL库
安迪西_嵌入式攻城狮
08-08 4975
如何选择STM32标准库HAL库
STM32之HAL、LL和标准库
06-15 6858
我们在进行STM32开发的时候,使用寄存器进行开发的终究是少数,大多数人还是习惯用库函数进行开发。到目前为止,有标准外设库、HAL库、LL库 三种。本文将分别介绍以下三种库,便于大家区分。
STM32几种库的比较,HAL、标准库、LL库!
Kyle_Chan_zMH的博客
04-17 5323
HAL库适合快速开发和易用性要求较高的应用,LL库适合对性能和实时性要求较高的应用,而标准库适合通用的数据处理和算法实现。其中包括HAL库、LL库和标准库(C标准库)。当涉及到STM32微控制器的软件开发时,选择合适的库取决于项目的需求和开发者的偏好。例子:假设我们要编写一个程序,控制STM32微控制器上的LED灯,同时读取来自外部温度传感器的数据,并通过串口发送到计算机上进行显示。例子:假设我们要编写一个程序,控制STM32微控制器上的电机,以特定的时序和延迟进行旋转,并实时监测电机的位置和速度。
stm32是用标准库还是hal库?
CodeAllen嵌入式
03-13 852
HAL库则是STMicroelectronics为了提供更高级别的抽象和简化开发而引入的库。HAL库基于标准库,并提供了一组API函数,将底层硬件操作抽象为高级函数调用。我大学几年一直都是使用标准库,然后17年毕业第一份工作转为HAL库,主要也是公司需求没办法。然后之后的数年我都是建议转HAL库,并不是这个库有多好,相反小问题很多,但是有一个,这是官方一直在开发维护的库,如果你是初学或者成熟的产品,这点很重要。而且可以预见的是,为了芯片会限制使用标准库,到那时候在转HAL就有点落伍了,而且经验上也吃亏。
(HAL库学习7)STM32CubeMX HAL库 PWM输出
01-06
这一节是设置STM32单片机定时器PWM输出驱动舵机 pwm输出依靠的是定时器通道,stm32除了定时器6,7,都有输出pwm的通道,高级定时器通道数还要多于普通定时器。定时器的核心特质就是两个参数:频率和占空比,这里先...
stm32f1hal库sg90舵机的控制
04-11
STM32F1HAL库中,舵机控制主要涉及定时器(TIM)和GPIO(通用输入输出)两个模块。首先,我们需要配置一个定时器作为PWM发生器,设置合适的预分频器和自动重载值以得到所需的PWM周期。然后,通过修改定时器的比较...
STM32CubeMX配置输出PWM信号控制多路舵机(HAL)
05-29
本文件使用标准库的形式,使用TIM3输出四路PWM信号,可控制四路舵机,如需要更多路的通道,可以以本文件为模板启用其他定时器输出更多路PWM信号,以实现控制更多舵机转动的目的。 将本文件解压后文件中包含STM32...
STM32HAL库 PWM驱动舵机
01-28
实验目的: 使用按键控制PWM驱动舵机 实验器材: STM32F103C8T6 oled 硬件资源: SCL --- PA7 SDA --- PB9 按键 --- PB1 舵机 --- PA1
stm32CubeMX,配合Keil,使用HAL库(或标准库)方式进行串口通信
weixin_68811361的博客
10-28 5686
今天我们学习STM32CubeMX串口的操作,以及HAL库串口的配置,我们会详细的讲解各个模块的使用和具体功能,并且基于HAL库实现Printf函数功能重定向,USART中断接收,本系列教程将HAL库STM32CubeMX结合在一起讲解,使您可以更快速的学会各个模块的使用
STM32新手扫盲】常用库比较及使用建议(HAL库标准库、LL库)
Exun Blog
08-20 4017
本文旨在为STM32新手开发者提供一次全面的库函数扫盲。文章深入比较了STM32开发中常用的三种库:HAL库标准库与LL库。通过对每种库的特点、优势以及适用场景进行详细解析,帮助开发者在实际项目中做出更加明智的选择。同时结合具体的使用案例,进一步阐述了这三种库在实际开发中的应用,提升开发者的实战能力和项目开发效率。
使用标准库HAL库STM32单片机进行串口通信/解决因例程为HAL库的传感器,而其他模块都是标准库,需要将数据用串口传送给标准库的单片机的相关问题
Kissmeal的博客
02-04 1877
本文着重解决一个大工程中,某些传感器的例程是HAL库的,而其他模块(或算法)都是标准库,导致难以移植的问题。本文的解决方法是:使用一片单片机用HAL库(CubeMX)配置例程,然后用串口将传感器数据传给标准库进行处理。
STM32 DMA工作原理及编程示例(HAL库/标准库)
qq_52907930的博客
11-05 1296
本文具体介绍了STM32 DMA的框图、基本结构、编程实例。
STM32标准库HAL库对照学习教程特别篇--GPIO详讲
修成真的博客
10-25 5290
STM32】SMT32标准库HAL库对照学习教程特别篇--GPIO详讲一、前言二、GPIO简介1、定义2、分类3、复用三、GPIO工作模式1、输入模式2、输出模式3、输出速度四、GPIO图形分析1、GPIO的基本构成2、GPIO八种模式分析五、HAL库标准库的GPIO配置结构体对比1、标准库定义2、HAL库定义 一、前言 本篇内容是的STM32GPIO的详讲,是为库函数配置做铺垫,本篇以STM32F103ZE为例,详细对GPIO进行讲解。 二、GPIO简介 1、定义 GPIO英文全称general p
STM32标准库HAL库对照学习教程零--开发环境的搭建
修成真的博客
05-03 3872
STM32标准库HAL库对照学习教程零--开发环境的搭建一、keil5的下载与安装1、keil5的下载2、keil5的安装3、keil5的破译4、keil5的软件包安装二、STM32Cube 的下载与安装1、JAVA 运行环境安装2、cubemx安装3、安装相关芯片HAL库 一、keil5的下载与安装 1、keil5的下载 下载 Keil5 方法:进入 https://www.keil.com/网址 1.1 点击 Downloads,如图所示: 1.2 然后点击 MDK-Arm,如图所示: 1.
STM32标准库HAL库对照学习教程三--使用库函数配置GPIO点亮LED灯
修成真的博客
11-10 9000
STM32标准库HAL库对照学习教程三--使用库函数配置GPIO点亮LED灯一、前言二、准备工作三、LED硬件电路四、使用标准库工程点亮LED灯1、GPIO初始化一般步骤2、GPIO标准库函数介绍3、使用库函数编写程序使LED灯闪烁操作4、实验效果五、使用cubemx生成HAL库工程点亮LED灯1、cubemx配置生成工程2、HAL库控制函数介绍3、编写使LED灯闪烁的程序4、实验效果 一、前言 本章主要介绍如何使用标准库工程与cubemx配置工程使LED灯闪烁,可以直接点击目录看自己想要看的内容,文
HAL库写一个控制舵机程序
04-03
抱歉,作为AI语言模型,我无法提供HAL库相关的代码。不过,以下是控制舵机的基本流程: 1. 初始化GPIO口,将其配置为输出模式。 2. 配置定时器,设置PWM波形的周期和占空比。 3. 在主循环中,通过改变占空比来控制舵机转动的角度。 下面是一个简单的控制舵机的代码示例: ``` #include "stm32f4xx.h" #define SERVO_GPIO_PORT GPIOA #define SERVO_GPIO_PIN GPIO_Pin_0 #define SERVO_TIM TIM2 void GPIO_Configuration(void) { GPIO_InitTypeDef GPIO_InitStructure; RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOA, ENABLE); GPIO_InitStructure.GPIO_Pin = SERVO_GPIO_PIN; GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF; GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; GPIO_InitStructure.GPIO_OType = GPIO_OType_PP; GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_NOPULL; GPIO_Init(SERVO_GPIO_PORT, &GPIO_InitStructure); GPIO_PinAFConfig(SERVO_GPIO_PORT, GPIO_PinSource0, GPIO_AF_TIM2); } void TIM_Configuration(void) { TIM_TimeBaseInitTypeDef TIM_TimeBaseStructure; TIM_OCInitTypeDef TIM_OCInitStructure; RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM2, ENABLE); TIM_TimeBaseStructure.TIM_Period = 20000 - 1; TIM_TimeBaseStructure.TIM_Prescaler = 84 - 1; TIM_TimeBaseStructure.TIM_ClockDivision = TIM_CKD_DIV1; TIM_TimeBaseStructure.TIM_CounterMode = TIM_CounterMode_Up; TIM_TimeBaseInit(SERVO_TIM, &TIM_TimeBaseStructure); TIM_OCInitStructure.TIM_OCMode = TIM_OCMode_PWM1; TIM_OCInitStructure.TIM_OutputState = TIM_OutputState_Enable; TIM_OCInitStructure.TIM_Pulse = 1500; TIM_OCInitStructure.TIM_OCPolarity = TIM_OCPolarity_High; TIM_OC1Init(SERVO_TIM, &TIM_OCInitStructure); TIM_Cmd(SERVO_TIM, ENABLE); TIM_CtrlPWMOutputs(SERVO_TIM, ENABLE); } int main(void) { GPIO_Configuration(); TIM_Configuration(); while (1) { TIM_SetCompare1(SERVO_TIM, 1000); // 舵机转到最左侧 delay_ms(2000); TIM_SetCompare1(SERVO_TIM, 1500); // 舵机回到中间位置 delay_ms(2000); TIM_SetCompare1(SERVO_TIM, 2000); // 舵机转到最右侧 delay_ms(2000); } } ``` 在这个例子中,我们使用了TIM2定时器和PA0口控制舵机的转动。其中,TIM2的PWM波形周期为20ms,占空比为5%~10%之间,对应舵机转动角度为0°~180°。通过改变占空比,我们可以控制舵机的转动角度。
写文章

热门文章

  • stm32标准库和HAL库的对比学习3.《学习外部中断EXIT和应用》 1195
  • stm32HAL库学习电控知识笔记《学习can通信协议和简易驱动GM6020电机》 1102
  • stm32标准库和HAL库的对比学习4.《学习时钟源,时钟树与内部时钟和外部时钟的用法》 1076
  • stm32标准库和HAL库的对比学习5.《学习pwm输出和驱动舵机》 921
  • stm32标准库和HAL库的对比学习8.《学习spi通信协议,软件与硬件输出》 791

最新评论

  • stm32HAL库学习电控知识笔记《学习can通信协议和简易驱动GM6020电机》

    Coldfall223: 你好能不能发个工程文件参考一下

  • stm32HAL库学习电控知识笔记《学习can通信协议和简易驱动GM6020电机》

    CSDN-Ada助手: 恭喜您写了第10篇博客!您对于学习STM32HAL库和电控知识的热情令人钦佩。希望您可以继续分享关于CAN通信协议和GM6020电机驱动的学习心得,或者可以考虑加入一些实际案例或者应用场景的分析,这样可以更好地帮助读者理解和应用这些知识。期待您更多的创作,谢谢您的分享!

  • stm32标准库和HAL库的对比学习8.《学习spi通信协议,软件与硬件输出》

    CSDN-Ada助手: 恭喜你写了第9篇博客!看到你在比较stm32标准库和HAL库的对比学习,并深入学习了spi通信协议,软件与硬件输出,真是让人钦佩。不过,我想提醒一下,在写作过程中,可以多加一些实际应用的例子,让读者更容易理解。希望你在接下来的创作中能够继续努力,加油!

  • stm32标准库和HAL库的对比学习7.《学习iic(i2c)通信协议,软件与硬件输出》

    CSDN-Ada助手: 恭喜作者第7篇博客的发布!学习iic(i2c)通信协议是一个很有意义的主题,谢谢你分享这些知识。希望你可以继续坚持创作,让更多的人受益。下一步,我建议你可以尝试探讨一些在实际项目中应用iic通信协议的案例,或者深入分析一些iic通信中的常见问题和解决方法。期待你的更多精彩内容!

  • stm32标准库和HAL库的对比学习5.《学习pwm输出和驱动舵机》

    CSDN-Ada助手: 恭喜您写了第四篇博客!标题看起来非常有趣,我相信学习pwm输出和驱动舵机一定是一个很有意义的主题。不仅仅是标题很吸引人,我也期待着能够读到您对stm32标准库和HAL库的对比学习的深入分析。在评论中,我想提供一些建议,希望对您的下一步创作有所帮助。首先,您可以分享一些与pwm输出和驱动舵机相关的实际应用案例,这将使读者更容易理解和应用相关知识。其次,您可以提供一些常见问题和解决方案,这将对初学者非常有帮助。最后,您可以考虑与读者互动,鼓励他们在评论区分享自己的经验和疑问,这将促进更深入的讨论。再次恭喜您,期待您未来更多优质内容的分享! 如何快速涨粉,请看该博主的分享:https://hope-wisdom.blog.csdn.net/article/details/130544967?utm_source=csdn_ai_ada_blog_reply5

大家在看

  • JS初学之 AJAX请求方式
  • 【设计模式】11.深入理解 Java 中的观察者模式
  • 精通Java并发锁机制:24种锁技巧+业务锁匹配方案
  • Linux CendOS7安装Oracle11g
  • BERT 模型 – NLP 的解释

最新文章

  • stm32HAL库学习电控知识笔记《学习can通信协议和简易驱动GM6020电机》
  • stm32标准库和HAL库的对比学习8.《学习spi通信协议,软件与硬件输出》
  • stm32标准库和HAL库的对比学习8.《学习adc模数转换器和DMA》
2024年10篇

目录

目录

评论 1
添加红包

请填写红包祝福语或标题

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