Skip to content

time输出PWM来控制LED呼吸灯

1. 硬件连接

因为本身接LED灯的PIN,不是定时器的PIN,所以需要将LED 连接到定时器的PIN上去,从而控制LED的亮灭。 如图所示,将PC13 和PA6 短接 alt text

2. CubeMX生成代码

就配置了一个定时器,作为PWM输出

alt text

3. 编写代码

代码中就是不断的去配置占空比的参数,灯的亮度也随占空比的变化而变化。

C
/**
  * @brief  The application entry point.
  * @retval int
  */
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_TIM3_Init();
  /* USER CODE BEGIN 2 */
  HAL_TIM_PWM_Start(&htim3,TIM_CHANNEL_1);
  int Value =0;
  /* USER CODE END 2 */

  /* Infinite loop */
  /* USER CODE BEGIN WHILE */
  while (1)
  {
	  while(Value<500)
	  {
			Value ++;
		  __HAL_TIM_SetCompare(&htim3,TIM_CHANNEL_1,Value);
		  HAL_Delay(1);
	  }
	  
		while(Value)
	  {
			Value --;
		  __HAL_TIM_SetCompare(&htim3,TIM_CHANNEL_1,Value);
		  HAL_Delay(1);
	  }
	  HAL_Delay(200);
    /* USER CODE END WHILE */

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

4. 后记

这算是一个引子,后续电机控制也有用到PWM的地方,可以参考这个地方的代码来进行编写。