學習ESP8266 6 串列埠

2021-10-10 06:28:40 字數 2203 閱讀 4334

我買了乙個天貓精靈,感覺好可愛哦~

興趣在物聯網,好好學習,下次換工作的時候,就可以去物聯網的公司,智慧型家居實在是太暖了,可以給人帶來快樂,陪伴,讓生活更容易。

esp8266有兩個串列埠,現在只是用串列埠0的列印資訊功能,模組上電後會預設輸出一些資訊。

esp8266-12f模組的晶振是26mhz,所以串列埠0的預設波特率是74880.

26mhz,波特率74880

40mhz,波特率115200

列印完預設資訊之後的波特率就可以自己設定了,設定波特率找到2個函式。

//串列埠初始化,可以設定串列埠0和串列埠1的波特率

void

uart_init

(uartbautrate uart0_br, uartbautrate uart1_br)

;//設定串列埠波特率

void

uart_setbaudrate

(uint8 uart_no,uint32 baud_rate)

;

串列埠的兩個標頭檔案和乙個原始檔要新增到相應目錄,「uart_register.h」、「uart.h」、「uart.c」;

開啟uart.h,找到串列埠波特率範圍在300~3686400。

也有兩個,可以用串列埠傳送字串,也可以用系統介面的串列埠列印os_printf,還是os_printf好用,可以格式化輸出。

//串列埠傳送字元

//void uart0_sendstr(const char *str);

uart0_sendstr

("hello world~~~");

//系統的printf

os_printf

("hello world~~~");

os_printf

("system_sdk_version:%s"

,system_get_sdk_version()

);

os_printf 的標頭檔案——#include 「osapi.h」

system_get_sdk_version()的標頭檔案——#include 「user_inte***ce.h」

其實想想是一直用的,在keil的options選項下的"c/c++",裡面有個包含標頭檔案的路徑,只不過是編譯器平時幫我做了這個工作。

#include

"ets_sys.h"

#include

"osapi.h"

//os_***系列介面

#include

"user_inte***ce.h"

//含system_***系列介面

#include

"driver/uart.h"

uint32 icache_flash_attr user_rf_cal_sector_set

(void

)//rf扇區設定初始化

void icache_flash_attr user_rf_pre_init

(void

)//rf初始化

void icache_flash_attr user_init

(void

)//使用者初始化函式

下面我試了幾個波特率,分別是9600,74880,115200。

在用9600的時候,"hello world"前面的換行沒有顯示出來。

在用115200的時候,前面幾個資料出錯了,"hello world"沒有顯示全。

在不改變波特率的情況下是最正常的,換行也顯示出來了,既然波特率降低也不正常,那應該就不是由於波特率過高導致的資料錯誤,而是在切換波特率後波特率不穩定,剛傳輸的幾個字元識別不出來,加延時解決。

ESP 8266 串列埠通訊 Serial

esp8266的串列埠通訊與傳統的arduino裝置完全一樣。除了硬體fifo 128位元組用於tx和rx 之外,硬體串列埠還有額外的 256位元組的tx和rx快取。傳送和接收全都由中斷驅動。當fifo 快取滿時,write函式會阻塞工程 的執行,等待空閒空間。當fifo 快取空時,read函式也會...

ESP8266 學習筆記(八)串列埠原始碼分析

我一直對esp8266的串列埠傳輸的機制很好奇,沒辦法只得好好分析原始碼了。esp8266的中斷系統是必須要了解的。我分析的源 是分配有任務的,所以在任務函式中是無法看到中斷的。我的分析如下 實現如下 串列埠接收中斷處理函式 local void uart0 rx intr handler void...

FPGA學習 9 串列埠通訊

處理器與外部裝置通訊的兩種方式 並行通訊和序列通訊 速度快但占用引腳多 並行 序列通訊的通訊方式 同步通訊和非同步通訊 同步帶時鐘線,非同步不帶時鐘,只能自覺遵從協議 序列通訊的傳輸方向 單工 資料只能沿著乙個方向傳輸 半雙工 資料兩個方向,但是需要分時 全雙工 資料可以同時進行雙向傳輸 常見的序列...