1.硬件设计:
2.软件设计:
延时函数:调用系统的us延时函数自定义ms延时函数:
//毫秒延时函数
void ICACHE_FLASH_ATTR
delay_ms(u32 ms)
{
for(;ms>0;ms--){
os_delay_us(1000);//1ms
}
}
GPIO引脚的使用:
1.先使用 PIN_FUNC_SELECT(管脚名,管脚功能)函数初始化引脚
例:PIN_FUNC_SELECT(PERIPHS_IO_MUX_GPIO4_U,FUNC_GPIO4);//GPIO4设为IO口
参数1:管脚名,参数2:管脚功能
2.使用 GPIO_OUTPUT_SET(管脚名,1/0);设置引脚输出的高低电平
例:GPIO_OUTPUT_SET(GPIO_ID_PIN(4),0);
3.程序功能和源码:
实现的功能: LED亮500ms,再灭500ms.
源码:
#include "ets_sys.h"
#include "user_config.h"//用户配置
#include "eagle_soc.h"//GPIO函数,宏定义
#include "c_types.h" //变量类型
#include "osapi.h" //系统函数
#include "user_interface.h"
/******************************************************************************
* FunctionName : user_rf_cal_sector_set
* Description : SDK just reversed 4 sectors, used for rf init data and paramters.
* We add this function to force users to set rf cal sector, since
* we don't know which sector is free in user's application.
* sector map for last several sectors : ABCCC
* A : rf cal
* B : rf init data
* C : sdk parameters
* Parameters : none
* Returns : rf cal sector
*******************************************************************************/
uint32 ICACHE_FLASH_ATTR
user_rf_cal_sector_set(void)
{
enum flash_size_map size_map = system_get_flash_size_map();
uint32 rf_cal_sec = 0;
switch (size_map) {
case FLASH_SIZE_4M_MAP_256_256:
rf_cal_sec = 128 - 5;
break;
case FLASH_SIZE_8M_MAP_512_512:
rf_cal_sec = 256 - 5;
break;
case FLASH_SIZE_16M_MAP_512_512:
rf_cal_sec = 512 - 5;
break;
case FLASH_SIZE_16M_MAP_1024_1024:
rf_cal_sec = 512 - 5;
break;
case FLASH_SIZE_32M_MAP_512_512:
rf_cal_sec = 1024 - 5;
break;
case FLASH_SIZE_32M_MAP_1024_1024:
rf_cal_sec = 1024 - 5;
break;
case FLASH_SIZE_64M_MAP_1024_1024:
rf_cal_sec = 2048 - 5;
break;
case FLASH_SIZE_128M_MAP_1024_1024:
rf_cal_sec = 4096 - 5;
break;
default:
rf_cal_sec = 0;
break;
}
return rf_cal_sec;
}
void ICACHE_FLASH_ATTR
user_rf_pre_init(void)
{
}
//毫秒延时函数
void ICACHE_FLASH_ATTR
delay_ms(u32 ms)
{
for(;ms>0;ms--){
os_delay_us(1000);//1ms
}
}
/******************************************************************************
* FunctionName : user_init
* Description : entry of user application, init user function here
* Parameters : none
* Returns : none
*******************************************************************************/
void ICACHE_FLASH_ATTR
user_init(void)
{
os_printf("\r\nESP8266点灯实验\r\n");
//LED_GPIO初始化
//参数1:管脚名,参数2:管脚功能
PIN_FUNC_SELECT(PERIPHS_IO_MUX_GPIO4_U,FUNC_GPIO4);//GPIO4设为IO口
while(1)
{
system_soft_wdt_feed();//喂狗
GPIO_OUTPUT_SET(GPIO_ID_PIN(4),0);//GPIO4低电平
delay_ms(500);
GPIO_OUTPUT_SET(GPIO_ID_PIN(4),1);//GPIO4高电平
delay_ms(500);
}
}