基于STM32F103C6T6HAL库控制SG90舵机

本文介绍了舵机的工作原理,重点讲解了STM32F103C6T6如何通过配置RCC时钟和定时器PWM来驱动舵机。在程序中,使用HAL库启动定时器并设置不同的占空比,实现舵机0度到180度的角度控制。通过调整定时器的CCR1寄存器值,实现了舵机角度的切换。

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

材料:

(1)stm32f103c6t6

(2)舵机

一、组装

舵机原理:

舵机的控制一般需要一个20ms左右的时基脉冲,该脉冲的高电平部分一般为0.5ms-2.5ms范围内的角度控制脉冲部分,总间隔为2ms。以180度角度伺服为例,那么对应的控制关系是这样的:

0.5ms------------0度;
1.0ms-----------45度;
1.5ms----------90度;
2.0ms-----------135度;
2.5ms-----------180度;

 

二、主要程序

1、STM32CUBEMX配置如下: 

(1) 配置RCC时钟:

 

(2) 时钟的配置:

 

(3) 配置定时器PWM

 

三、程序 

main.c

int main(void)
{
  /* USER CODE BEGIN 1 */
 
  /* USER CODE END 1 */

  /* MCU Configuration--------------------------------------------------------*/

  /* Reset of all peripherals, Initializes the Flash interface and the Systick. */
  HAL_Init();

  /* USER CODE BEGIN Init */
 
  /* USER CODE END Init */

  /* Configure the system clock */
  SystemClock_Config();

  /* USER CODE BEGIN SysInit */
 
  /* USER CODE END SysInit */

  /* Initialize all configured peripherals */
  MX_GPIO_Init();
  MX_TIM1_Init();
  MX_TIM2_Init();
  MX_USART1_UART_Init();
  /* USER CODE BEGIN 2 */
  HAL_TIM_PWM_Start(&htim1,TIM_CHANNEL_1);//定时器初始化
  /* USER CODE END 2 */

  /* Infinite loop */
  /* USER CODE BEGIN WHILE */
	
  while (1){
		
      TIM1->CCR1=250; //20ms有0.5ms高脉冲
      HAL_Delay(1000);//延时一秒

	  TIM1->CCR1=50; //20ms有2.5ms高脉冲
      HAL_Delay(1000);//延时一秒
		
 
    /* USER CODE END WHILE */

    /* USER CODE BEGIN 3 */
  }
  /* USER CODE END 3 */
}

 

 

 

 

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值