12-ESP8266 SDK開發基礎入門篇--PWM,呼吸燈

http://www.javashuo.com/article/p-ylmejvrg-bv.htmlhtml

PWM其實沒有什麼,就是看着官方給的API,,,而後就是用唄數組

對了,其實對於RTOS SDK版本的開發能夠直接去參考非RTOS SDK的API  這個直接有例子函數

其實嵌入操做系統也沒有什麼,底層自帶的外設硬件功能該怎麼樣仍是怎麼樣,操做系統也不能改變什麼,,操做系統的存在只是去操做咱定義的函數,讓這些函數執行的時候快速的切換執行...測試

 

 我直接說第三個參數ui

第三個參數是說要定義一個 這樣的數組  [n][3]spa

其實就是爲了能夠一次性配置多個引腳.....操作系統

一開始我在想一維的不行嗎.........給你多個引腳的寄存器地址不就能夠了????3d

可是呢官方給的配置PWM輸出的函數呢..每一個引腳都須要填三個參數....不清楚爲何指針

第一個參數填引腳的寄存器地址  寄存器地址好說,咱全部的配置引腳其實都是配置這個引腳的寄存器(若是你看過個人STM32帶你入坑系列)code

第二個參數     填寫這個管腳的複用值,這個值不同,這個引腳的功能就不同

而後我解釋一下,假設是GPIO12管腳,,,說一下哈,記住就行,這是我看了不少資料才知道的....具體官方在哪裏寫的,,我也沒有找到

記住哈

 

 

 

 因此寫3就能夠  

 

還有一點注意這幾個

 

 

 

其實官方給我們準備好了

 

 

 

 

 

好了能夠清空腦子了   因此的到上面的文件去看就能夠  想配置GPIO的複用功能

假設函數的有個參數是填寫複用功能,假設配置GPIO12做爲普通GPIO 就填 FUNC_GPIO12

做爲SPI就填  FUNC_HSPIQ_MISO

 

 其實這是我納悶的...我想實現PWM  難道不就是使用普通的GPIO  官方的API內部直接設置這個GPIO的寄存器的相應位置,讓GPIO做爲普通的不就完了...不明白...不明白...

還有第三個參數..

就是

 

 

 

 這個也是我納悶的......給你了GPIO的寄存器地址了,直接操做寄存器不就能夠了........why?????

假設控制GPIO5輸出PWM

第一須要GPIO5的寄存器地址

 

 

其實最全的是在 

 

 

 第二個參數,,咱輸出PWM確定是讓GPIO5做爲普通輸出,因此

 

 第三個  填5就能夠

uint32 pin_info_list[1][3]={PERIPHS_IO_MUX_GPIO5_U,FUNC_GPIO5,5};

//引腳寄存器地址  複用功能   引腳標號GOIOXX  沒有對應的GPIO5宏定義,因此直接5 若是配置GPIO12  就寫12

 

 

 

 

 

 

因爲第二個參數也是指針類型,因此咱須要定義一個數組,實際上是由於最後一個參數

uint32 pin_info_list[1][3]={PERIPHS_IO_MUX_GPIO5_U,FUNC_GPIO5,5};

uint32 duty[1]={100};//高電平時間是100us

 

我寫的是配置一個引腳,,若是配置兩個 GPIO5 和 GPIO12

uint32 pin_info_list[2][3]={{PERIPHS_IO_MUX_GPIO5_U,FUNC_GPIO5,5} ,  {PERIPHS_IO_MUX_MTDI_U,FUNC_GPIO12,12} } ;

uint32 duty[2]={100,500};//GPIO5 高電平時間是100us    GPIO12高電平時間是500us

 

 

下面初始化

pwm_init(1000, duty, 1, pin_info_list);  第一個我測試的...1000us的時候最好使,也就是1Khz,,,

我填10000 100hz 產生的週期是對的10000us  可是duty填什麼都有問題......

 

而後啓動

 

 

 

 

    pwm_init(1000, duty, 1, pin_info_list);//週期1000us   高電平時間100us   1 --就配置了一個管腳,由於數組是[1][3]   pin_info_list--數組
    pwm_start();

 

 

 

 下載測試

 

 

如今燈是微微亮 

 

 好如今作個呼吸燈

 

首先要明白呼吸燈的原理

其實說白了就是控制燈的PWM週期不變,假設一開始佔空比是0  輸出高電平時間是 0

而後慢慢的增長高電平的輸出時間直至達到和週期同樣   燈就會愈來愈亮,直至最亮了  由於所有輸出高電平了

而後慢慢的減少高電平的輸出時間直至0   燈就會愈來愈暗,直至滅

慢慢的那個就用個定時器作

而後在定時器裏面控制輸出的佔空比從0變到最大  再從最大變到 0  而後循環

爲了程序簡潔修改下

 

 

 

 

 

 

 

 

 

 你們自行測試吧....

 

而後注意幾個地方

 

之前的文檔這樣說的

 

 

 如今的這樣說的...我不測試了哈...你們本身測測

 

 

 

 

 

 好,下一節,咱用上位機控制Wi-Fi的引腳輸出PWM的佔空比

 

http://www.javashuo.com/article/p-gewxxbhi-ct.html

相關文章
相關標籤/搜索