STM32的SG90舵机驱动

本文介绍了如何使用STM32通过PWM信号驱动SG90舵机。在20ms的时基脉冲中,通过调整高电平时间在0.5ms至2.5ms之间,实现舵机0~180°的角度控制。每个0.5ms增量对应45°转动。提供了一段包含timer.c、timer.h和main.c的参考代码,实现TIM3的重映射到PB5引脚,便于实际操作。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

今天来讲一下如何使用STM32来驱动SG90舵机
舵机:舵机是一种位置(角度)伺服的驱动器,适用那些需要角度不断变化并可以保持的控制系统。舵机只是一种通俗的叫法,其实质是一个伺服马达。
驱动SG90舵机的方法也很简单,利用单片机输出一个PWM信号,一个20ms的时基脉冲,控制高电平时间为0.5ms~2.5ms范围内即可控制舵机在0 ~ 180°转动。从t = 0.5ms开始每增加0.5ms舵机转动角度增加45°。
以下是PWM信号高电平时间和舵机转动角度的关系对应:
t = 0.5ms -------------> 0°
t = 1.0ms -------------> 45°
t = 1.5ms -------------> 90°
t = 2.0ms -------------> 135°
t = 2.5ms -------------> 180°

参考代码如下:
timer.c

//designed by HIT TDD
#include "timer.h"

void TIM3_PWM_Init(void)
{  
	GPIO_InitTypeDef GPIO_InitStructure;
	TIM_TimeBaseInitTypeDef  TIM_TimeBaseStructure;   //初始化定时器
	TIM_OCInitTypeDef  TIM_OCInitStructure;
	

	RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM3, ENABLE);	//使能定时器3时钟
 	RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB  | RCC_APB2Periph_AFIO, ENABLE);  //使能GPIO外设和AFIO复用功能模块时钟
	
	GPIO_PinRemapConfig(GPIO_PartialRemap_TIM3, ENABLE); //Timer3部分重映射  TIM3_CH2->PB5    
 
   //设置该引脚为复用输
评论 16
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值