项目架构

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. [威客任务]¥800.00 JS实现网站联动三级选项

    任务地址:http://task.zhubajie.com/3275832/ 具体要求: 要求1) 选单样式参照附件2) 点击第一个选项内容后,跳出第二个选项栏位,并自动更新选项内容3) 点击第二个选 ...

  2. js防刷新的倒计时

    近期在维护考试系统,在进行考试測试时无意中点击了刷新button.可是上面的倒计时并没有受到影响.同一时候在几篇博客中也有这种样例,所以我想看看它究竟是如何防止刷新的. 假设是用cs代码写.我们可能会 ...

  3. 安装Windows SDK7.1时发生的一个错误(附解决办法)

    A problem occurred while installing selected Windows SDK components. Installation of the "Micro ...

  4. PrintJ的设计模式之旅——1.模式之父

    好奇设计模式的源头,做了一番搜索和调查,于是便开启了这个系列“PrintJ的设计模式之旅”. 1.模式之父 GOF(Gang of Four) Erich Gamma.Richard Helm.Ral ...

  5. CCNA 例题精选

    3. Refer to the exhibit. Whichtwo statements are true about interVLAN routing in the topology that i ...

  6. 产生不重复的随机数TGUID

    uses ActiveX; procedure TForm1.BtnNewClick(Sender: TObject);var  ID: TGUID;  S: string;begin  if CoC ...

  7. 继续推广我的新博客xysay:http://www.xysay.com/

    RT 博客收拾了一下,准备以后就在那里记录论文笔记啦,求交流,求推荐,求友链~~~ http://www.xysay.com/

  8. 手动配置Ubuntu Linux系列3-缺省网关和主机名

    上一篇讲到[原创]手动配置Ubuntu Linux的DHCP客户端,这里再说一下配置静态IP地址的方法.   仍然是编辑 interfaces文件.   $ sudo vi /etc/network/ ...

  9. DTCC2016

    http://pan.baidu.com/share/home?uk=4043574767#category/type=0

  10. Java 之 调用.Net的 WebService 整理

    最近做一个 java 调用 .net 服务的项目,其中 .net做了一个WebService,需要java来调用. 最开始.net的Service代码如下: using System; using S ...