当前位置:   article > 正文

STM32,CubeMX输出pwm波,实现呼吸灯。_cubemx pulse

cubemx pulse

stm32 定时器 输出PWM波 呼吸灯

使用工具:stm32f103c6tx, stlink, cubemx, keil5

PWM简介

PWM一般指脉冲宽度调制,PWM波指脉冲宽度可调的方波。

在这里插入图片描述

描述pwm波特征的主要参数:

  • 占空比 Duty : 方波高电平时间与周期的比值 (即图中的)
    D u t y = d y n T s T s Duty = { d_{yn}Ts \over T_s } Duty=TsdynTs

  • 周期 T : 方波的周期。

  • 频率 f :方波周期的倒数,1s内能完成几个周期。

STM32定时器输出pwm的主要参数

利用stm32定时器可以输出pwm波。下面简要介绍要用到的几个参数。

  • 预分频系数 PSC :对计数时钟进行预分频,可以调配出任意的计数周期。
  • 自动重载值 ARR :
    • ​ 计数模式 为UP时 :当计数值CNT中达到ARR后,自动归零,重新开始新一周期的计数。
    • ​ 计数模式 为DOWN时:计数值CNT由ARR开始递减,一直减到零。
  • 捕获比较值 CCR:
    • 模式1:当计数值CNT小于CCR时 ,引脚输出高电平; 当 计数值CNT大于CCR时,引脚输出低电平。
    • 模式2: 当计数值CNT小于CCR时 ,引脚输出低电平; 当 计数值CNT大于CCR时,引脚输出高电平。

输出PWM波的大概工作原理(感性理解)

计数时钟TIM_CLK经过PSC预分频,计数时钟每经过一周期,计数值CNT就增加一。假设当前处于模式1,CNT小于CCR,,引脚输出高电平,构成方波的高电平时间;CNT大于CCR时,引脚输出低电平,构成方波的低电平时间。

通过修改PSC与ARR,可以修改PWM波的周期T和频率f;修改CCR,可以调整pwm波的占空比。
T = ( A R R + 1 ) ( P S C + 1 ) T I M C L K T = {(ARR+1) (PSC+1) \over TIM_{CLK}} T=TIMCLK(ARR+1)(PSC+1)

f = 1 T f = {1 \over T} f=T1

D u t y = C C R A R R Duty = {CCR \over ARR} Duty=ARRCCR

应用:实现双向呼吸灯

配置pwm参数

控制小灯快速亮灭,通过增大占空比,逐渐增加小灯点亮的时间,实现视觉上的小灯逐渐变亮。达到亮度峰值后,再逐渐减少占空比,制造出小灯逐渐变暗的效果。

1.定时器配置

​ 内部时钟->选择一个通道设为PWM Generation CHx (由于通道四恰好对应开发板上的小灯,我选择了通道4)->配置PSC,ARR。

pulse/ ARR 即为占空比,此处可以不修改。

在这里插入图片描述

想要达到欺骗人眼的效果,小灯闪烁的频率必须足够高,我们设置pwm频率为2000hz。

此时计数时钟TIM_CLK为72Mhz.

在这里插入图片描述

当设置PSC 为(72-1) ARR为(500-1)时:
f = 72000000 72 ∗ 500 = 2000 h z f = {72000000 \over 72 \ast 500 } = 2000hz f=7250072000000=2000hz
故取PSC=71, ARR = 499.

代码部分

  /* USER CODE BEGIN 2 */
	HAL_TIM_PWM_Start(&htim3,TIM_CHANNEL_4);  // 使能PWM输出
  /* USER CODE END 2 */
  • 1
  • 2
  • 3

while循环中的部分:

 for(uint16_t i=1;i<500;i++)    // 通过循环逐渐改变CCR,进而改变占空比。
 {
	htim3.Instance->CCR4 = i; 
	HAL_Delay(1);
 }
for(uint16_t i=499;i>=1;i--)
{
	htim3.Instance->CCR4 = i;   // 通过htim3.Instance->CCRx直接修改CCR的值  与cubemx中pulse指的相同。
	HAL_Delay(1);
}
HAL_Delay(10);
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11

实际效果展示

在这里插入图片描述

工程压缩包链接:
https://download.csdn.net/download/Nothing_To_Say_/80947402

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/IT小白/article/detail/75973
推荐阅读
相关标签
  

闽ICP备14008679号