项目架构

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. CentOS安装卸载memcache及JAVA示例

      原文地址:http://www.cnblogs.com/zhongshengzhen/   先安装libevent,memcached依赖libevent的lib [root@VM_64_81_c ...

  2. iOS动画详解(一)

    Core Graphics Framework是一套基于C的API框架,使用了Quartz作为绘图引擎.它提供了低级别.轻量级.高保真度的2D渲染.该框架可以用于基于路径的绘图.变换.颜色管理.脱屏渲 ...

  3. lunix机器的jdk安装

    本来不想写这篇博客的,写在这儿只是作为自己的笔记,jdk安装了千万编,但是踩过的坑老是不记,看别人的博客又各种不爽,所有索性自己写一个得了.老规矩,无图. Oracle版本的jdk下载地址:http: ...

  4. 【转】与BT下载相关的概念

    1. DHT DHT全称叫分布式哈希表(Distributed Hash Table),是一种分布式存储方法.在不需要服务器的情况下,每个客户端负责一个小范围的路由,并负责存储一小部分数据,从而实现整 ...

  5. mysqlnd cannot connect to MySQL 4.1+ using the old insecure authentication的解决方法

    直接命令行操作没有问题,但是PHP连接就会报上面的错误. SET old_passwords =0; USE mysql; UPDATE user SET password =PASSWORD('yo ...

  6. hdu 5480 Conturbatio 线段树 单点更新,区间查询最小值

    Conturbatio Time Limit: 1 Sec Memory Limit: 256 MB 题目连接 http://acm.hdu.edu.cn/showproblem.php?pid=54 ...

  7. 【分享】4412开发板-嵌入式Linux开发须要掌握的基础知识和技能

    本文转自迅为电子论坛:http://www.topeetboard.com 1.Linux 基础 安装Linux操作系统 Linux文件系统 Linux经常使用命令 Linux启动过程具体解释 熟悉L ...

  8. PHP高效获取远程图片尺寸和大小(转)

    1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 3 ...

  9. github fork项目后,代码更新

    协助约定 每个人都可以fork一份自己的repo,所有的修改都在自己私有的repo上进行:修改完成,测试通过后通过给主repo发pull request请求合并:主repo(Johnqing/n.js ...

  10. C++中的头文件和源文件

    一.C++编译模式 通常,在一个C++程序中,只包含两类文件——.cpp文件和.h文件.其中,.cpp文件被称作C++源文件,里面放的都是C++的源代码:而.h文件则被称作C++头文件,里面放的也是C ...