当前位置: 首页 > news >正文

ESP8266 PMW使用的简单介绍

前言

呼吸灯是常见的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();
   }

http://www.rkmt.cn/news/20806.html

相关文章:

  • 加州新规要求AI必须表明其AI身份
  • 详细介绍:【rabbitmq 高级特性】全面详解RabbitMQ TTL (Time To Live)
  • 低代码平台底层协议设计
  • 2025 年热处理钎焊炉工装夹具厂家推荐榜:钎焊炉用耐热钢工装夹具厂家,聚焦品质与适配,助力企业高效生产
  • 实用指南:基于Spring Boot与SSM的社团管理系统架构设计
  • 完整教程:数据结构 01 线性表
  • 2025年耐磨轮胎厂家最新推荐排行榜,矿山耐磨轮胎,工程耐磨轮胎,重载耐磨轮胎公司推荐!
  • 行列式按多行或列展开
  • SCANIA中国EDI对接供应商指南:快速完成上线的最佳方案
  • 2025 年模板厂家最新推荐榜单:覆盖塑钢 / 水沟 / 现浇 / 拱形骨架等多类型,精选优质厂家助力工程高效采购
  • 基于EKF/UKF的非线性飞行器系统滤波实现
  • 实验任务2 - pp
  • 第二次实验作业
  • ControlNet——AI图像生成的“精准操控工具”
  • 2025 武汉实缴服务机构最新推荐排行榜:知识产权 / 注册资本代办优选清单,深度解析专业服务品质
  • 实用指南:消息队列 MQ
  • 2025 年最新推荐高性价比实木家具厂家排行榜:涵盖实木床餐边柜/餐桌斗柜/书柜/梳妆台/床头柜/餐椅沙发/休闲椅优质厂家精选
  • 多智能体微服务实战(3/4):Aspire 打造本地 K8s 开发环境
  • 一文读懂Optimism,Arbitrum,ZK Rollups 共识算法
  • notepad++中使用正则表达式过滤数据
  • 2025 年风机厂家最新推荐排行榜:聚焦交流 / 直流 / 无刷 / 大吸力 / 调速 / 小型高压等多类型风机,精选优质企业助力采购决策
  • 简单高效的SQL注入测试方法:Break Repair技术详解
  • AG Grid推出全新MCP服务器——让AI更智能地理解你的数据表格!
  • uniapp 判断在特定app或h5里还需要判断当前环境
  • Excel处理控件Aspose.Cells教程:使用Python将TXT文件转换为CSV
  • 2025 年干燥机厂商最新推荐排行榜:聚焦实验室与工业用优质设备,精选实力品牌供采购参考工业喷雾 / 陶瓷喷雾 / 制粒 / 奶粉喷雾 / 离心喷雾干燥机厂家推荐
  • CF Round 1024 / CF2101
  • 本地 Git 清理已经在远程删除的分支引用
  • 一切皆有逻辑,元推理框架是逻辑真相生成器
  • 2025 年工业减速机厂家最新推荐排行榜:聚焦谐波 / 行星 / 直角换向器等多类型设备,精选实力企业助力采购决策