ESP 8266 串列埠通訊 Serial

2022-04-13 03:06:28 字數 1580 閱讀 1290

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。不過,一般

情況下,預設就好

例子一:對映

void

setup()

void

loop()

serial1使用uart1,預設對應引腳是gpio2(tx----d4)。serial1不能用於接收資料,因為它的rx引腳被用於flash晶元連線---d3。

要使用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引腳,...