用ESP8266的PWM功能,写了一个呼吸灯程序,为什么只执行一次(灯慢慢点亮,然后慢慢熄灭,然后就狂闪)

xlc18225546348 2017-03-04 11:45:01


LOCAL os_timer_t os_timer;

LOCAL uint8 set_duty=0;

LOCAL uint8 m=1;

LOCAL uint8 n=1;



void delay_ms(uint16 x)

{



for(;x>0;x--)

{

os_delay_us(1000);

}

}



static void ESP8266_PWM_RUN(void)

{//static uint8 set_duty=0;

//static uint8 m=1;

//static uint8 n=1;



if (m==1)

{

if ( set_duty >= 100 )

{

m=0;

}

set_duty=set_duty+2;

}

else

{

if ( set_duty <= 0 )

{

m=1;

}

set_duty=set_duty-1;

}

pwm_set_duty(set_duty,0);

pwm_set_duty(set_duty,1);

pwm_set_duty(set_duty,2);

pwm_start();

}

static void PWM_Init(void)

{

uint32 io_info[3][3]={

{PWM_0_OUT_IO_MUX,PWM_0_OUT_IO_FUNC,PWM_0_OUT_IO_NUM},

{PWM_1_OUT_IO_MUX,PWM_1_OUT_IO_FUNC,PWM_1_OUT_IO_NUM},

{PWM_2_OUT_IO_MUX,PWM_2_OUT_IO_FUNC,PWM_2_OUT_IO_NUM}

};

uint32 duty[3]= {0};



pwm_init(5000,duty,3,io_info);

os_timer_disarm(&os_timer);

os_timer_setfn(&os_timer,(os_timer_func_t*)(ESP8266_PWM_RUN),NULL);

os_timer_arm( &os_timer,50,1);

}

void user_init(void)

{

PWM_Init();

}
...全文
3609 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
lamb666666 2017-10-30
  • 打赏
  • 举报
回复
你的PWM是怎么run的
你好小菜 2017-09-30
  • 打赏
  • 举报
回复
加个while(1).
TK_Senior 2017-08-25
  • 打赏
  • 举报
回复
引用 2 楼 qq_37251469 的回复:
为什么我编译出现pwm.h上的几个pwm_init();pwm_start();pwm_set_duty();这个几个函数找不到?你们能成功调试吗?
在Makefile里面LinkFlags 里面加上-lpwm
qq_37251469 2017-03-17
  • 打赏
  • 举报
回复
为什么我编译出现pwm.h上的几个pwm_init();pwm_start();pwm_set_duty();这个几个函数找不到?你们能成功调试吗?
findway1111 2017-03-17
  • 打赏
  • 举报
回复
你讲set_duty值打印出来,通过串口调试工具查看值是不是从小变大,再从大变小 如果不是,那就是你的循环写的问题

1,616

社区成员

发帖
与我相关
我的任务
社区描述
智能硬件,智能手表,可穿戴设备,智能电视,谷歌眼镜,Google Glass 相关讨论。
社区管理员
  • 智能硬件
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧