ESP8266引脚配置

ESP8266引脚配置

输出

	PIN_FUNC_SELECT(PERIPHS_IO_MUX_MTDI_U,FUNC_GPIO12);   //设置GPIO12位IO模式
	GPIO_OUTPUT_SET(GPIO_ID_PIN(12), 1)    //设置GPIO12为高电平
	//GPIO_OUTPUT_SET(GPIO_ID_PIN(12), 0)    //设置GPIO12为低电平

输入

PIN_FUNC_SELECT(PERIPHS_IO_MUX_MTDI_U,FUNC_GPIO12);   //设置GPIO12位IO模式
PIN_PULLUP_EN(PERIPHS_IO_MUX_MTDI_U); //设置GPIO12为上拉模式
//PIN_PULLUP_DIS(PERIPHS_IO_MUX_MTDI_U); //设置GPIO12变为下拉模式
GPIO_DIS_OUTPUT(GPIO_ID_PIN(12));   //GPIO0输入模式  其他引脚也一样 只要将GPIO输出模式关闭就变为了输入模式
 int level = GPIO_INPUT_GET(GPIO_ID_PIN(12));//获取GPIO12的电平

输入中断

	PIN_FUNC_SELECT(PERIPHS_IO_MUX_MTDI_U,FUNC_GPIO12);   //设置GPIO12位IO模式
	GPIO_DIS_OUTPUT(GPIO_ID_PIN(12));   //GPIO0输入模式  其他引脚也一样 只要将GPIO输出模式关闭就变为了输入模式
	ETS_GPIO_INTR_DISABLE(); //禁止所有的IO中断
	ETS_GPIO_INTR_ATTACH(key_intr_handler,NULL); //配置中断函数  key_intr_handler为中断函数
	pio_pin_intr_state_set(GPIO_ID_PIN(12),GPIO_PIN_INTR_NEGEDGE);  //GPIO0下降沿触发 
	/***********************************
	*typedef enum {
	********GPIO_PIN_INTR_DISABLE = 0,  不启用
	********GPIO_PIN_INTR_POSEDGE = 1,  上升沿
	********GPIO_PIN_INTR_NEGEDGE = 2,  下降沿
	********GPIO_PIN_INTR_ANYEDGE = 3, 上升沿/下降沿
	********GPIO_PIN_INTR_LOLEVEL = 4, 低电平触发
	********GPIO_PIN_INTR_HILEVEL = 5  高电平触发
	} GPIO_INT_TYPE;
	************************************/ 
	ETS_GPIO_INTR_ENABLE(); //使能GPIO中断
	/*-------------------------------------------------------------*/
/*函数功能:按键中断处理函数                                                                             */
/*参       数:无                                                                                                     */
/*返       回:无                                                                                                     */
/*-------------------------------------------------------------*/
void key_intr_handler(void)
{
	u16 gpio_status=0;

	gpio_status = GPIO_REG_READ(GPIO_STATUS_ADDRESS);     //读取中断状态,哪个IO的中断,对应的中断标志会置1
	GPIO_REG_WRITE(GPIO_STATUS_W1TC_ADDRESS, gpio_status);//清除中断状态,对应的位,写1就清除了
	if(gpio_status&BIT(12))        //判断是不是GPIO12中断  BIT为左移12位
	{
		 os_printf("按键中断\r\n");
	}
	/*
	If(gpio_status==GPIO_Pin_12)
	{
		 os_printf("按键中断\r\n");
	}
	*/
}

如果时双沿触发的时候可以使用下面来判断上升沿还是上升沿

	if(!GPIO_INPUT_GET(GPIO_ID_PIN(12))); //判断GPIO12有没有触发为下降沿
	//if(GPIO_INPUT_GET(GPIO_ID_PIN(12))) //判断GPIO12有没有触发为上升沿
  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值