通过pwm波控制led呼吸效果

  现在时间2019年5月10日01:59,为什么这么晚了我还在写这篇文章呢,主要是解决了一个会使我看起来很沙雕的问题,还是有点想发出来免得有人和我一样沙雕。
  说实话现在草稿里面还有三四篇没有发出来的,都是继续前面的关于stm32的学习笔记,这段时间确实比较颓废,但是这篇文章可能会对小白们有点帮助

一、PWM简介以及如何通过控制PWM波控制小灯的明暗情况

  长话短说,我就只分两个部分了。

  脉冲宽度调制(PWM)->(Pulse Width Modulation),STM32 的定时器除了 TIM6 和 7。其他的定时器都可以用来产生 PWM 输出。其中高级定时器 TIM1 和 TIM8 可以同时产生多达 7 路的 PWM 输出。而通用定时器也能同时产生多达 4路的 PWM 输出,这样, STM32 最多可以同时产生 30 路 PWM 输出!这样的话就可以想象一下可以做些什么事情了。
  比较水的思路就是定时器产生pwm波然后通过改变占空比来改变给予led的能量大小,从大的框架往下套。其实我就是简单的将我的感想写下来,来看的人应该也只是为了寻找思路或者其中关于细节的注意事项,以下便是提炼:
   (1) 巨牛的学长曾经说,一个东西你只知道如何使用它是没有灵魂的,你得有能力去改变它。我深感其中的道理,怎奈资质欠缺,很艰难。所以第一个就是关于寄存器的知识,如果你看的是这个,那么定时器的相关知识需要掌握一下,重要的在于定时器中断。这里就着资料的 捕获 /比较模式寄存器(TIMx_CCMR1/2)、捕获/比较使能寄存器(TIMx_CCER)、捕获/比较寄存器(TIMx_CCR1~4) 拿出来说,都是关于实际用的

◆  捕获/比较模式寄存器(TIMx_CCMR1/2),该寄存器总共有 2 个, TIMx _CCMR1和 TIMx _CCMR2。 TIMx_CCMR1 控制 CH1 和 2,而 TIMx_CCMR2 控制 CH3 和 4。记住这个
stm32-pwm初运用-呼吸灯
该寄存器的有些位在不同模式下,功能不一样,图中显示寄存器分为 2层,上面一层对应输出而下面的则对应输入。需要注意的是模式设置位 OCxM,此部分由 3 位组成。总共可以配置成 7 种模式,我们使用的是 PWM 模式,所以这 3 位必须设置为 110/111。这两种PWM 模式的区别就是输出电平的极性相反。
◆ 捕获/比较使能寄存器(TIMx_CCER),该寄存器控制着各个输入输出通道的开关。
stm32-pwm初运用-呼吸灯
stm32-pwm初运用-呼吸灯
这是从stm32参考手册14.4.9截下来的关于CCER的解释,每一位都有不同的意义,就像这里我们的目的是通过定时器产生pwm波,就对应了相应的输入/捕获输出使能位,要想PWM 从 IO 口输出,这个位必须设置为 1,所以我们需要设置该位为 1。
◆ 捕获/比较寄存器(TIMx_CCR1~4),该寄存器总共有 4 个,对应 4 个输通道 CH1~4。记住了,是对应的,和CCMR比较记忆即可
stm32-pwm初运用-呼吸灯
在输出模式下,该寄存器的值与 CNT 的值比较,根据比较结果产生相应动作。所以我们通过修改对应寄存器的值,就可以控制 PWM 的输出脉宽了,再直接说吧,什么叫对应寄存器的值,TIMx_CCR1~4就对应你利用哪个定时器哪个通道,很直接干脆。

  (2) 涉及到端口的复用和映射,就像各种资料所说,讲的很直接,实现呼吸灯,你需要将pwm波输送至led灯所在的位置,所以,要么你就用原来的通道固定端口,要么就映射,工程量少差不多,前面也讲了端口复用和重映射,这就不赘述了

  (3) 我这里就不贴代码了,代码你们也不缺,各种大佬都分享的有,所以,下面才是重点,惊喜不


二、可能遇到的问题

  (1) 在设置端口的时候有没有去查芯片手册,这个得按照规则来,不是你想映射到哪儿就映射到哪儿,这个学习了前面的端口复用和重映射就会知道,所以学习都是需要基础以及循序渐进的

  (2) 如果你是用的教程中PB5进行实验,同时没有连接其他外设就不会有这个问题,因为32的板子PB5,PE5以及蜂鸣器等等的某些引脚都是固定给你连接好了的,然后如果是自己连得led外设,就需要注意,led上串联一个小电阻比较好,别问我为什么,这种事情实在不知道就百度,别问,问就很沙雕,以及接线的时候,注意!!!!二极管阴极接IO口,阳极接电源

  (3) 我认为学习的过程中遇见问题是很平常的事情,不要遇见一点困难就请教,别反驳我,你反驳我只能说咱价值观人生观不同,说明不了其他的,当你靠自己努力探索然后解决问题和请教得来的讲解,我认为其中得到的东西是不同的

感谢各位踩这篇文章,祝大家都有梦为马!不负青春!

相关文章:

  • 2022-12-23
  • 2022-02-09
  • 2021-11-27
  • 2021-11-27
  • 2021-11-08
  • 2021-11-27
  • 2021-12-24
  • 2022-12-23
猜你喜欢
  • 2021-04-05
  • 2021-06-19
  • 2022-01-01
  • 2022-12-23
  • 2021-11-27
  • 2021-11-27
  • 2021-12-20
相关资源
相似解决方案