ESP8266基于SDK开发环境搭建(NONOS 3.0版本)

前言
ESP8266是一款串口WiFi模块,内部集成MCU能实现单片机之间串口同信;这款模块简单易学,体积小,便于嵌入式开发。
ESP8266的编程方式可以用官方的SDK编写,也可以用Arduino编写。各有各自的优点。如需查看Arduino搭建8266的开发环境可前往Arduino搭建ESP8266开发环境
首先我们前前往安信可8266系列模组专题:安信可
在这里插入图片描述
在这里有许多ESP8266的资料以及固件包:
在这里插入图片描述
同时提供了SDK开发环境搭建的资料,本次是使用Win10平台SDK NONOS 3.0对ESP8266对mcu进行二次开发!
在这里插入图片描述
下载好安信可提供的AiThinkerIDE_V0.5后解压到自己的安装位置,我这里安装到D盘。

在这里插入图片描述
解压出来后我们对软件的环境进行配置!
双击ConfigTool.exe

![在这里插入图片描述](https://img-blog.csdnimg.cn/20200901140147814.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2R3aDEzMTQ=,size_16,color_FFFFFF,t_70#pic_center在这里插入图片描述
在这里插入图片描述
环境配置好之后我们打开AiThinker_IDE软件
在这里插入图片描述
打开后界面如图所示!

下面我们开始移植一个DEMO

首先我们需要提前下载好SDK

在安信可里面有gitee的仓库可前往下载,或者通过我提供的连接下载:https://gitee.com/xuhongv/ESP8266_NONOS_SDK
在这里插入图片描述
SDK目录如图所示
下面我们开始移植
在这里插入图片描述
新建一个工程的文件夹把所有文件复制过来!
在这里插入图片描述
我们把以IOT_Demo为例将IoT_Demo里面的文件全部复制到driver_lib下
在这里插入图片描述
并且覆盖掉之前的文件。

在这里插入图片描述

接下来我们可以删除掉一些不需要的东西
third_party、examples这两个目录可以删掉了
third_party是一些第三方提供的库,我们本次例程没有用到,先删掉,examples是一些Demo我们也不需要。
在这里插入图片描述
下面我们打开该工程,选择Import导入工程
在这里插入图片描述
选择Makefile工程
在这里插入图片描述
点击Browse选择刚才移植好的工程然后按照下面选好
在这里插入图片描述
最后导入如图所示。
在这里插入图片描述
编译导入的工程
在编译之前我们需要clean project
在这里插入图片描述
然后我们编译项目,我们会发现报错了!
在这里插入图片描述

user_main.c:38:2: error: #error "The flash map is not supported"
 #error "The flash map is not supported"
  ^
DEPEND: xt-xcc -M -Os -g -Wpointer-arith -Wundef -Wl,-EL -fno-inline-functions -nostdlib -mlongcalls -mtext-section-literals -ffunction-sections -fdata-sections -fno-builtin-printf -fno-guess-branch-probability -freorder-blocks-and-partition -fno-cse-follow-jumps -DICACHE_FLASH -DSPI_FLASH_SIZE_MAP=0 -I include -I ./ -I ../../include/ets -I ../include -I ../../include -I ../../include/eagle -I ../../driver_lib/include user_json.c
DEPEND: xt-xcc -M -Os -g -Wpointer-arith -Wundef -Wl,-EL -fno-inline-functions -nostdlib -mlongcalls -mtext-section-literals -ffunction-sections -fdata-sections -fno-builtin-printf -fno-guess-branch-probability -freorder-blocks-and-partition -fno-cse-follow-jumps -DICACHE_FLASH -DSPI_FLASH_SIZE_MAP=0 -I include -I ./ -I ../../include/ets -I ../include -I ../../include -I ../../include/eagle -I ../../driver_lib/include user_light_adj.c
DEPEND: xt-xcc -M -Os -g -Wpointer-arith -Wundef -Wl,-EL -fno-inline-functions -nostdlib -mlongcalls -mtext-section-literals -ffunction-sections -fdata-sections -fno-builtin-printf -fno-guess-branch-probability -freorder-blocks-and-partition -fno-cse-follow-jumps -DICACHE_FLASH -DSPI_FLASH_SIZE_MAP=0 -I include -I ./ -I ../../include/ets -I ../include -I ../../include -I ../../include/eagle -I ../../driver_lib/include user_webserver.c
DEPEND: xt-xcc -M -Os -g -Wpointer-arith -Wundef -Wl,-EL -fno-inline-functions -nostdlib -mlongcalls -mtext-section-literals -ffunction-sections -fdata-sections -fno-builtin-printf -fno-guess-branch-probability -freorder-blocks-and-partition -fno-cse-follow-jumps -DICACHE_FLASH -DSPI_FLASH_SIZE_MAP=0 -I include -I ./ -I ../../include/ets -I ../include -I ../../include -I ../../include/eagle -I ../../driver_lib/include user_esp_platform_timer.c
DEPEND: xt-xcc -M -Os -g -Wpointer-arith -Wundef -Wl,-EL -fno-inline-functions -nostdlib -mlongcalls -mtext-section-literals -ffunction-sections -fdata-sections -fno-builtin-printf -fno-guess-branch-probability -freorder-blocks-and-partition -fno-cse-follow-jumps -DICACHE_FLASH -DSPI_FLASH_SIZE_MAP=0 -I include -I ./ -I ../../include/ets -I ../include -I ../../include -I ../../include/eagle -I ../../driver_lib/include user_main.c
user_main.c:38:2: error: #error "The flash map is not supported"
 #error "The flash map is not supported"
  ^

这时候我们需要修改顶层Makefile里面的第25行左右。

在这里插入图片描述
在这里插入图片描述
将SPI_SIZE_MAP?=0修改为

SPI_SIZE_MAP?=4

最后记得保存
然后clean project 再编译工程

在这里插入图片描述
当控制台出现上图所示内容表示编译成功。

下面我们点亮Esp8266板载上的LED,同时串口打印出SDK版本。
我们打开driver_lib>user>user_main.c文件
找到这个函数,将其清空,开始写我们的程序
在这里插入图片描述

修改成如下:

/**
 * 延时函数
 */
void ICACHE_FLASH_ATTR delay_ms(u32 C_time)
{	for(;C_time>0;C_time--)
		os_delay_us(1000);
}

void ICACHE_FLASH_ATTR
user_init(void)
{
	u8 F_LED = 0 ;		// LED状态标志位

	uart_init(115200,115200);	// 初始化串口波特率
	os_delay_us(10000);			// 等待串口稳定
	os_printf("\t MY DEMO PROJECT\r\n");
	os_printf("\t SDK version:\t%s", system_get_sdk_version());

	PIN_FUNC_SELECT(PERIPHS_IO_MUX_GPIO2_U,	FUNC_GPIO2);	// GPIO2设为IO口

	//--------------------------------------------------------------------------
	GPIO_OUTPUT_SET(GPIO_ID_PIN(2),1);			// IO2 = 1(高电平)

	while(1)
	{
		system_soft_wdt_feed();					// 喂狗,防止复位

		F_LED = !F_LED;							// LED状态值翻转

		GPIO_OUTPUT_SET(GPIO_ID_PIN(2),F_LED);	// 设置LED(IO2)输出值

		delay_ms(500);							// 延时500Ms
	}
	
}

需要注意的是void ICACHE_FLASH_ATTR user_pre_init(void)需要对地址进行注册,这也是和2.x版本不一样的地方,否则模块会重启,切勿踩坑!
在SDK API开发文档也有详细的介绍!
在这里插入图片描述

最后保存!
先clean project 再编译工程。
下面我们开始烧写刚才编译的固件
我们打开烧写软件ESPFlashDownloadTool_v3.6.2.2
该软件在安信可的官网可以下载,或者也可以在我提供的链接下载。

在这里插入图片描述
然后会弹出一个框,我们选择ESP8266

在这里插入图片描述
固件在bin目录下
在这里插入图片描述
把固件加载到软件上并设置好地址,
在这里插入图片描述

下载说明在安信可资料里面有详细说明,感兴趣的可前往了解。
在这里插入图片描述
选择好串口端口后点击START下载。
在这里插入图片描述
下载成功。
在这里插入图片描述
串口助手成功打印数据!
在这里插入图片描述
LED也开始闪烁

需要该软件可以关注公众号:智慧小巷
回复:8266
即可!
在这里插入图片描述
感谢阅读!

  • 3
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值