目录
这里我采用的是STM32F103C8T6最小系统板,SG-90舵机实现功能。
PWM驱动简介
舵机驱动角度和PWM占空比有关系,具体对应为50--0度 150--90度 250--180度,通过STM32的定时器功能输出PWM波来控制舵机进行转动。
工程配置
时钟选择外部高速时钟
系统映射配置
时钟树设为为72HZ频率,2分频
选择定时器2通道4为PWM输入模式,设置对应引脚
由于我们时钟频率为72HZ,所以预分频为720-1=719,设置装载初值为2000-1=2199,则对应pwm占空比与舵机控制占空比即可对应为50——0度 150——90度 250——180度
代码编写
工程配置完后代码中需开启定时器
/* USER CODE BEGIN 2 */
HAL_TIM_PWM_Start(&htim2,TIM_CHANNEL_4);
/* USER CODE END 2 */
之后封装一个舵机转动度数与PWM占空比对应函数即可
/* USER CODE BEGIN 4 */
void Servo_Control(uint16_t angle) //参数为舵机转动角度 0-180
{
float temp;
temp =angle/9*10+50 ;
__HAL_TIM_SET_COMPARE(&htim2, TIM_CHANNEL_4, (uint16_t )temp);
}
/* USER CODE END 4 */
在While(1)函数中直接使用对应舵机控制函数即可。