ESP8266开发课堂之 - 建立一个新项目
项目架构
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。默认编译成功后控制台输出如下:
完成!
常见操作释疑
向项目新增文件
普通.c源文件,可直接复制到user目录,makefile会自动控制进行编译。向项目新增文件夹
参考examples\IoT Demo工程,以新增driver文件夹为例,在app下新增driver后,修改app\Makefile,为SUBDIRS新增 driver值,为COMPONENTS_eagle.app.v6新增 driver/libdriver.a值。
或者拷贝iot文件夹的makefile吧。
链接第三方库
项目头文件包含目录修改
后续章节将会慢慢提及,但如果需要精通此工具的使用,建议先熟练Makefile的书写,可以参考网络文档:《跟我一起写Makefile》。
更多教程、资料、文档,或者购买ESPUSH专属开发板,加Q群:480288089
ESP8266开发课堂之 - 建立一个新项目的更多相关文章
- nodejs安装,配置环境,使用express建立一个新项目
1.下载nodejs安装包 去nodejs官网下载最新版本就行,网址:http://nodejs.cn/download/,点击自己适用的系统,自动下载跟电脑操作系统位数符合的安装包, 下载下来安装包 ...
- 如何向Openstack社区提交一个新项目
前几天有个朋友问我:自己有一个idea不错的项目,也把基本的框架写好了,想贡献到Openstack社区,却不知道应该怎么做.正好之前我有过类似的经历,那么来分享一下我是如何向Openstack社区提交 ...
- 建立一个Web项目及一些错误解决办法
培训之前,先自学一波,写一个从Hello World,然后记录一下每天学习Java Web的过程:东西很多,有用的会写大量解释,希望能最终学完 然后搞定这门语言吧. 1.配置tomacat:点击win ...
- Vue Create 创建一个新项目 命令行创建和视图创建
Vue Create 创建一个新项目 命令行创建和视图创建 开始之前 你可以先 >>:cd desktop[将安装目录切换到桌面] >>:vue -V :Vue CLI 3.0 ...
- msql_createdb: 建立一个新的 mSQL 数据库。
mcrypt_ecb: 使用 ECB 将资料加/解密. mcrypt_get_block_size: 取得编码方式的区块大小. mcrypt_get_cipher_name: 取得编码方式的名称. m ...
- 将本地的一个新项目上传到GitHub上新建的仓库中去
转载: 如何将本地的一个新项目上传到GitHub上新建的仓库中去 踩过的坑: 1.在git push时报错 error: RPC failed; curl 56 SSL read: error:000 ...
- Google C++测试框架系列入门篇:第二章 开始一个新项目
上一篇:Google C++测试框架系列入门篇:第一章 介绍:为什么使用GTest? 原始链接:Setting up a New Test Project 词汇表 版本号:v_0.1 开始一个新项目 ...
- 快速建立一个Django项目
快速建立一个Django项目 版本说明 一定要先明确好使用的Python版本和所使用包的版本,避免耽误不要的时间 Python==3.6.4 Django==1.11.9 djangoresframe ...
- VS下如何建立一个新的MFC程序 网络编程 课设 基于C++ MFC 连接数据库 小应用 小项目浅析展示
原文作者:aircraft 原文地址:https://www.cnblogs.com/DOMLX/p/8191036.html 这里不知道会不会有人是真的新手 新新手 不知道怎么 如何建立一个MFC ...
随机推荐
- Codeforces Round #325 (Div. 2) B. Laurenty and Shop 前缀和
B. Laurenty and Shop Time Limit: 1 Sec Memory Limit: 256 MB 题目连接 http://codeforces.com/contest/586/p ...
- Ubuntu下配置 keepalived+nginx+tomcat 负载均衡
本文力图阐述在 Ubuntu Server 环境下使用 Keepalived + Nginx + Tomcat 搭建高可用负载均衡环境的操作步骤和简约配置,这里不涉及性能调优.先说一下他们各自扮演的角 ...
- iOS完美的网络状态判断工具
大多数App都严重依赖于网络,一款用户体验良好的的app是必须要考虑网络状态变化的.iOSSinger下一般使用Reachability这个类来检测网络的变化. Reachability 这个是苹果开 ...
- Vs 2008 解决方案的目录结构设置和管理(转)
http://blog.csdn.net/lcj_cjfykx/article/details/8632459 MS的这个IDE,实在庞杂得恐怖.从大学开始,我就一直用VC的各个版本写程序至今,细细想 ...
- C#中Strings VS. StringBuilder
string mappingHandler = String.Format(@"""[name='BTSHTTPReceiveModule',path='BTSHTTPR ...
- 可视化swing界面编辑--转载
原文地址:http://279234058.iteye.com/blog/2200122 今天发现了一个WindowBuilder插件,功能好强大,啊哈哈,从此告别手动编辑swing界面代码,直接像V ...
- How to install VXDIAG Honda, Toyota and JLR SDD software
EOBD2 has newly launched Allscanner VXDIAG multi diagnostic tool with OEM diagnostic software: Honda ...
- ios通知-kvo
// KVC: Key Value Coding, 常见作用:给模型属性赋值 // KVO: Key Value Observing, 常用作用:监听模型属性值的改变 // // ViewCon ...
- 为什么虚拟机上刚装的centos7只有lo回环网络接口?
centos7默认安装时需要手动激活有线网卡.如果安装时没有激活,需要手动编辑vi /etc/sysconfig/network-scripts/下ifcfg-enoxxONBOOT="ye ...
- FastDFS详解
1.FastDFS是什么 FastDFS是一款类Google FS的开源分布式文件系统,它用纯C语言实现,支持Linux.FreeBSD.AIX等UNIX系统.它只能通过 专有API对文件进行存取访问 ...