關於ESP8266 GPIO中斷使用的總結

2021-08-10 19:41:47 字數 1942 閱讀 9454

最近折騰新專案需要用到gpio的中斷來處理一些邏輯功能,翻看了官網的api開發文件,文件說的比較簡單,只是對api方法做了一下解釋說明,沒有實際的完整例子,沒辦法,只能問度娘了。度娘果然啥都有,參考了以下這篇文章:

這篇文章不但給出了例項**,還對api進行了說明,寫得非常好,大家完全可以參照這篇**來做,因為我的專案需要用到兩個gpio

管腳中斷,需要在這篇文章的基礎上再新增乙個

管腳,這裡就把我在新增過程中遇到的一些問題和難點再進一步說明一下。廢話不說,先上**,然後再來解釋說明。

[cpp]view plain

copy

#include "osapi.h"

#include "user_inte***ce.h"

#include "ets_sys.h"

#include "mem.h"

uint32 icache_flash_attr user_rf_cal_sector_set(void

)    

return

rf_cal_sec;  

}  static

void

gpio_intr_handler()  

if(gpio_status & bit(5))

//判斷中斷針腳

os_delay_us(10000);//系統延時

gpio_reg_write(gpio_status_w1tc_address, gpio_status);//清中斷標誌

ets_gpio_intr_enable();//開啟中斷

}  void

icache_flash_attr user_init(

void

)    

因為用的是1.4的sdk,所以**中多了

[plain]view plain

copy

uint32 icache_flash_attr user_rf_cal_sector_set(void)  

這個函式,不然無法編譯。先來說一下**功能,這裡使用了gpio4和gpio5兩個管腳來做中斷,當gpio4管腳拉低的時候觸發中斷,終端輸出111,gpio5管腳拉低的時候,輸出222,就是這麼簡單的實驗。現在分析一下**行及注意事項。

[plain]view plain

copy

pin_func_select(periphs_io_mux_gpio5_u, func_gpio5);//設定gpio功能  

gpio_dis_output(gpio_id_pin(5));//設定gpio5為輸入  

首先來看這兩行,很多網友可能知道這兩行是幹嗎用的,但是有沒有對裡面的引數有疑問的,之前筆者就一直對這個一知半解,文件裡面的描述是pin_func_select(pin_name,func) 乙個是管教名稱,另乙個是func,那麼這個pin_name跟func在**找呢,原來在官方sdk包的include/eagle_soc.h檔案裡有描述,大家可以去看看,然後根據自己的管腳填寫,不然雖然編譯能通過,但是管腳卻不起作用,這裡定義了gpio4跟gpio5兩個管腳,並把管腳設定為輸入。管腳設定好後,通過以下語句來上拉管腳使能,這裡要注意,這個很重要,不然一會中斷會出現莫名奇妙的問題。

[plain]view plain

copy

pin_pullup_en(periphs_io_mux_gpio5_u);//gpio5使能上拉  

pin_pullup_en(periphs_io_mux_gpio4_u);//gpio4使能上拉  

接著就可以按照文章裡面的方法配置中斷處理函式,新增相關的處理方法,我在裡面參考其他網友的方法新增了延時。基本上就差不多這樣了,大家可以根據自己的實際需求進行修改,或者自己新增更多的管腳,希望這篇文章能幫助到大家。有興趣的朋友也可以加入企鵝群(254267969)一起交流

ESP8266學習歷程 GPIO配置

soc晶元之上的韌體,以及基於esp 12模組的硬體。xgpio6至gpio11通常連線到esp8266板上的flash晶元。因此,不建議使用這些引腳。使用esp8266的gpio最起碼得包含相關引腳的標頭檔案吧 include driver gpio.h gpio的初始化設定與stm32提供的標準...

ESP8266模組GPIO16使用方式

本次開發esp 的環境是aithinker ide,在設計一塊電路板的時候,因為esp8266模組原理圖直接給出gpio16,於是在程式沒有去驗證的情況下直接當做普通gpio使用。當實際情況使用時,發現gpio16並不能直接使用,gpio16作為時鐘引腳是可以喚醒時鐘的。但當我們非要當做普通io需要...

ESP8266學習歷程 1 GPIO配置

soc晶元之上的韌體,以及基於esp 12模組的硬體。使用esp8266的gpio最起碼得包含相關引腳的標頭檔案吧 1 include driver gpio.h gpio的初始化設定與stm32提供的標準庫大同小異,都是通過乙個結構體來進行配置,如下 123 4567 typedef struct...