【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);
  }

实验最终现象:

led呼吸灯

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值