關(guān)于ESP8266小飛機(jī)的設(shè)計(jì)和源碼解讀開始了!

8266的數(shù)據(jù)總線

一些設(shè)計(jì)指南

因?yàn)镮IC傳感器很多,這里也看一下

因?yàn)閷τ贓SP8266來講,純的Arduino開發(fā)其實(shí)沒有那么多,所以要結(jié)合底層看。

管腳定義先看





i的意思感覺是內(nèi)部的意思,就是加載到內(nèi)存的意思,我說這樣理解的



ESP8266的開發(fā)有兩個,NoOS,RTOS,我一開始以為Arduino是NoOS的,但是我錯了,其實(shí)是RTOS實(shí)現(xiàn)的。
因?yàn)槌霈F(xiàn)了很多的PWM的使用,所以一開始我們就先睹為快。

在RTOS的這個位置。

所有的API,也就是調(diào)用這些

隨便看個頭,PWM的啟動

PWM的初始化

也對esp_err_t感興趣,在這里有定義
我覺得我們可以看下NoOS里面的API再看RTOS的。

是軟件實(shí)現(xiàn)的,還有不可屏蔽的中斷

這打太極的寫法,軟件算法


這是PWM的參數(shù),這肯定夠我玩耍了


代碼實(shí)例
先不要追究最上面的結(jié)構(gòu)體是什么,先可以看具體函數(shù)的作用。PWM的初始化,開啟PWM,設(shè)置占空比,獲取占空比,設(shè)置頻率,得到頻率。

配置幾路,這個參數(shù)會傳到這個地方

可以看一下PWM的初始化配置。周期,各通道的占空比。傳入的通道數(shù),引腳引腳的硬件參數(shù)。
我們結(jié)合飛控看看怎么配置的:

要用的參數(shù)都用宏寫好,四旋翼是4個通道,使用4,寄存器上面也要寫好
這個結(jié)構(gòu)體的寫的是GPIO的寄存器,對應(yīng)PIN腳的IO復(fù)用值,GPIO的序號。是一個n x 3的數(shù)組指針。

4通道還是

包括處理器也有自己獨(dú)特的數(shù)據(jù)封裝

開始初始化的配置
注意看PWM_init()函數(shù)的參數(shù)。

使用for循環(huán)將各通道的占空比參數(shù)都設(shè)置

設(shè)置周期

設(shè)置占空比
其實(shí)還有一些東西沒有說明白。

就這些,其實(shí)對于寫文章來講,我現(xiàn)在完全可以就寫下面的,但是為了學(xué)習(xí)的需要,這里就再具體的寫。

文檔要看技術(shù)參考

這個寄存器的名字叫,功能選擇寄存器

有一個Excel的REG表,第一個就是



大概就是這樣的設(shè)計(jì)方法,在一個MUX上面按照順序排寄存器

第二個參數(shù)是在寄存器的組里面選第三個IO的功能,就是說這個腳上面可以有這么多的功能,現(xiàn)在用第三個的意思。

就是這樣,注意到reg是0定義,所以功能記得+1
https://docs.espressif.com/projects/esp8266-rtos-sdk/en/latest/api-reference/peripherals/pwm.html
ESP8266?RTOS
https://github.com/espressif/ESP8266_RTOS_SDK
RTOS的Doc
http://wiring.org.co/
Arduino的原型
https://www.espressif.com/zh-hans/support/documents/technical-documents?keys=&field_type_tid%5B%5D=14