esp8266的串列埠通訊與傳統的arduino裝置完全一樣。除了硬體fifo(128位元組用於tx和rx)之外,硬體串列埠還有額外的
256位元組的tx和rx快取。傳送和接收全都由中斷驅動。當fifo/快取滿時,write函式會阻塞工程**的執行,等待空閒空間。
當fifo/快取空時,read函式也會阻塞工程**的執行,等待串列埠資料進來。
nodemcu上有兩組串列埠,serial和serial1。
serial使用uart0,預設對應引腳是gpio1(tx--d10)和gpio3(rx--d9)
在serial.begin執行之後,呼叫serial.swap()可以將serial重新對映到gpio15(tx---d8)和gpio13(rx---d7)。再次呼叫serial.swap()將serial重新對映回gpio1--d10和gpio3--d9。不過,一般
情況下,預設就好
例子一:對映
voidserial1使用uart1,預設對應引腳是gpio2(tx----d4)。serial1不能用於接收資料,因為它的rx引腳被用於flash晶元連線---d3。setup()
void
loop()
要使用serial1,請呼叫serial.begin(baudrate)
如果不使用serial1並且不對映串列埠,可以將uart0的tx對映到gpio2,具體操作是:在serial.begin()之後呼叫
serial.set_tx(2)或者直接呼叫serial.begin(baud,config,mode,2)。
預設情況下,當呼叫serial.begin後,將禁用wifi庫的診斷輸出。要想再次啟動除錯輸出,請呼叫
serial.setdebugoutput(true)。要將除錯輸出對映到serial1時,需要呼叫serial1.setdebugoutput(true)
呼叫serial.setrxbuffersize(size_t size)允許定義接收緩衝區的大小,預設值是256(緩衝區也是使用記憶體,意味著不能一
味地去增大這個值)。 serial和serial1物件都支援5,6,7,8個資料位,奇數(o)、偶數(e)和無(n)奇偶校驗,以
及1或者2個停止位。要設定所需的模式,請呼叫serial.begin(baudrate, serial_8n1), serial.begin(baudrate, serial_6e2)
等serial和serial1都實現了一種新方法用來獲取當前的波特率設定。要獲取當前的波特率,請呼叫serial.baudrate(),
serial1.baudrate()
例子:---獲取波特率
void串列埠用處setup()
void
loop()
一般來說,串列埠通訊用在兩個方面:
1.與外圍串列埠裝置傳輸資料,比如藍芽模組、arduino等等;
2.開發過程中用來除錯**,通過串列埠輸出debug資訊了解程式執行資訊
天子驕龍
ESP8266 學習筆記(八)串列埠原始碼分析
我一直對esp8266的串列埠傳輸的機制很好奇,沒辦法只得好好分析原始碼了。esp8266的中斷系統是必須要了解的。我分析的源 是分配有任務的,所以在任務函式中是無法看到中斷的。我的分析如下 實現如下 串列埠接收中斷處理函式 local void uart0 rx intr handler void...
ESP8266與STM32串列埠資料互動
stm32部分 程式分享 在這篇文章中我會通過介紹esp8266和stm32兩部分的 來實現兩塊mcu串列埠資料的互動,互動的資料格式採用的是json格式,esp8266的開發環境使用的是arduino,stm32使用的是keil5。esp8266我會從以下三部分介紹 arduinojson解析庫的...
esp8266用mqtt協議通訊
之前用esp8266做的東西是通過tcp連線來和伺服器端通訊的,伺服器端需要自己管理所有的連線,每個連線要做心跳包,還要考慮通訊訊息的可靠性。偶然看到了mqtt協議,發現可以拿來用。mqtt協議介紹 esp8266可以用的mqtt客戶端 注意我這邊用的是esp12e模組,16塊左右,所以有16引腳,...