zoukankan      html  css  js  c++  java
  • ESP8266-12F学习之点亮一个LED灯

         点亮一个LED灯

        上一篇文章,我们介绍了怎么在Windows系统下搭建一个SEP8266的开发环境,那在这一篇文章中我们要开始来编写一个硬件入门经典小程序,如何点亮一个LED小灯,同时在这一章中我们还会介绍怎么样将编译好的程序下载到ESP8266-12f中。

         第一步:下载官方demo框架,从http://wiki.ai-thinker.com/esp8266/examples 下载,当然,也可以在文章最后下载我的附件,下载完后,我们将文件添加到SDK中进行编译,步骤如图:

         

        

             点开C/C++分支,并选中Existing Code as Makefile Project:

         

        

             去除C++支持,选中 Cygwin GCC,点击Browser,选中我们解压后所在的目录。点击finish。

          

            到这里,应该就成功的将我们的工程文件添加到SKD当中了,红色框内为所添加的文件。

            

             接下来开始编写程序部分,这里我们涉及到ESP8266-12F的IO口的控制,控制方法其实和STM32库函数类似比如

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

    • 如果你设置这个管脚为高电平,则这样写:GPIO_OUTPUT_SET(GPIO_ID_PIN(14), 1);

              如果你设置其为读取状态功能则,这样初始化: GPIO_DIS_OUTPUT(GPIO_ID_PIN(14)) ;

              

             

               具体请参考;乐鑫官方手册,这个我会放到文章底部的附件中。

              

                  开始编译工程前,我们要先修改程序,在其的 app ->user –> user_main.c 下的修改如下,让灯间断亮灭。 
     1 /*********************************************************************************************
     2 程序名:  控制LED(读取GPIO口的状态)
     3 编写人:     
     4 编写时间:  
     5 硬件支持:  
     6 接口说明:  
     7 修改日志:  
     8   NO.1-                                
     9 /*********************************************************************************************
    10 说明:
    11 
    12 /*********************************************************************************************/
    13 #include "driver/uart.h"  //串口0需要的头文件
    14 #include "osapi.h"  //串口1需要的头文件
    15 #include "user_interface.h" //WIFI连接需要的头文件
    16 #include "gpio.h"  //端口控制需要的头文件
    17 
    18 void delay_ms(uint16 x)
    19 {
    20     for(;x>0;x--)
    21     {
    22       os_delay_us(1000);
    23     }
    24 }
    25 
    26 void  user_init()//初始化
    27 {
    28     
    29 
    30     uart_init(57600, 57600);//设置串口0和串口1的波特率
    31 
    32     PIN_FUNC_SELECT(PERIPHS_IO_MUX_MTMS_U, FUNC_GPIO14);//选择GPIO14
    33     GPIO_OUTPUT_SET(GPIO_ID_PIN(12), 1);//GPIO12为低
    34 
    35     while(1)
    36     {
    37         system_soft_wdt_feed();//这里我们喂下看门狗  ,不让看门狗复位
    38                 GPIO_OUTPUT_SET(GPIO_ID_PIN(12), 0);           //GPIO14为低
    39                 delay_ms(1000);
    40                 GPIO_OUTPUT_SET(GPIO_ID_PIN(12), 1);            //GPIO14为高
    41                 delay_ms(1000);
    42     
    43     }
    44 
    45 
    46 
    47 }
    48 
    49 void user_rf_pre_init()
    50 {
    51 
    52 }

             

             接下来是编译,注意这时候避免误报错误,直接把 Problems 栏目关掉,解释说,这个Problems 栏目报的错误不准确,只有Console 栏目下的输出为准,所以建议大家把 Problems 栏目关闭。
    • 之后建议大家每次编译项目前先进行 clear project,再 build project ,这样就保证了正确的代码可以完全被编译,如果正确的代码没有clear project就直接build project ,可能会报错。

    • Build Project :编译项目 ; Clean Project:清理项目,可以清理下缓存。

          

          选中工程文件,单击右键

           

          编译好后,出现如下区域情况,就说明编译成功了。

          

        接下来注意了,敲黑板,划重点!!!我们要开始将编译好的程序烧录到ESP8266-12F中,下面的方法只适用于ESP8266-12F,别的型号不保证能成功哦,如果你不确定你的芯片型号,可以将芯片反过来看反面的丝印

                                                                       

                       

              下载烧录工具:http://www.espressif.com/zh-hans/support/download/other-tools,请到这里下载,安装好后界面如下:

               

               根据上面的编译,我们看到了如下烧录信息:

              boot.bin------------>0x00000
              user1.4096.new.6.bin--->0x01000

              这个就是我们烧录时需要填入的地址,同时还提示我们,生成了user1.4096.new.6.bin 文件在 工程文件中的bin/upgrade目录下,我们再烧录软件中将路径依次填入如下:

               

             

            点击start开始下载,无响应时点击复位按钮,会看到正在下载,下载完成后记得将GPIO0引脚与GND断开,再按下复位键,程序就能运行了。

            PS:忘记了,LED灯接的IO口是GPIO12,这里就不贴图了哈!

            没找到插入附件的地方在哪,这里附上百度云链接:链接:https://pan.baidu.com/s/1nuXvtBN 密码:iszz

             

              

          

        

  • 相关阅读:
    spark 读取mongodb失败,报executor time out 和GC overhead limit exceeded 异常
    在zepplin 使用spark sql 查询mongodb的数据
    Unable to query from Mongodb from Zeppelin using spark
    spark 与zepplin 版本兼容
    kafka 新旧消费者的区别
    kafka 新生产者发送消息流程
    spark ui acl 不生效的问题分析
    python中if __name__ == '__main__': 的解析
    深入C++的new
    NSSplitView
  • 原文地址:https://www.cnblogs.com/xiongzongxiong/p/8093343.html
Copyright © 2011-2022 走看看