使用html钮点亮对应的led灯源码,Esp8266学习之旅② 利用GPIO开始使用按钮点亮你的“第一盏灯”。(附带demo)...

本系列博客学习由非官方人员 半颗心脏 潜心所力所写,仅仅作我的技术交流分享,不作任何商业用途。若有不对之处,请留言,本人及时更改。

不少人怎么联系我一块儿学习进步,下面打个小小公告和福利分析:

玩转esp8266带你飞、加群付费QQ群,提升门槛,不喜的朋友勿喷勿加:434878850

esp8266源代码免费学习汇总(持续更新,欢迎star):https://github.com/xuhongv/StudyInEsp8266

esp32源代码免费学习汇总(持续更新,欢迎star):https://github.com/xuhongv/StudyInEsp32git

目录:

1、本篇主要介绍的如何利用其管脚获取高低电平与怎么样控制高低电平。

本博文针对的是 nonos版本!

电路原理图:github

咱们经过按钮S1按下以后,led0就亮,再点击一次就灭。看图咱们可看到,开关s1链接的是GPIO02的管脚,而LED灯链接的是GPIO16的管脚。通常来讲,咱们只要观察S1是否按下就来对灯进行开关。web

3c86747968964e9b94647bf72a9f2291.png

打开乐鑫的SDK技术文档,咱们搜索下管脚GPIO的相关设置:编程

先选定一个GPIO管脚。用 **PIN_FUNC_SELECT(PIN_NAME, FUNC) **函数。好比我选定GPIO14这个管脚,则这样写:PIN_FUNC_SELECT(PERIPHS_IO_MUX_MTMS_U, FUNC_GPIO14);json

若是你设置这个管脚为高电平,则这样写:GPIO_OUTPUT_SET(GPIO_ID_PIN(14), 1);api

-若是你设置其为读取状态功能则,这样初始化: GPIO_DIS_OUTPUT(GPIO_ID_PIN(14)) ;数组

cd40832606653a46ccf8e4e0d20427ee.png

f738b06935f98fae1e2e3d444e6ea9a7.png

2、程序入口:user_main.c 。

#include "driver/uart.h" //串口0须要的头文件

#include "osapi.h" //串口1须要的头文件

#include "user_interface.h" //WIFI链接须要的头文件

#include "gpio.h" //端口控制须要的头文件

void delay_ms(uint16 x)

{

for(;x>0;x--)

{

os_delay_us(1000);

}

}

void user_init()//初始化

{

uint8 bz=0;

uart_init(57600, 57600);//设置串口0和串口1的波特率

PIN_FUNC_SELECT(PERIPHS_IO_MUX_MTMS_U, FUNC_GPIO14);//选择GPIO14

GPIO_OUTPUT_SET(GPIO_ID_PIN(14), 1);//GPIO14为高

PIN_FUNC_SELECT(PERIPHS_IO_MUX_GPIO2_U,FUNC_GPIO2);//选择GPIO2

GPIO_DIS_OUTPUT(GPIO_ID_PIN(2)) ; // 设置GPIO2为输入

while(1)

{

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

if(GPIO_INPUT_GET(GPIO_ID_PIN(2))==0x00)//读取GPIO2的值,按键按下为0

{

delay_ms(20); //延时20MS,去抖

if(GPIO_INPUT_GET(GPIO_ID_PIN(2))==0x00)

{

bz++;

if(bz==2)bz=0;

if(bz==1)GPIO_OUTPUT_SET(GPIO_ID_PIN(14), 0); //GPIO16为低

if(bz==0)GPIO_OUTPUT_SET(GPIO_ID_PIN(14), 1); //GPIO16为高

while(GPIO_INPUT_GET(GPIO_ID_PIN(2))==0x00); //等待按键释放

}

}

}

}

void user_rf_pre_init()

{

}

3、编译与烧录。

每次编译工程以前记得先clear project ,再build project 编译工程,保证生成的bin文件不出错。安全

博主习惯于 Intellij IDEA类型的编译器,因此不用本身点击保存,eclipse须要本身点击保存,真麻烦… 因此,提醒各位小伙伴,每次修改了文件,记得 save 保存一下。服务器

问题①:关于生成的bin文件问题。

①、有些小伙伴生成的bin文件可能以下(提示不须要boot文件):

若是你的编译结果是如下的结果,那么您的烧录方式就不须要 烧录 boot.bin文件啦。

1954c982385173fd95c6877bc92ef06e.png

那么对应的文件烧录地址以下格式:

烧录文件

烧录地址

blank.bin

0x3fe000

esp_init_data_default.bin

0x3fc000

eagle.flash.bin

0x00000

eagle.irom0text.bin

0x40000

2cc03088109b8c652bb3c9e92e373c83.png

②、有些小伙伴生成的bin文件可能以下图(提示已经生成在upgrade文件夹生成):

a4a7c526702d33fcb9f9423a62c13e4f.png

那么对应的文件烧录地址以下格式:

烧录文件

烧录地址

blank.bin

0x3fe000

esp_init_data_default.bin

0x3fc000

boot.bin

0x00000

user1.4096.new.6.bin

0x01000

b4048d35ee18fd30a3c77d82aebd045d.png

等到下载完成就能够点击按下亮灯啦。

后记:全部本身编译出来的工程,都是有四个文件要烧录的,其中2个是必须烧录的(防止初始化失败),这2个文件分别是 esp_init_data_default.bin 和blank.bin,烧录地址根据您的8266型号区别,咱们最日常用的是安信可8266-12系列的,这个是32Mbit,也就是4M flash ,因此他们的地址分别是 0x3FC000 和 0x3FE000 , 最后2个的烧录文件地址看编译以后结果而决定!也便是不必定是0x10000,有多是0x2000 , 这个根据SDK的版本有关系。因此你们仍是留心点!

4d3d42d354aa6876839f17d3024d55f9.png

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值