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


https://www.cnblogs.com/yangfengwu/p/11094085.html

PWM其實沒有什么,就是看着官方給的API,,,然后就是用唄

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

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

 

 我直接說第三個參數

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

其實就是為了可以一次性配置多個引腳.....

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

但是呢官方給的配置PWM輸出的函數呢..每個引腳都需要填三個參數....不清楚為什么

第一個參數填引腳的寄存器地址  寄存器地址好說,咱所有的配置引腳其實都是配置這個引腳的寄存器(如果你看過我的STM32帶你入坑系列)

第二個參數     填寫這個管腳的復用值,這個值不一樣,這個引腳的功能就不一樣

然后我解釋一下,假設是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的占空比

 

https://www.cnblogs.com/yangfengwu/p/11102026.html

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM