ESP32環境搭建以及入門編程
某寶上買了個esp32,還有一本ESP32開發指南的書。
然后就是環境搭建。上面寫的主要是linux上的,我在自己的orange pi pc開發板上搭建了半天,后面還是有些地方有問題,沒弄好。以后有空了再處理處理,畢竟一個香橙派的價格那么低,再加一個顯示屏價格也不高,而且它本身也能硬件編程,還能用于學習各種編程,雖然速度慢了點,但是入門級絕對夠用。當然,如果那些A80啦、rk3399啦能便宜下來,最起碼能比微型電腦便宜的話就好了。
所以,我換了window的環境搭建。之前有一個esp8266,只用它拿來玩micropython了,現在想學習esp32編程的話,除了用micropython,就要重新開始了。而且之前沒怎么用過eclipse,搭建好環境后費了老半天事才搞明白。
現在簡單說一下我的入門過程。
一:win環境
我直接下載的安信可的一體化開發環境(之前esp8266就是安信可的,所以找了一下,果然有支持ESP32)。安信可官網 ,然后找到下方的 開發環境搭建: 如何安裝安信可一體化開發環境 , 如何使用安信可 ESP 系列一體化開發環境 , 如何為 ESP 系列模組燒錄固件
點進去,按照教程將網盤的文件下載下來,再將esp-idf下載下來,可以用剛才下載的軟件中的 cygwn 軟件進行 git 下載,就是下載目錄下的AiThinkerIDE_V0.5cygwin 中的Cygwin.bat,直接點開,如下:
用法同linux下的命令終端。推薦用這個進行 Git 下載,因為我發現esp32 的 GitHub上有幾個直接點下載,無法下載,但是可以git clone下來,比如里面有個用ESP32寫的NES游戲模擬器!
cd 到你想下載到的文件目錄下,輸入 Git clone --recursive https://github.com/espressif/esp-idf 下載,注意git clone必須添加--recursive,否則無法拉取components目錄下的全部模塊。cd 進去,ls 回車可以看到目錄,如下:
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-idfexamplesget-startedhello_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! ”);//串口打印
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 ”, 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.。。 ”, i);
35 vTaskDelay(1000 / portTICK_PERIOD_MS);
36 }
37 printf(“Restarting now. ”);
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! ”);
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 ”, 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.。。 ”, i);
64 vTaskDelay(1000 / portTICK_PERIOD_MS);//延時
65 printf(“I am ZhiNianZhiZhan! ”);
66 printf(“Try To Study ESP32 ”);
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. ”);
72
73 //fflush(stdout);
74 //esp_restart();//重啟函數,屏蔽掉就不重啟了。
75 }
接著,build。漫長的等待。。。。。.build成功會顯示如下東西:
build成功后,就是下載了。
在樂鑫官網可以找到,地址,下載后打開,選擇esp32下載,然后界面如圖,按照下面的選上固件,填上對應的地址,選好串口,就可以點下載了。
1、2、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,這個可以直接當交互界面,而串口獵人 等軟件則要么不行,要么輸入麻煩。推薦這個,可以百度搜。
評論
查看更多