ESP32 环境搭建以及入门编程流程和体验-windows

  本帖适合入门级人员,但同时欢迎新老读者批评指正。python

  某宝上买了个esp32,还有一本ESP32开发指南的书。linux

  而后就是环境搭建。上面写的主要是linux上的,我在本身的orange pi pc开发板上搭建了半天,后面仍是有些地方有问题,没弄好。之后有空了再处理处理,毕竟一个香橙派的价格那么低,再加一个显示屏价格也不高,并且它自己也能硬件编程,还能用于学习各类编程......虽然速度慢了点,可是入门级绝对够用。固然,若是那些A80啦、rk3399啦能便宜下来,最起码能比微型电脑便宜的话就行了......扯远了。c++

  因此,我换了window的环境搭建。以前有一个esp8266,只用它拿来玩micropython了,如今想学习esp32编程的话,除了用micropython,就要从新开始了。并且以前没怎么用过eclipse,搭建好环境后费了老半天事才搞明白。git

  如今简单说一下个人入门过程。github

一:win环境express

  我直接下载的安信可的一体化开发环境(以前esp8266就是安信可的,因此找了一下,果真有支持ESP32)。安信可官网   ,而后找到下方的  开发环境搭建: 如何安装安信可一体化开发环境 , 如何使用安信可 ESP 系列一体化开发环境 , 如何为 ESP 系列模组烧录固件编程

点进去,按照教程将网盘的文件下载下来,再将esp-idf下载下来,能够用刚才下载的软件中的 cygwn 软件进行 git 下载,就是下载目录下的AiThinkerIDE_V0.5\cygwin 中的Cygwin.bat,直接点开,以下:网络

用法同linux下的命令终端。推荐用这个进行 Git 下载,由于我发现esp32  的 GitHub上有几个直接点下载,没法下载,可是能够git clone下来,好比里面有个用ESP32写的NES游戏模拟器!app

cd 到你想下载到的文件目录下,输入 Git clone --recursive https://github.com/espressif/esp-idf 下载,注意git clone必须添加--recursive,不然没法拉取components目录下的所有模块。cd 进去,ls 回车能够看到目录,以下:less

l components:ESP-IDF的核心组件

l docs:ESP-IDF相关文档

l examples:ESP-IDF提供的示例程序,包括众多外设、Wi-Fi、蓝牙等demo

l make:EPS-IDF工程管理目录

l tools:ESP-IDF提供的工具集

而后最好创建一个APP文件夹,将提供的另外一个示例程序git 进去。

整个过程以下:

app文件夹内是你本身要运行的主文件,可使你之后本身编写的东西。这个例子中不下载esp-idf-template 也能够。

最后一行是用来补齐遗漏的模块的(反正我也是从网上看来的,照作就好了。)

  而后,点开以前的IDE的文件件,双击打开ESP_IDE.exe,前两个都在当前目录下,本身一个一个打开就好了,第三个就是你刚在下载的esp-idf文件目录了。就选到你下载的名为esp-idf的文件夹就能够。

 

 

  好了,重头戏来了。

  直接点开AiThinker_IDE.exe,就打开了eclipse,而后在左面空白处点import,将你的esp-idf工程整个加载进来。详细步骤能够参考网络。(我是将整个文件夹复制到了某个文件夹内再打开的,同样。)

  而后对着左侧工程的总目录右击,(很差截图)就是esp-idf 目录右击,选最下面的Propertie 选项,在c/c++Build 右侧修改后面的地址,成你本身放min函数的地方(如以前创建的app,注意看下载后app文件夹里面包含的文件夹)。

 

 

而后,仍是对着左侧总目录右击

选择 Make Targets 中的create 选项,添加以下

一样步骤,再弄一个build:

编译以前,按 shift + F9,调出一个选项,

选上后点build,编译一会跳出一个界面,通常只须要直接选择exit退出就行了。

而后你就能够直接在左侧工程总目录右击选择 Buil Project 了(若是以前build 过了,记得clean一下)。

好了,一个工程的步骤就这样了。

不过若是你想写个本身的程序,该怎么弄呢?

我们先从修改例程开始。

将~\esp-idf\examples\get-started\hello_world下面全部的文件  (三个吧)复制到你本身刚才创建的app目录下,选择 覆盖粘贴,而后 对左侧总目录右击,选择 Refresh 更新一下,如今你也能够编译了,不过是人家的,(编译时间太长了,若是你想试验本身的代码的话,仍是先修改吧。)之后写程序的步骤基本就是这样。要是更名字的话能够去Makefile文件里改一下(其余地方可能也要改,本身摸索一下)。

它的代码以下:

 1 /* Hello World Example
 2 
 3    This example code is in the Public Domain (or CC0 licensed, at your option.)
 4 
 5    Unless required by applicable law or agreed to in writing, this
 6    software is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR
 7    CONDITIONS OF ANY KIND, either express or implied.
 8 */
 9 #include <stdio.h>
10 #include "freertos/FreeRTOS.h"
11 #include "freertos/task.h"
12 #include "esp_system.h"
13 #include "esp_spi_flash.h"
14 
15 
16 void app_main()
17 {
18     printf("Hello world!\n");//串口打印
19 
20     /* Print chip information */
21     esp_chip_info_t chip_info;
22     esp_chip_info(&chip_info);
23     printf("This is ESP32 chip with %d CPU cores, WiFi%s%s, ",
24             chip_info.cores,
25             (chip_info.features & CHIP_FEATURE_BT) ? "/BT" : "",
26             (chip_info.features & CHIP_FEATURE_BLE) ? "/BLE" : "");
27 
28     printf("silicon revision %d, ", chip_info.revision);
29 
30     printf("%dMB %s flash\n", spi_flash_get_chip_size() / (1024 * 1024),
31             (chip_info.features & CHIP_FEATURE_EMB_FLASH) ? "embedded" : "external");
32 
33     for (int i = 10; i >= 0; i--) {
34         printf("Restarting in %d seconds...\n", i);
35         vTaskDelay(1000 / portTICK_PERIOD_MS);
36     }
37     printf("Restarting now.\n");
38     fflush(stdout);
39     esp_restart();//重启选项
40 }

 

 参考example下的GPIO例子,简单修改以下:

 

 1 * Hello World Example
 2 
 3    This example code is in the Public Domain (or CC0 licensed, at your option.)
 4 
 5    Unless required by applicable law or agreed to in writing, this
 6    software is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR
 7    CONDITIONS OF ANY KIND, either express or implied.
 8 */
 9 #include <stdio.h>
10 #include "freertos/FreeRTOS.h"
11 #include "freertos/task.h"
12 #include "esp_system.h"
13 #include "esp_spi_flash.h"
14 
15 
16 #include <string.h>
17 #include <stdlib.h>
18 #include "freertos/FreeRTOS.h"
19 #include "freertos/task.h"
20 #include "freertos/queue.h"
21 #include "driver/gpio.h"
22 
23 #define GPIO_OUTPUT_IO_LED   2
24 #define GPIO_OUTPUT_PIN_SEL  ((1<<GPIO_OUTPUT_IO_LED) )
25 int i=0;
26 void app_main()
27 {
28 
29      //初始化GPIO引脚,直接复制自GPIO例子
30       gpio_config_t io_conf;
31         //disable interrupt
32         io_conf.intr_type = GPIO_PIN_INTR_DISABLE;
33         //set as output mode
34         io_conf.mode = GPIO_MODE_OUTPUT;
35         //bit mask of the pins that you want to set,e.g.GPIO2
36         io_conf.pin_bit_mask = GPIO_OUTPUT_PIN_SEL;
37         //disable pull-down mode
38         io_conf.pull_down_en = 0;
39         //disable pull-up mode
40         io_conf.pull_up_en = 0;
41         //configure GPIO with the given settings
42         gpio_config(&io_conf);
43 
44 
45     printf("Hello world!\n");
46 
47     /* Print chip information */
48     esp_chip_info_t chip_info;
49     esp_chip_info(&chip_info);
50     printf("This is ESP32 chip with %d CPU cores, WiFi%s%s, ",
51             chip_info.cores,
52             (chip_info.features & CHIP_FEATURE_BT) ? "/BT" : "",
53             (chip_info.features & CHIP_FEATURE_BLE) ? "/BLE" : "");
54 
55     printf("silicon revision %d, ", chip_info.revision);
56 
57     printf("%dMB %s flash\n", spi_flash_get_chip_size() / (1024 * 1024),
58             (chip_info.features & CHIP_FEATURE_EMB_FLASH) ? "embedded" : "external");
59 
60    // for (int i = 10; i >= 0; i--)
61     while(1)
62     {
63        //printf("Restarting in %d seconds...\n", i);
64         vTaskDelay(1000 / portTICK_PERIOD_MS);//延时 65         printf("I am ZhiNianZhiZhan! \n");
66         printf("Try To Study ESP32\n");
67         gpio_set_level(GPIO_OUTPUT_IO_LED, i % 2);//将板子上的led灯不断翻转IO,使其闪烁
68         i++;
69         if(i>499)i=0;
70     }
71     //printf("Restarting now.\n");
72 
73    //fflush(stdout);
74     //esp_restart();//重启函数,屏蔽掉就不重启了。
75 }

接着,build。漫长的等待......build成功会显示以下东西:

 

build成功后,就是下载了。

在乐鑫官网能够找到,地址,下载后打开,选择esp32下载,而后界面如图,按照下面的选上固件,填上对应的地址,选好串口,就能够点下载了。

如图:

一、二、3就是选择要下载的.bin文件和下载地址(地址不要搞错了),三个文件都在build文件夹里面。

  点进去一看,这么多文件夹?

  别急。先第一个,选择build文件夹下bootloader里面的bootloader.bin,前面打上勾,后面填0x1000,。而后第二三个都在build目录下,正好两个,记得partitions_singleapp.bin的地址填0x8000,本身的主要文件.bin(此处为hello-world.bin)的地址填0x10000。

  接着,把下面的选项对着选好(默认的应该就是),接着按照你板子所插的USB口的串口号选填COM口(不知道的或是驱动还没安的就百度一下吧,能够插上后用驱动精灵安装驱动,而后在设备管理中查看com 号)。

      最后,点下载。最新的下载器不须要按板子上的按键,本身就下载了。

  下载完成后,下载器左下角会变成“FINISH 完成”字样,而后你就能够串口链接,或是直接按一下板子上的EN键,当蓝色的小灯一闪一闪的,以及串口不断输出两行字符,就说明整个步骤成功了。

固然,也能够看串口输出。好比用 串口猎人之类的。我用的是 SecureCRT ,很好用,刷上micropython,这个能够直接当交互界面,而串口猎人 等软件则要么不行,要么输入麻烦。推荐这个,能够百度搜。

  好了,先写到这儿,之后慢慢摸索开发,再写教程。