esp8266 开发环境比较(ESP8266之SDK开发教程-第一讲)
作者:电子快递哥
日期:于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
解压后请注意以下操作:
①、third_party文件夹下面的Makefile文件加上 .bak后缀!
②、driver_lib文件夹重命名为my_app(可以是其他任意名称),把examples文件夹下的smart_config文件夹里面的全部内容复制到刚刚的my_app的文件夹里面。
③、以上做好了之后,可以导入IDE了!
我这里演示一个串口实验,打印 hellow world字符到我们通讯串口助手。下载后解压,注意解压后的路径千万别带中文字符,解压请直接复制到一个没有中文字符的路径的文件夹下面。否则会影响到后面的编译结果!
1.2.2,导入项目 选择 File→Import ,下面步骤:
1.2.3,点开C/C 分支,并选中Existing Code as Makefile Project:
1.2.4,去除C 支持,选中 Cross GCC,点击Browser,选中我们解压后所在的目录。点击finish。
1.2.5,此刻,成功进入到我们的主界面。
1.2.6,project右键选择Properties
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 回到主界面;
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 栏目关闭。
之后建议大家每次编译项目前先进行 clear project,再 build project ,这样就保证了正确的代码可以完全被编译,如果正确的代码没有clear project就直接build project ,可能会报错。
Build Project :编译项目 ; Clean Project:清理项目,可以清理下缓存。
1.2.10,我们编译之后,看看控制台下的信息打印,说明已经成功做好固件啦。
1.3,固件烧录,测试
1.3.1,看我们的最小系统搭建(强调:烧录时候,一定要让GPIO0处于低电平,即接GND):
1.3.2,下载安信可官方烧录软件,下载地址http://wiki.ai-thinker.com/tools
1.3.3,详细烧录方法参见安信可官方教程http://wiki.ai-thinker.com/esp_download,于是,我们就打开烧录软件,配置刚刚的路径,选择烧录地址(选择之后就是绿色的),各个参数如下:
①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!
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了!
,免责声明:本文仅代表文章作者的个人观点,与本站无关。其原创性、真实性以及文中陈述文字和内容未经本站证实,对本文以及其中全部或者部分内容文字的真实性、完整性和原创性本站不作任何保证或承诺,请读者仅作参考,并自行核实相关内容。文章投诉邮箱:anhduc.ph@yahoo.com