目录
前言
本教程基于stm32f103c8t6最小系统板,hal库开发。
操作简单,讲解直接清楚,旨在让大家少走弯路。
1. 舵机控制原理
舵机的控制一般需要一个20ms左右的时基脉冲,该脉冲的高电平部分一般为0.5ms-2.5ms范围内的角度控制脉冲部分,总间隔为2ms。以180度角度伺服为例,那么对应的控制关系是这样的:
2. cubmx配置
这里使用定时器2的通道1产生PWM来控制舵机,将定时器2的周期配置为720*2000/72000000=0.02s=20ms,初始占空比为0;
3. keil5代码
/* USER CODE BEGIN 2 */
HAL_TIM_PWM_Start(&htim2,TIM_CHANNEL_1);//***定时器初始化
/* USER CODE END 2 */
/* USER CODE BEGIN WHILE */
while (1)
{
int i=1000; //循环时间间隔1s
__HAL_TIM_SET_COMPARE(&htim2,TIM_CHANNEL_1,50); //相当于一个周期内(20ms)有0.5ms高脉冲
HAL_Delay(i);
__HAL_TIM_SET_COMPARE(&htim2,TIM_CHANNEL_1,250); //相当于一个周期内(20ms)有2.5ms高脉冲
HAL_Delay(i);
/* USER CODE END WHILE */
可以通过修改句柄__HAL_TIM_SET_COMPARE(&htim2,TIM_CHANNEL_1,250)里的参数可以实现舵机角度控制。
以上就是STM32驱动SG90舵机的HAL库版本的代码,全部按我这个操作100%一次驱动舵机。
码字不易,希望喜欢的小伙伴别忘了点赞+收藏+关注,你们的肯定就是我创作的动力。
欢迎大家积极交流,本文未经允许谢绝转载!!!