STM32—PWM控制呼吸灯实验

目录

  • 一.PWM简介
    • PWM生成方法
  • 二、PWM控制单色LED—单色呼吸灯
    • 硬件说明
    • 代码分析
    • 进行验证
      • 示波器查看波形
      • 呼吸灯

一.PWM简介

PWM是 Pulse Width Modulation 的缩写,中文意思就是脉冲宽度调 制,简称脉宽调制。 PWM是一种对模拟信 电平进行数字编码 的方法。通过高分辨率计数器的使用,方波的占空比被调制用来对一个 具体模拟信 的电平进行编码。PWM 信 仍然是数字的,因为在给定的 任何时刻,满幅值的直流供电要么完全有(ON),要么完全无(OFF)。电压 或电流源是以一种通(ON)或断(OFF)的重复脉冲序列被加到模拟负载上去 的。通的时候即是直流供电被加到负载上的时候,断的时候即是供电被 断开的时候。只要带宽足够,任何模拟值都可以使用 PWM 进行编码。
  

代码分析

这里用的例子是野火官方例程,可以去官 下载,在里面找到TIM—单色呼吸灯就可以了。

硬件相关宏定义文件

为方便切换LED 灯 的颜色,它定义了三组宏 , 通 过 修 改 代 码 中 的 “”语句,可以切换使用红、绿、蓝种颜色的呼吸灯。在每组宏定义中,与全彩 LED 灯实验中的类似,定义了定时器编 、定时器时钟使能库函数、引脚重映射操作、GPIO 端口和引脚 、通道对应的比较寄存器名以及中断通道和中断服务函数名。

初始化GPIO口,代码:

#python计算脚本 count.py
#PWM点数
POINT_NUM = 110

代码中初始化了控制 RGB 灯用的定时器,
它被配置为向上计数,PWM 通道输出也被配置成当计数器 CNT 的值小于输出比较寄存器CCRx的值时,PWM通道输出低电平,点亮 LED 灯。在函数的最后还使能了定时器中断,每当定时器的一个计数周期完成时,产生中断,配合中断服务函数,即可切换 CCRx 比较
寄存器的值。
代码中的 是关键配置。其中 TIMPeriod 被配置为(1024-1),它控制控制定时器的定时周期,定时器的计数寄存器 CNT 从 0 开始,每个时钟会对计数器加 1,计数至 1023 时完成一次计数,产生中断,也就是说一共 1024 个计数周期,与 PWM 表元素中的最大值相同。若定时器的输出比较寄存器 CCRx被赋值为 PWM表中的元素,即可改变输出对应占空比的 PWM波,控制 LED灯。

呼吸灯

STM32—PWM控制呼吸灯实验

声明:本站部分文章及图片源自用户投稿,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!

上一篇 2021年1月2日
下一篇 2021年1月2日

相关推荐