1. 程式人生 > >ESP8266例程解析 ①PWM LED

ESP8266例程解析 ①PWM LED

#include "driver/uart.h"  //串列埠0需要的標頭檔案
#include "osapi.h"  //串列埠1需要的標頭檔案
#include "user_interface.h" //WIFI連線需要的標頭檔案
#include "gpio.h"  //埠控制需要的標頭檔案
#include "pwm.h"  //pwm控制需要的標頭檔案


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 開始
		}
	}



}
void user_init()
{
	uint32 pwm_duty_init[3]={0};
	uint32 io_info[][3]={{PERIPHS_IO_MUX_MTDI_U,FUNC_GPIO12,12},{PERIPHS_IO_MUX_MTCK_U,FUNC_GPIO13,13},{PERIPHS_IO_MUX_MTDO_U,FUNC_GPIO15,15},};
	pwm_init(1000,pwm_duty_init,3,io_info);//初始化 PWM,1000週期,pwm_duty_init佔空比,3通道數,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,1000,1);
}
void user_rf_pre_init()
{

}

在這裡插入圖片描述在這裡插入圖片描述
在這裡插入圖片描述
在這裡插入圖片描述
在這裡插入圖片描述

在這裡插入圖片描述