ESP-01S利用NONOS_SDK搭建开发环境采用固件烧写方法开发ESP8266(ESP8266-01s)

一、简介

在开发Esp-01s时我们不仅可以使用Arduino进行一些简单的开发操作,我们也可以使用更为底层的NONos对Esp-01s进行更加深入的拓展性开发。

二、搭建方法

1、硬件搭建

硬件部分仍然是参考我上一篇文章中的硬件结构点击查看开发工具一项

2、软件搭建

在软件搭建方面要提到两家公司:
1、上海ESPRESSIF(点击了解):这家公司是ESP芯片生产公司主要生产ESP等系列芯片,我们后面需要在这个网站上下载芯片手册和SDK开发包进行开发。
2、深圳安可信(点击了解):这家是做ESP芯片模组的一家公司,后面我将会从这家网站上去下载相关开发IDE。

(1)IDE的安装

1、首先进入安可信官网
在这里插入图片描述
2、找到ESP8266详情
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里我们就可以看到SDK一体化开发环境也就是IDE我们点击进入百度云进行下载
在这里插入图片描述
在这里插入图片描述
将这两个文件下载下来并根据手册进行安装。
在这里插入图片描述
在安装之后会看到这样的图标直接点击进入就可以打开你的IDE了

(2)SDK下载

首先SDK分为两种
1、乐鑫官方的SDK:官方的SDK不带有app这个文件夹需要自行配置
乐鑫SDK点击进入资源下载中心:
向下翻找到资源一栏
在这里插入图片描述
先进行手册的下载不管使用的是哪种SDK都需要参考手册来进行编程
在这里插入图片描述
在这里插入图片描述
下载之后的压缩文件目录结构(记得解压到你的IDE指定的工作空间中)
其中的Tools为官方的makfile等构建文件存放的文件夹
在这里插入图片描述
至此乐鑫的SDK已经下载完成
2、由安可信官方修改过的SDK:此SDK中含有app文件夹可以直接打开使用
**我们回到刚刚下载IDE时的那个安可信页面点击快速跳转 **
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

点灯操作

双击Aithinker IDE打开(会使用Eclipse的这里可以跳过)
在这里插入图片描述
在这里插入图片描述
解压后的SDK文件夹名
在这里插入图片描述
修改文件名称为你喜欢的名称(下图为我修改后的名称):
在这里插入图片描述
双击进入的目录结构应该是这个样子的
在这里插入图片描述
回到我们的IDE中

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
之后回到

在这里插入图片描述
直接点击Finish
在这里插入图片描述
之后再IDE的左侧找到这个文件并双击

在这里插入图片描述
找到这个函数并将里面的所有内容清空
在这里插入图片描述
在任意位置添加这条语句,目的是将GPIO0置为低电平
随后的主函数如下:

/*
 * ESPRESSIF MIT License
 *
 * Copyright (c) 2016 <ESPRESSIF SYSTEMS (SHANGHAI) PTE LTD>
 *
 * Permission is hereby granted for use on ESPRESSIF SYSTEMS ESP8266 only, in which case,
 * it is free of charge, to any person obtaining a copy of this software and associated
 * documentation files (the "Software"), to deal in the Software without restriction, including
 * without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense,
 * and/or sell copies of the Software, and to permit persons to whom the Software is furnished
 * to do so, subject to the following conditions:
 *
 * The above copyright notice and this permission notice shall be included in all copies or
 * substantial portions of the Software.
 *
 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
 * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS
 * FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR
 * COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER
 * IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
 * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
 *
 */

#include "ets_sys.h"
#include "osapi.h"
#include "gpio.h"
#include "user_interface.h"

#include "user_devicefind.h"
#include "user_webserver.h"

#if ESP_PLATFORM
#include "user_esp_platform.h"
#endif

uint32 priv_param_start_sec;

/******************************************************************************
 * 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;
            priv_param_start_sec = 0x3C;
            break;

        case FLASH_SIZE_8M_MAP_512_512:
            rf_cal_sec = 256 - 5;
            priv_param_start_sec = 0x7C;
            break;

        case FLASH_SIZE_16M_MAP_512_512:
            rf_cal_sec = 512 - 5;
            priv_param_start_sec = 0x7C;
            break;
        case FLASH_SIZE_16M_MAP_1024_1024:
            rf_cal_sec = 512 - 5;
            priv_param_start_sec = 0xFC;
            break;

        case FLASH_SIZE_32M_MAP_512_512:
            rf_cal_sec = 1024 - 5;
            priv_param_start_sec = 0x7C;
            break;
        case FLASH_SIZE_32M_MAP_1024_1024:
            rf_cal_sec = 1024 - 5;
            priv_param_start_sec = 0xFC;
            break;

        case FLASH_SIZE_64M_MAP_1024_1024:
            rf_cal_sec = 2048 - 5;
            priv_param_start_sec = 0xFC;
            break;
        case FLASH_SIZE_128M_MAP_1024_1024:
            rf_cal_sec = 4096 - 5;
            priv_param_start_sec = 0xFC;
            break;
        default:
            rf_cal_sec = 0;
            priv_param_start_sec = 0;
            break;
    }

    return rf_cal_sec;
}



void ICACHE_FLASH_ATTR
user_rf_pre_init(void)
{
}
/******************************************************************************
 * FunctionName : user_set_softap_config
 * Description  : set SSID and password of ESP8266 softAP
 * Parameters   : none
 * Returns      : none
*******************************************************************************/
void ICACHE_FLASH_ATTR
user_set_softap_config(void)
{
	struct softap_config config;
	wifi_softap_get_config(&config); // Get config first.

    os_memset(config.ssid, 0, 32);
    os_memset(config.password, 0, 64);
	os_memcpy(config.ssid, "xxxxx", 9);
    os_memcpy(config.password, "******", 8);
    //config.ssid = "TEST-WLLW";
    //config.password = "12345678";
    config.authmode = AUTH_WPA_WPA2_PSK;
    config.ssid_len = 0;// or its actual length
    config.beacon_interval = 100;
    config.max_connection = 4; // how many stations can connect to ESP8266 softAP at most.
    wifi_softap_set_config(&config);// Set ESP8266 softap config .

}

void LED_GPIO_init()
{
//	GPIO_OUTPUT_SET(GPIO_ID_PIN(GPIO管脚号),电平高低1:低,0:高);
	GPIO_OUTPUT_SET(GPIO_ID_PIN(0),1);
}

/******************************************************************************
 * FunctionName : user_init
 * Description  : entry of user application, init user function here
 * Parameters   : none
 * Returns      : none
*******************************************************************************/
void user_init(void)
{
	LED_GPIO_init();
}

然后右键工程名
在这里插入图片描述
右键之后在菜单里面找到clean project清理工程然后再找到build project进行工程的编译
clean之后的console窗口
在这里插入图片描述
build之后的工程
在这里插入图片描述
使用下载工具进行下载
下载工具的下载可以在安可信开发工具清单中看到:
在这里插入图片描述
解压之后的文件名
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
上面四个bin文件:
在刚刚重命名的文件夹的bin目录下可以找到其中这四个bin文件后面对应的是四个地址
后面两个地址如果你和我使用的同样是ESP-01s可以和我填写相同的地址,下面的SPI SPEED(SPI速度)和SPO MODE(SPI 模式)可以和我相同,注意的是FLASH SIZE(存储大小)这里我的ESP01s是8M如果你的也是ESP01s可以和我配置一样即可,
切记下载地址一个bin文件对应一个下载地址要一一对应填写不能改变顺序
在这里插入图片描述
点击之后这里会显示等待上电同步
在这里插入图片描述
此时我们将ESP01s的IO0管脚拉低再重新上电就可以进行下载
在这里插入图片描述
此时重新上电复位便可看到在我的IO0管脚上的小灯点亮了

结束

至此通过Nonos SDK 来搭建Esp8266-01s的工程就完成了若想要了解使用简便快捷的Arduino IDE搭建Esp8266-01s的朋友也可以访问我的

这篇文章教你如何搭建Arduino环境下的ESP开发教程

  • 16
    点赞
  • 69
    收藏
    觉得还不错? 一键收藏
  • 10
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 10
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值