舵机驱动---HAL库

一、HAL库

Servo.c

#include 
#include 

uint16_t pwm_angle(uint8_t angle)
{
	return angle*2000/180+500;
}

void SET_angle_1(uint8_t angle)
{
		__HAL_TIM_SetCompare(&htim2,TIM_CHANNEL_3,pwm_angle(angle));
}

void SET_angle_2(uint16_t angle)
{
		__HAL_TIM_SetCompare(&htim2,TIM_CHANNEL_4,pwm_angle(angle));
}

void Servo_init()
{
	HAL_TIM_PWM_Start(&htim2,TIM_CHANNEL_3);
	HAL_TIM_PWM_Start(&htim2,TIM_CHANNEL_4);
}

Servo.h

#ifndef __SERVO_H
#define __SERVO_H

void SET_angle_1(uint8_t angle);
void SET_angle_2(uint16_t angle);
void Servo_init();

#endif


二、README

舵机的tim时钟周期为20ms。
更具占空比0~100,变化角度


将角度转换成pwm
uint16_t pwm_angle(uint8_t angle)
{
	return angle*2000/180+500;
}

你可能感兴趣的:(stm32,嵌入式硬件,单片机)