项目架构

ESP8266项目开发并非使用IDE自动管理工程文件,而是使用了诸多第三方程序如Python,以及使用了Makefile管理依赖与控制编译,所以项目的创建与日常维护较为复杂,本篇将详述创建一般项目的详细步骤。下图描述了一个ESP8266工程的大致模样:

要开始本篇的教程,请确保已经完成了上一课《开发环境搭建》中的内容,此处的编译需要上一篇所提到的IDE与IDE文件夹下的Cygwin的支持,否则无法工作。创建这样一个项目的大致步骤如下:

步骤1,SDK下载

官网下载最新SDK,以下地址:

http://www.espressif.com/zh-hans/support/download/sdks-demos

暂时请下载1.5.3的文档,下载完成后解压(保留原压缩包,后续会使用),可以看到如下的目录结构:

此处修改文件夹名称ESP8266_NONOS_SDK 为有意义的名称,此名称将默认作为其后的项目工程名出现。

步骤2,创建入口主文件

在app文件夹下创建user、include文件夹,并分别在其下创建user_main.c,user_config.h。

user_main.c文件内容如下:

#include "osapi.h"

//射频初始化函数,留空
void user_rf_pre_init(void) { } //主文件入口处
void user_init(void)
{
}

user_config.h头文件留空即可,但为了保持良好的编程习惯,我们倾向于在此构建保护头,内容一般如下即可:

#ifndef _GUARD_USER_CONFIG_H_
#define _GUARD_USER_CONFIG_H_ #endif

步骤3,复制工程管理Makefile文件

将example\peripheral_test目录中的Makefile文件复制到app目录下;将example\peripheral_test\user目录中的Makefile复制到app\user目录下。

删除documents,driver_lib目录,删除Examples目录,仅留下项目必须文件结构。

这里需要复制的Makefile亦可手写完成,但太过复杂,不推荐。最终形成如下所示的目录结构:

步骤4,项目导入与编译控制

导入Eclipse IDE中,导入项目,选择Existing Code as Makefile Project,选择目标文件夹。项目导入完毕后,首先请右击项目名称,选择Clean Project清理一遍,然后选择Build Project。默认编译成功后控制台输出如下:

完成!

常见操作释疑

  1. 向项目新增文件

    普通.c源文件,可直接复制到user目录,makefile会自动控制进行编译。

  2. 向项目新增文件夹

参考examples\IoT Demo工程,以新增driver文件夹为例,在app下新增driver后,修改app\Makefile,为SUBDIRS新增 driver值,为COMPONENTS_eagle.app.v6新增 driver/libdriver.a值。

或者拷贝iot文件夹的makefile吧。

  1. 链接第三方库

  2. 项目头文件包含目录修改

后续章节将会慢慢提及,但如果需要精通此工具的使用,建议先熟练Makefile的书写,可以参考网络文档:《跟我一起写Makefile》。

更多教程、资料、文档,或者购买ESPUSH专属开发板,加Q群:480288089

ESP8266开发课堂之 - 建立一个新项目的更多相关文章

  1. nodejs安装,配置环境,使用express建立一个新项目

    1.下载nodejs安装包 去nodejs官网下载最新版本就行,网址:http://nodejs.cn/download/,点击自己适用的系统,自动下载跟电脑操作系统位数符合的安装包, 下载下来安装包 ...

  2. 如何向Openstack社区提交一个新项目

    前几天有个朋友问我:自己有一个idea不错的项目,也把基本的框架写好了,想贡献到Openstack社区,却不知道应该怎么做.正好之前我有过类似的经历,那么来分享一下我是如何向Openstack社区提交 ...

  3. 建立一个Web项目及一些错误解决办法

    培训之前,先自学一波,写一个从Hello World,然后记录一下每天学习Java Web的过程:东西很多,有用的会写大量解释,希望能最终学完 然后搞定这门语言吧. 1.配置tomacat:点击win ...

  4. Vue Create 创建一个新项目 命令行创建和视图创建

    Vue Create 创建一个新项目 命令行创建和视图创建 开始之前 你可以先 >>:cd desktop[将安装目录切换到桌面] >>:vue -V :Vue CLI 3.0 ...

  5. msql_createdb: 建立一个新的 mSQL 数据库。

    mcrypt_ecb: 使用 ECB 将资料加/解密. mcrypt_get_block_size: 取得编码方式的区块大小. mcrypt_get_cipher_name: 取得编码方式的名称. m ...

  6. 将本地的一个新项目上传到GitHub上新建的仓库中去

    转载: 如何将本地的一个新项目上传到GitHub上新建的仓库中去 踩过的坑: 1.在git push时报错 error: RPC failed; curl 56 SSL read: error:000 ...

  7. Google C++测试框架系列入门篇:第二章 开始一个新项目

    上一篇:Google C++测试框架系列入门篇:第一章 介绍:为什么使用GTest? 原始链接:Setting up a New Test Project 词汇表 版本号:v_0.1 开始一个新项目 ...

  8. 快速建立一个Django项目

    快速建立一个Django项目 版本说明 一定要先明确好使用的Python版本和所使用包的版本,避免耽误不要的时间 Python==3.6.4 Django==1.11.9 djangoresframe ...

  9. VS下如何建立一个新的MFC程序 网络编程 课设 基于C++ MFC 连接数据库 小应用 小项目浅析展示

    原文作者:aircraft 原文地址:https://www.cnblogs.com/DOMLX/p/8191036.html 这里不知道会不会有人是真的新手 新新手 不知道怎么 如何建立一个MFC ...

随机推荐

  1. [一位菜鸟的COCOS-2D编程之路]打飞机中机种敌机和战机损毁时的爆炸效果

    1.第一步,添加爆炸动画 //添加玩家飞机飞行动画 id _playerFlyAction; id _playerBlowupAnimation; //战机爆炸动画 id _enemyBlowupAn ...

  2. 剑指OFFER之顺时针打印矩阵(九度OJ1391)

    题目描述: 输入一个矩阵,按照从外向里以顺时针的顺序依次打印出每一个数字,例如,如果输入如下矩阵: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 则依次打印出数字1,2 ...

  3. SVN遇到的几个错误问题解决办法

    1.svn更新被锁 清理之后陷入死循环问题 Attempted to lock an already-locked dir svn: Working copy 'E:\Workspaces\eclip ...

  4. ECSHOP在线手册之模板结构说明 (适用版本v2.7.3)

    名称 类型 备注(作用或意义) 文件(目录)名可否更改 images 目录 存放模板图片目录 不可更改 library 目录 存放模板库文件目录 不可更改 screenshot.png 图片 用于“后 ...

  5. 有关AES加密的问题

    遇到一个项目,需要用AES加密密码,android的已经写好了,java源码: private static final String AES_OPTIONS = "AES/ECB/PKCS ...

  6. HDU 5289 Assignment(2015 多校第一场二分 + RMQ)

    Assignment Time Limit: 4000/2000 MS (Java/Others)    Memory Limit: 65536/65536 K (Java/Others) Total ...

  7. 日志文件C++ 时间 文件 行数

    #include <stdio.h> #include<windows.h> #include <time.h> #define Line __LINE__ #de ...

  8. android学习日记03--常用控件progressbar/seekbar

    常用控件 5.progressbar 进度条,比较常用的组件,在某些操作的进度中的可视指示器,为用户呈现操作的进度,还它有一个次要的进度条,用来显示中间进度,如在流媒体播放的缓冲区的进度.一个进度条也 ...

  9. 5.6 在线DDL (online DDL)详解

    ONLINE ddl 原理: online ddl相关参数 测试原表数据是否能进行ONLINE DDL方法: online DDL 局限性 测试

  10. Python源码剖析

    http://blog.csdn.net/balabalamerobert/article/details/570758