第一讲.搭建开发环境,开始一个"hellow world"串口打印。

作者:电子快递哥

日期:于2020年3月18日

有态度,有温度,欢迎关注电子快递哥,转载请注明出处,

1.1. 搭建开发环境。

esp8266 经过这么多年的迭代,sdk从1.0到目前的 3.0版本,也有2种C语言开发方式:裸跑 nonos 以及 实时操作系统 freeRtos 的支持,安信可公司一直在着乐鑫步伐跟着走,推出了 前1.0版本和 1.0版本;

其中 1.0以前版本仅仅支持 SDK2.0版本及以下,而 1.0版本支持SDK3.0或以上。

教程参考官网教程:http://wiki.ai-thinker.com/ai_ide_install

特别说明:安装安信可开发环境前需要自行安装Java开发环境,请百度安装方法。

1.2,开始我们基于 nonos 工程的第一个"Hello World"。

1.2.1, 如下图,打开我们最新的NONOS的SDK下载地址, https://github.com/espressif/ESP8266_NONOS_SDK/releases

esp8266 开发环境比较(ESP8266之SDK开发教程-第一讲)(1)

解压后请注意以下操作:

①、third_party文件夹下面的Makefile文件加上 .bak后缀!

②、driver_lib文件夹重命名为my_app(可以是其他任意名称),把examples文件夹下的smart_config文件夹里面的全部内容复制到刚刚的my_app的文件夹里面。

③、以上做好了之后,可以导入IDE了!

我这里演示一个串口实验,打印 hellow world字符到我们通讯串口助手。下载后解压,注意解压后的路径千万别带中文字符,解压请直接复制到一个没有中文字符的路径的文件夹下面。否则会影响到后面的编译结果!

1.2.2,导入项目 选择 File→Import ,下面步骤:

esp8266 开发环境比较(ESP8266之SDK开发教程-第一讲)(2)

1.2.3,点开C/C 分支,并选中Existing Code as Makefile Project:

esp8266 开发环境比较(ESP8266之SDK开发教程-第一讲)(3)

1.2.4,去除C 支持,选中 Cross GCC,点击Browser,选中我们解压后所在的目录。点击finish。

esp8266 开发环境比较(ESP8266之SDK开发教程-第一讲)(4)

1.2.5,此刻,成功进入到我们的主界面。

1.2.6,project右键选择Properties

esp8266 开发环境比较(ESP8266之SDK开发教程-第一讲)(5)

1.2.7,选择C/C Bulid

Build Command中填入 make COMPILE=gcc BOOT=new APP=1 SPI_SPEED=40 SPI_MODE=QIO SPI_SIZE_MAP=6 我用的是ESP8266-12F,其他型号按实际修改参数;

点击File system选择工程下my_app文件夹的路径;

点击Apply,然后点击OK 回到主界面;

esp8266 开发环境比较(ESP8266之SDK开发教程-第一讲)(6)

1.2.8,开始编译工程前,在其的 app ->user --> user_main.c 方法修改如下,让输出为 hello world。

①esp8266的非实时系统编程的打印函数尽量用os_printf(),切记切记!!!

②写了一个ms延时函数用于串口循环输出hello word;

③uart_init(115200,115200);为修改串口波特率,不改的话默认为74800,第一次我就踩坑了;

④system_soft_wdt_feed();此处为喂狗,不加的话看门狗会导致不断重启;

⑤程序代码:

void delay_ms(uint16 x)

{

for(;x>0;x--)

{

os_delay_us(1000);

}

}

void ICACHE_FLASH_ATTR

user_init(void)

//*001例程 helloword 更改波特率

{

uart_init(115200,115200);

os_printf("SDK version:%s\n", system_get_sdk_version());

while(1)

{

system_soft_wdt_feed();//这里我们喂下看门狗 ,不让看门狗复位

os_printf("hello word!\n");

delay_ms(500);

}

}

1.2.9,开始编译前,按照官方的说法,我们看控制台时候,直接把 Problems 栏目关掉,解释说,这个Problems 栏目报的错误不准确,只有Console 栏目下的输出为准,所以建议大家把 Problems 栏目关闭。

esp8266 开发环境比较(ESP8266之SDK开发教程-第一讲)(7)

之后建议大家每次编译项目前先进行 clear project,再 build project ,这样就保证了正确的代码可以完全被编译,如果正确的代码没有clear project就直接build project ,可能会报错。

Build Project :编译项目 ; Clean Project:清理项目,可以清理下缓存。

esp8266 开发环境比较(ESP8266之SDK开发教程-第一讲)(8)

1.2.10,我们编译之后,看看控制台下的信息打印,说明已经成功做好固件啦。

1.3,固件烧录,测试

1.3.1,看我们的最小系统搭建(强调:烧录时候,一定要让GPIO0处于低电平,即接GND):

esp8266 开发环境比较(ESP8266之SDK开发教程-第一讲)(9)

1.3.2,下载安信可官方烧录软件,下载地址http://wiki.ai-thinker.com/tools

esp8266 开发环境比较(ESP8266之SDK开发教程-第一讲)(10)

1.3.3,详细烧录方法参见安信可官方教程http://wiki.ai-thinker.com/esp_download,于是,我们就打开烧录软件,配置刚刚的路径,选择烧录地址(选择之后就是绿色的),各个参数如下:

esp8266 开发环境比较(ESP8266之SDK开发教程-第一讲)(11)

①boot_v1.7.bin,esp_init_data_default_v08.bin,blank.bin这三个文件在工程文件下的bin文件夹,user1.4096.new.6.bin是刚刚我们生成的文件在bin文件下面的upgrade文件夹,仔细找找。

1.3.4,开始烧录程序到模块,有以下要注意的:

①,模块按上面的最小系统图接好线,连接到USB转串口工具,注意接线TXD和RXD要交叉;

②,模块供电要大于500mA,供电电压为3.3V(注意);

③,串口要选对,根据实际情况选择;

④,按住K2按键不放,模块上电,单击START,这时软件上会显示等待模块上电同步,按一下K1按键,等待程序下载完成;

1.3.5,下载完毕之后,我们给设备重新上电,打开串口助手,设置波特率115200,就可以看到串口一直输出hello word!

esp8266 开发环境比较(ESP8266之SDK开发教程-第一讲)(12)

1.4,后记

1.4.1,所有自己编译出来的工程,都是有四个文件要烧录的,其中2个是必须烧录的(防止初始化失败),这2个文件分别是 esp_init_data_default.bin 和blank.bin,烧录地址根据您的8266型号区别;

1.4.2,我们最平常用的是安信可8266-12系列的,这个是32Mbit,也就是4M flash ,所以他们的地址分别是 0x3FC000 和 0x3FE000 , 最后2个的烧录文件地址看编译之后结果而决定!也即是不一定是0x10000,有可能是0x2000 , 这个根据SDK的版本有关系。所以大家还是留心点!

1.4.3,好多人问这个SPI MODE应该怎么选择,这个其实是esp8266芯片和flash芯片的连接方式决定的,四根线就是QIO,而DIO就是六根线,至于后面还有QOUT和DOUT和flash芯片有关,平时最多的是DIO或者是QIO了!

,