【机智云Gokit开发板套件试用体验】之舵机(PWM1)

  • 淘淘追梦
  • LV2工程师
  • |      2015-12-12 10:41:32
  • 浏览量 701
  • 回复:0

1.首先引用一张图描述一下PWM控制舵机的原理,形象生动。此图是论坛一坛友的,不好意思忘了你ID了,借用一下。

【机智云Gokit开发板套件试用体验】之舵机(PWM1)

2.接下来是PWM波的检测,因为S3010的官方频率是100HZ,所以先将PWM调节为100HZ

【机智云Gokit开发板套件试用体验】之舵机(PWM1)

3,。接下来是实验效果图

【机智云Gokit开发板套件试用体验】之舵机(PWM1)

【机智云Gokit开发板套件试用体验】之舵机(PWM1)

4.最后贴出部分程序

#include "stm32f10x.h"

int main(void)

{

	TIM_TimeBaseInitTypeDef		TIM_TimeBaseStructure;

	TIM_OCInitTypeDef  				TIM_OCInitStructure;

    GPIO_InitTypeDef GPIO_InitStructure;



	GPIO_InitStructure.GPIO_Pin = GPIO_Pin_0 | GPIO_Pin_1 ; 

	GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; 

	GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP; 

	GPIO_Init(GPIOA, &GPIO_InitStructure);



	RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA , ENABLE); 

	RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM2, ENABLE);







	TIM_TimeBaseStructure.TIM_Period = 4999;		

	TIM_TimeBaseStructure.TIM_Prescaler = 71;	

	TIM_TimeBaseStructure.TIM_ClockDivision = 0;	

	TIM_TimeBaseStructure.TIM_CounterMode = TIM_CounterMode_Up;		

	TIM_TimeBaseInit(TIM2, &TIM_TimeBaseStructure);

	



	TIM_OCInitStructure.TIM_OCMode = TIM_OCMode_PWM1;

	TIM_OCInitStructure.TIM_OutputState = TIM_OutputState_Enable;

	TIM_OCInitStructure.TIM_Pulse = 0;

	TIM_OCInitStructure.TIM_OCPolarity = TIM_OCPolarity_High;

	TIM_OC1Init(TIM2, &TIM_OCInitStructure);

	TIM_OC1PreloadConfig(TIM2, TIM_OCPreload_Enable);



	TIM_ARRPreloadConfig(TIM2, ENABLE);

	TIM_Cmd(TIM2, ENABLE);

	while (1)

	{			     

	  TIM2->CCR1 = 600;  

  //    TIM2->CCR2 = 000;

	

	}

}

  • 0
  • 收藏
  • 举报
  • 分享
我来回复

登录后可评论,请 登录注册

所有回答 数量:0
x
收藏成功!点击 我的收藏 查看收藏的全部帖子