设置GPIO输出示例:
// 管脚功能选择(参数1【PIN_NAME】管脚名、参数2【FUNC】管脚功能) PIN_FUNC_SELECT(PERIPHS_IO_MUX_GPIO4_U, FUNC_GPIO4); // GPIO4设为IO口 // 将相应管脚设为输出模式,并输出对应电平(参数1【gpio_no】、参数2:输出电平) GPIO_OUTPUT_SET(GPIO_ID_PIN(4),1); // IO4 = 1(高电平)设置GPIO输入示例:
PIN_FUNC_SELECT(PERIPHS_IO_MUX_GPIO0_U, FUNC_GPIO0); // GPIO_0设为IO口 GPIO_DIS_OUTPUT(GPIO_ID_PIN(0)); // GPIO_0失能输出(默认),即管脚输入 PIN_PULLUP_DIS(PERIPHS_IO_MUX_GPIO0_U); // GPIO_0失能内部上拉(默认) PIN_PULLUP_EN(PERIPHS_IO_MUX_GPIO0_U); // GPIO_0使能内部上拉 GPIO_INPUT_GET(GPIO_ID_PIN(0)) //读取IO状态设置GPIO中断:
ETS_GPIO_INTR_DISABLE(); // 关闭GPIO中断功能 ETS_GPIO_INTR_ATTACH((ets_isr_t)GPIO_INTERRUPT,NULL); // 注册中断回调函数 gpio_pin_intr_state_set(GPIO_ID_PIN(0),GPIO_PIN_INTR_NEGEDGE); // GPIO_0下降沿中断 ETS_GPIO_INTR_ENABLE(); // 打开GPIO中断功能 // 读取GPIO中断状态 S_GPIO_INT = GPIO_REG_READ(GPIO_STATUS_ADDRESS); // 清除中断状态位(如果不清除状态位,则会持续进入中断) GPIO_REG_WRITE(GPIO_STATUS_W1TC_ADDRESS, S_GPIO_INT);
相关API: