当前位置:   article > 正文

【stm32Cubemx】STM32F103zet6战舰v3开发板——用PWM功能实现LED呼吸灯

【stm32Cubemx】STM32F103zet6战舰v3开发板——用PWM功能实现LED呼吸灯

首先找到开发板的LED引脚
战舰开发板引脚图

LED引脚
LED0PB5
LED1PE5

很显然有两个LED灯的引脚,注意,当我们在选择到底用哪个led显示的时候,一定要判断这个LED灯的引脚是否有pwm输出的功能!!!(如果选错了,则灯会一直不亮)

第一步 打开cubemx创建项目,选择好咱们相应开发板的型号

在这里插入图片描述

第二步 配置SYS、RCC(选择外部晶振)、时钟树

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

第三步 选择合适的led引脚作为pwm输出

右键选择PE5的引脚,显然没有TIM定时器功能,不能选用PE5
在这里插入图片描述
右键选择PB5引脚,有TIM3_CH2通道,选中即可
在这里插入图片描述

第四步 配置TIM_CH2的参数

在 Parameter Settings 页配置预分频系数为 72-1,计数周期(自动加载值)为 500-1,定时器溢出频率,即PWM的周期,就是 72MHz/72/500 = 2kHz

PWM频率:
Fpwm =Tclk / ((arr+1)*(psc+1))(单位:Hz)
arr 是计数器值
psc 是预分频值

占空比:
duty circle = TIM3->CCR1 / arr(单位:%)
TIM3->CCR1 用户设定值
比如 定时器频率Tclk = 72Mhz arr=499 psc=71 那么PWM频率就是720000/500/72= 2000Hz,即2KHz

arr=499,TIM3->CCR1=250 则pwm的占空比为50%
改CCR1可以修改占空比,修改arr可以修改频率

在这里插入图片描述

在这里插入图片描述

最后点击工程管理

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

用KEIL5打开项目,点击魔法棒配置

确保以下配置和我的一样
在这里插入图片描述

在这里插入图片描述

配置完毕,开始书写代码

在这里插入图片描述
在这里插入图片描述
编译下载即可,附上循环条件中的代码

  while (1)
  {
    while (pwmVal< 500)
	  {
		  pwmVal++;
		  __HAL_TIM_SetCompare(&htim3, TIM_CHANNEL_2, pwmVal);    //修改比较值,修改占空比
		  HAL_Delay(1);
	  }
	  while (pwmVal>0)
	  {
		  pwmVal--;
		  __HAL_TIM_SetCompare(&htim3, TIM_CHANNEL_2, pwmVal);    //修改比较值,修改占空比
		  HAL_Delay(1);
	  }
	  HAL_Delay(200);
  }

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17

实验最终现象:

led呼吸灯

声明:本文内容由网友自发贡献,转载请注明出处:【wpsshop】
推荐阅读
相关标签
  

闽ICP备14008679号