Docs

Micro-controllers, wireless transmission and database

Head

Continues Servo Motor with Blue Pill using STM32CubeIDE

Prerequisites

This project assumes you have already installed STM32CubeIDE. You need to have previously done a basic blink sketch with blue-pill using STM32CubeIDE. I have made a complete video from installing STM32CubeIDE to LED blink program. You can watch it by clicking this link. https://www.youtube.com/watch?v=kXg467nVd_A

Wiring Diagram

Diagram1

Image1

Diagram2

Image2

Image3

STM32CubeIDE Settings

Click Timer → Click TIM2 →

Clock Source set to Internal Clock

Channel2 set to PWM Generation CH2

Configuration → Parameter Settings →

Prescaler set to 16-1

Counter Period 10000

Additional code on top of STM32CubeIDE generated code

  /* USER CODE BEGIN 2 */
  HAL_TIM_PWM_Start(&htim2, TIM_CHANNEL_2);
  /* USER CODE END 2 */

  /* USER CODE BEGIN WHILE */
  while (1)
  {
    __HAL_TIM_SET_COMPARE(&htim2,TIM_CHANNEL_2, 850);
    HAL_Delay(2000);
    __HAL_TIM_SET_COMPARE(&htim2,TIM_CHANNEL_2, 950);
    HAL_Delay(2000);
    __HAL_TIM_SET_COMPARE(&htim2,TIM_CHANNEL_2, 1050);
    HAL_Delay(2000);
    __HAL_TIM_SET_COMPARE(&htim2,TIM_CHANNEL_2, 1250);
    HAL_Delay(2000);
    __HAL_TIM_SET_COMPARE(&htim2,TIM_CHANNEL_2, 750);
    HAL_Delay(1000);
    __HAL_TIM_SET_COMPARE(&htim2,TIM_CHANNEL_2, 650);
    HAL_Delay(2000);
    __HAL_TIM_SET_COMPARE(&htim2,TIM_CHANNEL_2, 550);
    HAL_Delay(2000);
    __HAL_TIM_SET_COMPARE(&htim2,TIM_CHANNEL_2, 450);
    HAL_Delay(2000);
    __HAL_TIM_SET_COMPARE(&htim2,TIM_CHANNEL_2, 250);
    HAL_Delay(2000);
    __HAL_TIM_SET_COMPARE(&htim2,TIM_CHANNEL_2, 750);
    HAL_Delay(1000);
    /* USER CODE END WHILE */

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