為什麼esp32總是編譯出錯
1. esp32 string拼接亂碼
步驟:
1、在進入esp32控制面板窗口後,找到「區域和語言選項」這一個圖標,雙擊打開此項。
2、進入區域語言選項窗口。
3、如果在設置「中文(中國)」區域語言時,彈出窗口,提示「插入磁碟」,這可能是「中文(中國)」語言字型檔損壞,必須修復安裝後就可解決esp32string拼接亂碼的問題。
2. esp32 外部flash啟動失敗
1、在含有esp32晶元電腦中,單擊「開始」菜單,單擊「控制面板」項,在打開的控制面板窗口雙擊「添加或刪除程序」。
2、在當前安裝的程序框中找到並選擇AdobeFlashPlayer項,單擊「刪除」按鈕,接下來根據提示說明卸載即可。
3、單擊「開始」菜單,單擊「運行」命令,在打開框中鍵入「%windir%system32Macromed」,單擊「確定」按鈕。
4、在打開的目錄窗口滑鼠右鍵刪除「Flash」文件夾,在重新啟動即可。
3. ESP8266編譯時錯誤
首先,我估計大家都沒有USB TO TTL 硬體,也不是所有的壇友都有mangoII,所以我今天就寫個特別的arino程序,讓arino變成一個串口轉發器。
原理很簡單。。從串口晶元到單片機和這個口是個並聯關系。。然後usb 到這個IO口有1k電阻,我就啟用了單片機的內上拉稍微平衡下阻抗,,就把arino板子作為usb to ttl工具了。。嘿嘿
(本設置在mangoII板硬體環境下測試通過,不確定其他硬體是否可以使用,請自行嘗試)
代碼如下:
ARDUINO 代碼復制列印
void setup() {
pinMode(0,INPUT_PULLUP);
pinMode(1,INPUT_PULLUP);
}
void loop() {
// put your main code here, to run repeatedly:
}
因為程序很簡單,我又偷懶就沒寫注釋了。主要內容就是創建一個軟串口,軟串口接模塊 ,然後讓軟串口的回顯數據轉發到硬體串口,硬體串口的輸入數據轉發到軟串口。
下面來介紹下接線
3V3 ------------ VCC
ARDUINO GND ------------ GND esp8266
IO1 ------------ TX
IO0 ------------ RX
注意,TX 是直接對應板子上的TX RX 對應RX。,。原因自己思考下。
非常簡單的接線,就是把我們的WIFI模塊接到arino的軟串口上,需要注意的是,wifi模塊是3.3V供電。
好了。已經全部准備好了。我們要正式開始了。首先我們打開串口監視器,然後重新插拔一下模塊的VCC接線(讓模塊重啟,顯示其啟動信息),你應該能看到如下圖所示的啟動信息,說明已經沒有任何問題了。
1.png
前面的亂碼是因為模塊啟動信息的波特率與後面啟動後不一致造成的,不管就行了
重點來了看窗口的右下角「沒有結束符」
這個要選擇成「回車」如下圖
1.png
我們輸入下面這個指令
AT+Reset
復制代碼
點擊發送後,模塊會重啟
顯示如下
AT+Reset
done
返回字元是done 為啥d沒了呢,實際上是有的。可能是軟串口的bug,這個我們不研究了。。反正能用知道就行了,不影響使用。
好上面的重啟命令我們等會會經常用到
下面,我們要查詢一下模塊的工作模式,模塊一共有三種工作模式1.Station 2.AP 3.Station+AP 第一種是客戶端模式,第二種是接入點模式,第三種是兩種模式共存。既然我們是登陸路由器然後往指定網路傳數據,所以我們選第一種模式。。
設置之前先查詢
AT+MODE?
復制代碼
返回內容:
AT+MODE?
+MODE:0
done
這個0就是沒配置的意思。。我們配置成1即可
用這個命令來設置
AT+MODE=1
復制代碼
這樣就設置成模式1了。具體的詳細指令請參閱上面的指令手冊以及自己多嘗試
返回如下:
AT+MODE=1
one
坑爹的d又丟了,不管~~~這個時候,關鍵的時刻來了,這時候雖然設置了。但還沒有生效,需要重啟模塊。還記得我之前說的指令么?我就不重復寫了。。反正這時候要重啟(拔電源插頭也是可以的)
然後我們來查詢下
AT+MODE?
復制代碼
返回如下:
AT+MODE?
+MODE:1
done
大概就是這樣就設置好模式了。
我們後面就暫時不介紹回顯內容了,很簡單
然後就是查詢一下附近能搜索到的wifi網路信號
AT+ShowAP
復制代碼
回顯內容就是周圍wifi信號
看到自己的wifi就可以加入網路了
AT+JoinAP="SSID","PASSWD"
復制代碼
很簡單的命令對吧,前面寫SSID號,後面寫密碼。回車發送命令就可以加入網路了。記得加完網路重啟下模塊
好了,這樣模塊就連上路由器了
下面就需要有個小工具,在自己計算機(區域網內)上建立一個TCP埠的監聽,來模擬伺服器
小工具連接
我計算機IP是192.168.1.101 我打算監聽8089埠,如下圖配置,監聽(當然你也可以監聽你需要的任何埠)
tcp.png
(說明:任何網路伺服器都可以看成是工作在指定埠,負責解析指定協議的埠監聽器)
設置模塊到單鏈接模式(只能使用一個連接的模式,這種比較方便簡單,多鏈接模式我們以後再講)
AT+MUX=0
復制代碼
然後重啟模塊(拔電或者用reset指令都可以)
好了。以上的設置模塊設置一次後,斷電後還是會有記憶的。。也就是說只需要配置一次。。下面開始建立TCP連接啥的。斷電不會重連了。。
下面我們在模塊上建立一個TCP的連接
使用指令
AT+NewSTA=「TCP」,「192.168.1.101」,8089
復制代碼
很簡單的指令,首先說明連接類型,目標ip地址,埠號。。這樣就建立好了。。
然後我們就能發送數據了
指令
AT+UpDate=11
復制代碼
然後串口會返回一個>號,我們繼續輸入hello world發送
這樣就會從TCP監聽的一端看到數據了。很簡單吧
指令後面的11的意思就是你要發送的字元的長度。系統是靠字元長度判斷一句話是否可以發送,所以我們的數據長度要和下面要發送的字元串的長度等長才行。。
簡單的教程目前就到這里了,有助於大家理解AT指令的使用。
另外我們還有一個arino的庫,雖然目前開發的不太完全,基本函數都開發完了,常式還沒寫好,bug可能還有不少,也都在調試中,有興趣的可以去看看
4. eclipse 報錯:93: undefined reference to
感覺你並沒有把.c文件加入到工程中,那當然是undefined reference了。
5. Clion編譯ESP32失敗
你好,你是想問Clion編譯ESP32失敗怎麼辦嗎?Clion編譯ESP32失敗是由於簽名過期問題,關掉簽名即可,進入menuconfig或進入設置,選項,關閉即可,關閉之後save,重新編譯工程即可通過。
6. ESP8266編譯報這個錯誤怎樣解決
1.刷機必須用FT232晶元的USB轉TTL模塊。(PL2303老是出錯CH340也出錯) 2.ESP8266供電必須足,否則容易不啟動(最好單獨供電3.3V,5v好像也可以用,我試了一晚上沒燒)。 3.注意模塊的版本,老版本的0.9.1.x的默認速率是115200,0.9.2.x以上的全...
7. ESP32 ubantu環境下make出錯
esp32是樂鑫出品的一款集成了wifi和藍牙的集成模塊,板上自帶兩個哈佛結構的Xtensa LX6 CPU雙核處理器,本文主要講解如何在linux下搭建其編譯開發環境。
首先ctrl+alt+t打開終端,sudo -s選擇用root許可權登陸,以免後面的操作一直要sudo很麻煩。
8. esp32管腳供電程序就崩潰
題主是否想詢問「esp32管腳供電程序就崩潰怎麼回事」?應用代碼不完整導致的。具體問題:
1、通常可通過PC寄存器,A0寄存器,EXCCAUSE寄存器和backtrace來初步定位esp32管腳供電程序代碼故障問題。
2、寄存器值若為0x00000000,可能是esp32管腳供電程序代碼中執行某個空callback,或執行調用某個為空的函數指針。
3、寄存器值若為野指針,例如0x80001210,可能是esp32管腳供電程序內存踩踏,一旦踩踏到棧底的PC,形如retw.n就會彈出野指針。建議聯系專業人員進行針對esp32管腳供電程序應用代碼不完整進行消除程序崩潰故障。
9. mixlyesp32s2編譯不了
如果想要查看路徑是否設置完成,在Windows的命令行工具下可以使用set+變數名也就是setIOT_SOLUTION_PATH進行查看,而set-target指令執行完後是會馬上有顯示的。
另外set-target有無成功和設置IOT_SOLUTION_PATH是沒有直接關系的,我這邊在Windows環境下用命令行試過了整個編譯過程是沒有問題的。另外根據你的描述應該是用的官方下載工具下載的IDF,不知道你iot-solution的下載方式,可能會有影響。