ESP8266_NONOS_SDK环境搭建
http://www.51hei.com/bbs/dpj-150034-1.html
说明FLASH SIZE这一栏如果是ESP-01就选8Mbit,如果是ESP-12F就选32Mbit
安装环境
下载AiThinkerIDE_V0.5_Setup.exe
安装-注意要使用英文目录(注意这里是0.5版本,不是最新的版本,新版本未测试)
安装完成后打开安装目录下的ConfigTool.exe
按defule
键设置目录
SDK
这里的SDK为ESP8266_NONOS_SDK-2.2.0.zip
找开AiThinkerIDE软件,删除ESP8266_NONOS_SDK项目,删除时勾选Delete project contents on disk
,然后再打开OpenWorkSpace.bat目录
删除ESP8266_NONOS_SDK目录下的文件,
修改SDK包
1、将driver_lib重命名为app(名字自己喜好来定),从examples文件夹下随便复制(或剪切)一个工程到app文件夹下,(提示是否要替换,都替 换掉)
2、将third_party文件夹下的Makefile重命名为Makefile.bak(备份起来,也是怕它影响到接下来的编译)
3、将顶层Makefile文件中SPI_SIZE_MAP?=0
改为SPI_SIZE_MAP?=6
,
4、倒数第三行INCLUDES := $(INCLUDES) -I $(PDIR)include -I $(PDIR)in clude/$(TARGET) -I $(PDIR)driver_lib/include
中的driver_lib改为第2步的重命名,例如我改为app,这里就改为app即可。
SDK导入与编译
然后再项目中导入SDK项目
选择General
->Existing Projects into Workspace
点击next
。
然后选择目录注意SDK目录不能有点符号与中文,勾选Copy projects into workspace
然后完成,
然后可以下OpenWorkSpace.bat目录下的项目下查看是否有该项目
然后就可以编译项目了,编译完成后在Console下面会有以下字样(注意编译前要保存与清除)
No boot needed.
Generate eagle.flash.bin and eagle.irom0text.bin successully in folder bin.
eagle.flash.bin-------->0x00000
eagle.irom0text.bin---->0x10000
然后在项目下烧录的bin文件夹内
文件名与地址
eagle.flash.bin 0x00000
eagle.irom0text.bin 0x10000
esp_init_data_default_v08.bin 0x3FC000
blank.bin 0x3FE000
关于下面的选项 为40Mhz 模式:DOUT Size:32Mbit 去除二个勾选,然后就可以烧录了
编程测试
在app/user/user_main.c文件中user_init(void)函数写入以下代码
os_printf("\n\nHello World! \n\n");
烧录完成后,测试时波特率设置为74880(晶振26MHz),如果外晶振40时波特率115200
才能可以看到数据
串口测试
#include "driver/uart.h"
//用户代码
uart_init(9600,9600); //波特率
os_printf("\r\n------------------------\r\n");
uart0_sendStr("\n\nHello World! \n\n");
os_printf("\r\n------------------------\r\n");
makefile文件修改
当头文件修改位置时
要修改makefile文件中的二处SUBDIRS
与COMPONENTS_eagle.app.v6
(格式:driver/lib文件夹名.a
)
记得user_mian声明要更改一下
看门狗
喂狗函数system_soft_wdt_feed()
延时
#include "osapi.h" //定时器
void ICACHE_FLASH_ATTR delay_ms(u32 C_time)
{
for(;C_time>0;C_time--)
{os_delay_us(1000);}//延时1000纳秒
}
void ICACHE_FLASH_ATTR user_init()
{
while(1)
{
system_soft_wdt_feed();
uart0_sendStr("\r\nHello! \r\n");
delay_ms(1000); //调用延时1000微秒=1秒
}
}
GPIO
#include "eagle_soc.h" //GPIO函数与宏定义
(因为考虑到NONOS的多任务,转为RTOS学习)