ESP8266 PWM呼吸灯

本例程基于ESP8266 NONOS 2.0 的PWM呼吸灯

LED为IO4引脚

程序如下:


#include "user_config.h"		// 用户配置
#include "driver/uart.h"  		// 串口
#include "c_types.h"			// 变量类型
#include "eagle_soc.h"			// GPIO函数、宏定义
#include "ets_sys.h"			// 回调函数
#include "os_type.h"			// os_XXX
#include "osapi.h"  			// os_XXX、软件定时器
#include "pwm.h"				// PWM控制需要的文件
#include "user_interface.h" 	// 系统接口、system_param_xxx接口、WIFI、RateContro

os_timer_t timer;
uint8 type,x,y,z;
uint32 duty=0;
void ICACHE_FLASH_ATTR display(void *arg)
{
	for(y=0;y<3;y++)
	{
		for(z=0;z<12;z++)
		{
			duty=z*2000;
			type=y;
			pwm_set_duty(duty,type);//设置 PWM 某个通道信号的占空比, duty 占空比的值, type当前要设置的 PWM 通道
			pwm_start();//设置完成后,需要调用 pwm_start,PWM 开始
		}
	}

}


main()
{
	uint32 pwm_duty_init[1]={0};
	uint32 io_info[][3]={{PERIPHS_IO_MUX_GPIO4_U,FUNC_GPIO4,4}};
	pwm_init(1000,pwm_duty_init,1,io_info);//初始化 PWM,1000周期,pwm_duty_init占空比,1通道数,io_info各通道的 GPIO 硬件参数
	for(x=0;x<3;x++)
	{
		 type=x;
		 pwm_set_duty(duty,type);//设置 PWM 某个通道信号的占空比, duty 占空比的值, type当前要设置的 PWM 通道
		 pwm_start();//设置完成后,需要调用 pwm_start,PWM 开始
	}
	os_timer_disarm(&timer);
	os_timer_setfn(&timer,display,NULL);
	os_timer_arm(&timer,100,1);
}

 

你可能感兴趣的:(esp8266,nonos,sdk开发)