尧图网站建设 尧图网络
  • 首页
  • 关于我们
  • 服务项目
  • 案例展示
  • 建站流程
  • 资讯中心
  • 联系我们
首页/资讯中心/详情

ESP8266 PMW使用的简单介绍

ESP8266 PMW使用的简单介绍
📅 发布时间:2026/6/19 23:09:43

前言

呼吸灯是常见的LED应用。LED呼吸灯的流程是缓缓点亮LED灯,再缓缓熄灭LED灯。在夜色下,缓慢闪烁的LED显得格外迷人。 如何使用ESP8266MOD实现此效果, 这里简单地总结一下。

一、PWM单元介绍

ESP8266有四个PWM输出接口,分别是:PWM0(GPIO12)、PWM1(GPIO15)、PWM2(GPIO14)、PWM3(GPIO4)。由于PWM接口是由软件来实现的,因此用户可自行拓展(最大可拓展8个,详细请参考ESP8266 SDK的pwm.h文件)。

PWM可调节的周期在1000us~10000us,即100HZ~1KHZ之间。
二、PWM配置流程介绍

1.首先对PWM的占空比、周期以及PWM通道进行配置。

2.配置系统定时器,将呼吸灯运行程序配置成每30ms运行一次,以刷新PWM的占空比。
三、相关API介绍
1、pwm_init
API 介绍    -    -
功能介绍    初始化PWM配置    -
函数原型    void pwm_init(uint32 period, uint32 *duty, uint32 pwm_channel_num, uint32 (*pin_info_list)[3]);    -
参数介绍    period    PWM周期
    -    *duty    各PWM通道的占空比
    -    pwm_channel_num    需要使用的PWM通道数量
    -    (*pin_info_list)[3]    使用的PWM通道的GPIO参数

uint32_t io_info[ ][ 3 ] =
{
/** 该参数在ESP8266 SDK的user_light.h中 */
{ PWM_1_OUT_IO_MUX, PWM_1_OUT_IO_FUNC, PWM_1_OUT_IO_NUM }, 
};

uint32_t duty[] = {0};

/** 配置PWM的周期为1000us,占空比为0,PWM通道数量为1 */
pwm_init( 1000, duty, 1, io_info );

2、pwm_start
API 介绍    -    -
功能介绍    更新PWM配置    
函数原型    void pwm_start(void)    
注释    在PWM参数配置完成后需要调用该函数    
3、pwm_set_duty
API 介绍    -    -
功能介绍    设置某PWM通道的占空比    -
函数原型    void pwm_set_duty(uint32 duty, uint8 channel)    -
参数介绍    duty    新的PWM通道占空比
-    channel    需要设置的PWM通道(从零开始算)

示例:

/** 设置PWM通道1的占空比为100 */
pwm_set_duty( 100, 0 );

/** 使PWM配置生效 */
pwm_start();

4、pwm_get_duty
API 介绍    -    -
功能介绍    获取某通道的占空比的数值    -
函数原型    uint32 pwm_get_duty(uint8 channel)    -
参数介绍    channel    需要设置的PWM通道(从零开始算)
返回值    该通道的占空比    -
5、pwm_set_period
API 介绍    -    -
功能介绍    设置某PWM通道的周期    -
函数原型    void pwm_set_period(uint32 period, uint8 channe)    -
参数介绍    period    新的PWM通道周期
-    channel    需要设置的PWM通道(从零开始算)

示例:

/** 设置PWM通道1的周期为100us */
pwm_set_period( 100, 0 );

/** 使PWM配置生效 */
pwm_start();

6、pwm_get_period
API 介绍    -    -
功能介绍    获取某通道的周期    -
函数原型    uint32 pwm_get_period(uint8 channel)    -
参数介绍    channel    需要设置的PWM通道(从零开始算)
返回值    某通道的周期    -

 #include "ets_sys.h"
   #include "osapi.h"

   #include "user_light.h"
   #include "gpio.h"

   #include "user_interface.h"

   static os_timer_t os_timer;

   /** 呼吸灯运行程序 */
   void ESP8266_PWM_RUN( void )
   {
       /** PWM占空比变量 */
       static u8 set_duty = 0;

       /** 占空比加减标志 */
       static bool f = true;
       if ( f == true )
       {
           if ( ++set_duty >= 100 )
           {
               f = false;
           }
       }
       else
       {
           if ( --set_duty <= 0 )
           {
               f = true;
           }
       }

       /** 更新PWM通道0的占空比 */
       pwm_set_duty( set_duty, 0 );
       pwm_start();
   }

   /** 初始化PWM配置、系统定时器配置 */
   void ESP8266_PWM_Init( void )
   {
   //    struct pwm_param pwm_config;
       uint32_t io_info[ ][ 3 ] =
       {
           { PWM_1_OUT_IO_MUX, PWM_1_OUT_IO_FUNC, PWM_1_OUT_IO_NUM }, 
       };

       uint32_t duty[ ] = { 0 };

   //    pwm_config.duty[ 0 ] = 0;
   //    pwm_config.freq = 0;
   //    pwm_config.period = 1000;

       pwm_init( 1000, duty, 1, io_info );

       /** 配置定时器每30ms执行一次ESP8266_PWM_RUN()函数 */
       os_timer_disarm( &os_timer );
       os_timer_setfn( &os_timer, (ETSTimerFunc *) ( ESP8266_PWM_RUN ), NULL );
       os_timer_arm( &os_timer, 30, true );
   }

   /** 用户初始化程序,根据测试该程序只运行一次 */
   void user_init(void)
   {
       ESP8266_PWM_Init();
   }

相关新闻

  • 加州新规要求AI必须表明其AI身份
  • 详细介绍:【rabbitmq 高级特性】全面详解RabbitMQ TTL (Time To Live)
  • 低代码平台底层协议设计

最新新闻

  • Headroom:让 AI Agent「吃得少、营养好」的开源上下文压缩神器
  • 2026昆山屋顶防水市场深度分析与服务商适配推荐:聚焦本地需求的优质选择 专业防水公司排名推荐(2026年6月防水补漏最新TOP权威排名) - 鼎壹万修缮说
  • 2026年卫生间隔断工厂综合盘点:传炼装饰工程成为工装项目首选
  • 如何快速掌握Umi-OCR:面向初学者的免费离线文字识别全攻略
  • VRT:视频复原Transformer——原理深度解析与技术实现
  • 武汉家具安装推荐良匠千艺2026口碑榜 - 我叫一

日新闻

  • 5分钟掌握Python进化算法:Geatpy高性能优化工具完全指南
  • Microchip 24AA044 EEPROM选型与应用全指南:从参数解析到实战编程
  • 华为的鸿蒙到底有多牛?为什么称作遥遥领先?

周新闻

  • 3步解锁iOS设备:applera1n激活锁绕过完全指南
  • 39 2026 人工智能证书终极盘点,普通人选 AI 证书可以从这些方向入手
  • Redis 暴露公网有多危险?从端口检查到补救步骤

月新闻

  • 【总结】入门篇:50句话让你记住架构核心概念
  • WeChatMsg技术方案解析:实现Mac微信数据自主管理的完整解决方案
  • WeChatMsg:革新性微信数据备份方案,打造你的专属数字记忆库

关于尧图

  • 公司简介
  • 团队介绍
  • 企业文化
  • 荣誉资质

服务项目

  • 定制开发
  • 电商建站
  • UI 设计
  • 运维服务

快速链接

  • 案例展示
  • 建站流程
  • 常见问题
  • 资讯中心

联系方式

  • 📍北京市朝阳区互联网产业园 A 座 10 层
  • 📞400-888-8888
  • ✉️contact@rkmt.cn
  • 🕐周一至周日 9:00-21:00

© 2024 北京尧图网络科技有限公司 版权所有 | 京 ICP 备 XXXXXXXX 号