本帖最后由 376262974 于 2015-5-23 12:15 编辑
看了火哥的视频这么多,这么久,火哥无私的奉献了这么多知识,我也要传承下火哥的精神。
最近在研究ESP8266。
ESP8266不仅仅只是玩玩AT指令,他有SDK,有自己的IDE,可以自行更改代码,可玩性非常高。
至于如何使用IDE,我这里不说明,我发个PDF。↓
我这主要讲下SDK的一些简单的运用,分享下例程和SDK的编程手册。
首先来个最简单的控制IO↓
GPIO管脚定义 头文件:gpio.h IO资源说明:
ESP8266除去FLASH的SPI接口外,剩有9个IO口资源,
分别是:gpio0,GPIO2,GPIO4,GPIO5,GPIO12,GPIO13
GPIO14,GPIO15,GPIO16;
gpio0,GPIO2,GPIO15用于确定系统的启动模式
GPIO0 | GPIO2 | GPIO15 | 运行模式 | x | x | 1 | SDIO模式(不常用) | 1 | 1 | 0 | 外部FLash启动 | 0 | 1 | 0 | 串口下载模式 | 注:SDIO模式下,可使用外部MCU驱动内部的WIFI,此模式较少使用。
外部Flash启动模式,系统启动后,GPIO0 GPIO2 GPIO15将被释放,可重新作为IO口使用。
串口下载模式,程序在MCU内,可用于串口下载程序到FLASH中
每次要切换模式,重须重启电源,只有MCU上电时,才会检查模式。 GPIO16可作为睡眠唤醒IO口(控制方式与其他IO不同)
GPIO12,GPIO13,GPIO15可作为硬件PWM输出
GPIO12,GPIO14可作为硬件I2C控制(主机模式)
IO名称定义:
IO口 | PIN_NAME | Mask | FunName1 | FunName2 | GPIO0 | PERIPHS_IO_MUX_GPIO0_U | BIT0 | FUNC_GPIO0 | NULL | GPIO2 | PERIPHS_IO_MUX_GPIO2_U | BIT2 | FUNC_GPIO2 | 见注[1] | GPIO4 | PERIPHS_IO_MUX_GPIO4_U | BIT4 | FUNC_GPIO4 | NULL | GPIO5 | PERIPHS_IO_MUX_GPIO5_U | BIT5 | FUNC_GPIO5 | NULL | GPIO12 | PERIPHS_IO_MUX_MTDI_U | BIT12 | FUNC_GPIO12 | NULL | GPIO13 | PERIPHS_IO_MUX_MTCK_U | BIT13 | FUNC_GPIO13 | NULL | GPIO14 | PERIPHS_IO_MUX_MTMS_U | BIT14 | FUNC_GPIO14 | NULL | GPIO15 | PERIPHS_IO_MUX_MTDO_U | BIT15 | FUNC_GPIO15 | FUNC_U0RTS | GPIO16 | NULL(单独操作) | BIT16 | NULL | NULL | 注[1]: FunName2:FUNC_U1TXD_BK FunName3:FUNC_U0TXD_BK
注:GPIO16与其他IO操作不同,使用单独的操作函数 备注:以上有PIN_NAME和Mask,均为宏定义,在后续的IO控制中将会使用到(作为参数)
GPIO功能设置 头文件:gpio.h 函数原型1:void PIN_FUNC_SELECT(PIN_NAME, FUNC); 参数:
PIN_NAME: 管脚名,见GPIO管脚定义(PIN_NAME)
FUNC : 功能,见GPIO管脚定义(FunName)
GPIO输入输出配置 头文件:gpio.h 函数原型1:void gpio_output_set(set_mask, clear_mask,enable_mask,disable_mask);
参数及功能:
set_mask: Mask值(指某路IO),表示要置为高电平的IO,0表示不改变状态
clear_mask: Mask值(指某路IO),表示要置为低电平的IO,0表示不改变状态
enable_mask: Mask值(指某路IO),表示使能IO口为输出,0表示不改变状态
disable_mask:Mask值(指某路IO),表示使能IO口为输入,0表示不改变状态 注:Mask类型可参考GPIO管脚定义,如GPIO12,其Mask值为BIT12 以下IO控制的例程代码实用:
//配置管脚功能,
//配置 GPIO12 为 普通IO口
PIN_FUNC_SELECT(PERIPHS_IO_MUX_MTDI_U,FUNC_GPIO12);
[url=]//设置 GPIO12 输出高电平
gpio_output_set(BIT12,0,BIT12,0);[/url]
//设置 GPIO12 输出低电平
gpio_output_set(0,BIT12,BIT12,0);
(是的,就是这么简短。)
犹豫文件太大只能存百度云了:http://pan.baidu.com/s/1pJICVN1 m26w
再分享个我直接基于8266模块控制LED的视频
(不单单是运用IO这么简单,用网页或者微信来控制LED开关,只是随便录的,没给你们看到内部的的确确是用8266一个单片机来控制的)
http://v.youku.com/v_show/id_XOTU0ODEzOTM2.html
注:我不是8266模块的什么推广员啊之类的,我只是普普通通的玩家,好玩的几乎都玩,只是觉得这个WIFI模块挺好玩的,可以弄很多东西。
这模块一般单片机能支持的功能他都有,比如:串口,i2c,spi,pwm(直接有代码调用),红外(最新版直接有代码调用)...只想起这么多
我看火哥只是单纯的用用AT指令,所以就发这个,能更全面的使用8266。
再分享个我基于AT的SDK添加的直接控制IO的指令固(内附说明了)。
就这么多了,吃饭。
(很乱,我是想到什么说什么,没这么排版,也没这么思考,将就看下吧!如果有什么不明白就留言吧。处女贴。。。)
|