esp8266 SDK開發之GPIO中斷


先秀一下自己焊的板子,黑的開關用於復位,藍的開關用於燒錄程序。

 

首先要明確的是esp8622的大多數管腳都有多個功能, 比如可以用來當做GPIO管腳,還可以用來當做SPI管腳。

如下圖所示

使用PIN_FUNC_SELECT宏來選擇管腳的功能,比如將MTDI_U管腳當做GPIO管腳

PIN_FUNC_SELECT(PERIPHS_IO_MUX_MTDI_U, FUNC_GPIO12);

 程序如下

#include "osapi.h"
#include "user_interface.h"
#include "ets_sys.h"
#include "mem.h"
static void gpio_intr_handler() {
   //讀取GPIO狀態寄存器,獲取中斷信息 uint32 gpio_status
= GPIO_REG_READ(GPIO_STATUS_ADDRESS); //清除中斷信息 GPIO_REG_WRITE(GPIO_STATUS_W1TC_ADDRESS, gpio_status); if(gpio_status & (BIT(12))) {
     
} } void ICACHE_FLASH_ATTR user_init(void) {
//初始化GPIO gpio_init();
//將MTDI_U管腳設置為GPIO口 PIN_FUNC_SELECT(PERIPHS_IO_MUX_MTDI_U, FUNC_GPIO12); //設置GPIO12為輸入狀態
  GPIO_DIS_OUTPUT(GPIO_ID_PIN(
12)); //MTDI_U引腳啟動上拉電阻
PIN_PULLUP_EN(PERIPHS_IO_MUX_MTDI_U); //全局關閉GPIO中斷
ETS_GPIO_INTR_DISABLE(); //設置中斷函數
ETS_GPIO_INTR_ATTACH(
&gpio_intr_handler, NULL); //設置中斷觸發方式
gpio_pin_intr_state_set(GPIO_ID_PIN(
12), GPIO_PIN_INTR_NEGEDGE); ETS_GPIO_INTR_ENABLE(); }

參考: esp8266-technical_reference   2. GPIO


免責聲明!

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



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