定位器与PWM的LED控制

一、STM32定时器

定时器分类
在这里插入图片描述
功能
在这里插入图片描述

二、脉宽调制pwm

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
PWM工作原理
在这里插入图片描述

三、定时器控制led

(1)实验内容

​ 使用STM32F103的 Tim2~Tim5其一定时器的某一个通道pin,连接一个LED,用定时器计数方式,控制LED以2s的频率周期性地亮-灭。

(2)创建工程

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

(3)Keli程序

在主函数main中写入以下程序。所选led管脚为PA6

 /* USER CODE BEGIN 2 */
  HAL_TIM_Base_Start_IT(&htim2);

  /* USER CODE END 2 */


/* USER CODE BEGIN 4 */
void HAL_TIM_PeriodElapsedCallback(TIM_HandleTypeDef *htim)
{
    static unsigned char ledState = 0;
    if (htim == (&htim2))
    {
        if (ledState == 0)
            HAL_GPIO_WritePin(GPIOA,GPIO_PIN_6,GPIO_PIN_RESET);
        else
            HAL_GPIO_WritePin(GPIOA,GPIO_PIN_6,GPIO_PIN_SET);
        ledState = !ledState;
    }
}

/* USER CODE END 4 */

(4)观察波形图

2s

(5)实物连接图

在这里插入图片描述

(6)实践效果

在这里插入图片描述

四、PWM模式控制呼吸灯

(1)实验内容

​ 采用定时器PWM模式,让 LED 以呼吸灯方式渐亮渐灭,周期为1~2秒,自己调整占空比变化到一个满意效果;使用Keil虚拟示波器,观察 PWM输出波形。

(2)创建工程

除了选择TIM不同外其他均与前面步骤相同
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

(3)Keli程序

 /* USER CODE BEGIN 1 */
    uint16_t pwmVal=0;  
    uint8_t dir=1;  
  /* USER CODE END 1 */
 /* USER CODE BEGIN 2 */
HAL_TIM_PWM_Start(&htim3,TIM_CHANNEL_1);
  /* USER CODE END 2 */
  /* USER CODE BEGIN WHILE */
 while (1)
  {
    /* USER CODE END WHILE */

    /* USER CODE BEGIN 3 */
	  while (pwmVal< 500)
	  {
		  pwmVal++;
		  __HAL_TIM_SetCompare(&htim3, TIM_CHANNEL_1, pwmVal);    

		  HAL_Delay(1);
	  }
	  while (pwmVal)
	  {
		  pwmVal--;
		  __HAL_TIM_SetCompare(&htim3, TIM_CHANNEL_1, pwmVal);    
		  HAL_Delay(1);
	  }
	  HAL_Delay(200);

  }
  /* USER CODE END 3 */

(4)观察波形图

在这里插入图片描述

(5)实物连接图

在这里插入图片描述

(6)实践效果

在这里插入图片描述

五、参考引用

STM32CubeMX & Keil——STM32F103C8T6:PWM控制LED灯

六、总结

本次实验我学习到了更多定时器和pwm的知识。

  • 4
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值