STM32L051C8T6 HAL库 使用PWM控制LED灯(呼吸灯效果)

芯片型号: STM32L051C8T6 

      通道 :TIM22_CH2

输出引脚:PA7  

知识回顾,要使用PWM功能,必须要在通用定时器配置才行,基本定时器是没有PWM这个功能的。

      1) 通用定时器(TIM2/3,TIM21/22)

      2) 基本定时器(TIM6/7)

引脚配置

1、STM32CubeMx配置(注:占空比参数不需要填,默认即可)

STM32L051C8T6 HAL库 使用PWM控制LED灯(呼吸灯效果)_第1张图片

STM32L051C8T6 HAL库 使用PWM控制LED灯(呼吸灯效果)_第2张图片

2、main.c文件 代码

/* USER CODE BEGIN 1 */
	uint16_t dutycycle=0;
  /* USER CODE END 1 */



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



 /* USER CODE BEGIN WHILE */
  while (1)
  {
		while(dutycycle<1000)
		{
			dutycycle++;
//			__HAL_TIM_SET_COMPARE(&htim22,TIM_CHANNEL_1,dutycycle); //库操作方式
			__HAL_TIM_SET_COMPARE(&htim22,TIM_CHANNEL_2,dutycycle); //库操作方式
//			TIM22->CCR2 = dutycycle;         //寄存器操作方式
			HAL_Delay(1);
		}
		while(dutycycle)
		{
			dutycycle--;
//			__HAL_TIM_SET_COMPARE(&htim22,TIM_CHANNEL_1,dutycycle); //库操作方式
			__HAL_TIM_SET_COMPARE(&htim22,TIM_CHANNEL_2,dutycycle); //库操作方式
//			TIM22->CCR2 = dutycycle;         //寄存器操作方式
			HAL_Delay(1);
		}
		HAL_Delay(100);
//        HAL_TIM_PWM_Stop(&htim22, TIM_CHANNEL_1);    //这里根据具体情况来定,禁用pwm
//        HAL_TIM_PWM_Stop(&htim22, TIM_CHANNEL_2);    //
    /* USER CODE END WHILE */

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

PWM频率 = 系统时钟32MHZ/32/1000 = 1000HZ

占空比 = 脉宽值(Pulse)/装载值(Period)*100% = 999/1000 * 100% = 99.9%

3、LED呼吸灯效果

代码链接 (注:代码中,漏了配置占空比参数  )    sConfigOC.Pulse = 999;

 

你可能感兴趣的:(stm32单片机开发)