項目1任務3-ESP32的串口功能_第1頁
項目1任務3-ESP32的串口功能_第2頁
項目1任務3-ESP32的串口功能_第3頁
項目1任務3-ESP32的串口功能_第4頁
項目1任務3-ESP32的串口功能_第5頁
已閱讀5頁,還剩4頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權,請進行舉報或認領

文檔簡介

2相關知識34任務小結與練習1任務實施任務引入與目標ESP32的串口功能一、任務引入與目標任務目標任務3將學習ESP32的串口功能和相關方法,并利用串口打印和讀取串口數(shù)據(jù)的方法,編寫一個工程,測試數(shù)據(jù)接收功能。任務引入任務2為ESP32編寫了簡單的LED控制程序,容易觀察結果是否正確。如果是比較復雜的程序,當運行有問題時,該怎樣調(diào)試呢?這就需要用到串口的打印輸出功能,可以將程序運行過程的一些狀態(tài)打印出來。當然串口還有數(shù)據(jù)輸出和數(shù)據(jù)輸入的功能,都是比較常用的。二、相關知識Arduino中UART協(xié)議在Arduino中,串行通信協(xié)議是一種常見的通信方式,通過一個或多個串口連接兩個或多個設備。串行通信協(xié)議可以使用不同的協(xié)議和格式,最常見的是UART(通用異步收發(fā)器)協(xié)議。UART協(xié)議使用兩個引腳進行通信:TX(發(fā)送)和RX(接收)。當設備1向設備2發(fā)送數(shù)據(jù)時,它將數(shù)據(jù)寫入TX引腳,并且設備2會從其對應的RX引腳讀取數(shù)據(jù)。這種通信通常是基于字節(jié)的,即一個字節(jié)一個字節(jié)地發(fā)送和接收。每個字節(jié)都由一個起始位、一個或多個數(shù)據(jù)位、一個可選的奇偶校驗位和一個或多個停止位組成。在Arduino中,串口通信通常使用Serial庫來實現(xiàn)。需要注意的是,在進行串行通信時,需要確保發(fā)送和接收端的波特率(數(shù)據(jù)傳輸速率)是相同的,否則可能會導致通信失敗。波特率可以在初始化串口對象時設置。二、相關知識ESP32的串口ESP32共有3個UART端口,其中UART1用于Flash讀/寫,見表1-1。UART0在Arduino程序中的對象名是Serial,UART2在Arduino程序中的對象名是Serial2,對應的發(fā)送和接收引腳見表11。比較方便的安排是:用Serial進行打印調(diào)試,用Serial2與其他設備進行串口通信。串口名Arduino名TXRXUART0Serialpin1pin3UART1Serial1pin10pin9UART2Serial2pin17pin16圖1-10Arduino中的示例Blink三、任務實施實施設備部署了Arduino開發(fā)環(huán)境的計算機。實施過程1.下載示例StringToInt程序如下:StringinString="";//stringtoholdinputvoidsetup(){//Openserialcommunicationsandwaitforporttoopen:Serial.begin(9600);while(!Serial){;//waitforserialporttoconnect.NeededfornativeUSBportonly}//sendanintro:Serial.println("\n\nStringtoInt():");Serial.println();}voidloop(){//Readserialinput:while(Serial.available()>0){intinChar=Serial.read();if(isDigit(inChar)){//converttheincomingbytetoacharandaddittothestring:inString+=(char)inChar;}三、任務實施//ifyougetanewline,printthestring,thenthestrings'value:if(inChar==\'n'){Serial.print("Value:");Serial.println(inString.toInt());Serial.print("String:");Serial.println(inString);//clearthestringfornewinput:inString="";}}}在setup初始化函數(shù)中,調(diào)用Serial對象的begin方法設置波特率為9600,注意與之連接的另一個設備的波特率要求一致。在loop循環(huán)函數(shù)中,調(diào)用Serial對象的available方法判斷是否收到串口數(shù)據(jù),是的話就讀取數(shù)據(jù)。Serial對象的read方法每次只讀一個字符(字節(jié)),通過While循環(huán)將串口緩沖區(qū)的所有數(shù)據(jù)全部讀取,將其中滿足數(shù)字格式的字符(如“2”)拼接為字符串inString。如果遇到結束符(換行符),則調(diào)用Serial的print和println方法打印調(diào)試信息。三、任務實施2.運行效果下載程序后,打開串口監(jiān)視器,波特率設為9600,效果如圖1-13所示。圖1-13數(shù)據(jù)收發(fā)工作效果從電腦發(fā)送字符串"12"到ESP32的Serial串口,ESP32將接收的字符串轉為數(shù)字后按照格式"Value:12"發(fā)送給電腦。如果電腦發(fā)送的字符串中不包含數(shù)字部分,則功能不能實現(xiàn)。四、任務小結與練

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經(jīng)權益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論