学习ESP8266_9_GPIO输入

请先看上一篇,GPIO输出,有比较详细的介绍,再看这一篇。

1、GPIO输入配置

1.1、选择IO口为GPIO功能

PIN_FUNC_SELECT(PERIPHS_IO_MUX_GPIO0_U,FUNC_GPIO0); //GPIO0,按键

1.2、设置为输入模式

GPIO_DIS_OUTPUT(GPIO_ID_PIN(0)); //失能输出,即IO口为输入

配置是否使用内部上拉
PIN_PULLUP_DIS(PERIPHS_IO_MUX_GPIO0_U); //不使用内部上拉
PIN_PULLUP_EN(PERIPHS_IO_MUX_GPIO0_U); //使用内部上拉

1.3、用下面的宏读取IO口的状态

key = GPIO_INPUT_GET(GPIO_ID_PIN(0)); //获取GPIO0的状态

2、代码

将LED(GPIO4)设为输出模式作为指示,while中检测按键是否按下,按下LED亮,松开LED不亮。

按键有外部上拉,使用不使用内部上拉都行。

void ICACHE_FLASH_ATTR user_init(void)				//用户初始化函数
{
	uint8 key = 0;
	
	PIN_FUNC_SELECT(PERIPHS_IO_MUX_GPIO4_U,FUNC_GPIO4);	//GPIO4,LED
	GPIO_OUTPUT_SET(GPIO_ID_PIN(4),1);			//初始化后默认不亮

	PIN_FUNC_SELECT(PERIPHS_IO_MUX_GPIO0_U,FUNC_GPIO0);	//GPIO0,按键
	GPIO_DIS_OUTPUT(GPIO_ID_PIN(0));			//失能输出,即IO口为输入
	PIN_PULLUP_DIS(PERIPHS_IO_MUX_GPIO0_U);			//不使用内部上拉

	while(1){

		key = GPIO_INPUT_GET(GPIO_ID_PIN(0));		//获取GPIO0的状态

		if(key==0)					//按下
			GPIO_OUTPUT_SET(GPIO_ID_PIN(4),0);	//亮
		else
			GPIO_OUTPUT_SET(GPIO_ID_PIN(4),1);	//不亮

		system_soft_wdt_feed();
	}
}
在ESP32中,使用gpio_pad_select_gpio函数来声明要使用的GPIO端口。例如,如果要使用GPIO2,可以使用以下代码:gpio_pad_select_gpio(2)。\[1\] 此外,还可以使用gpio_config_t结构体来配置GPIO。该结构体包含了pin_bit_mask、mode、pull_up_en、pull_down_en和intr_type等参数,用于设置GPIO输入输出模式、上拉下拉和中断类型等。\[2\] 以初始化按键为例,可以使用以下代码来配置GPIO:\[3\] ```c void KEY_GPIO_Init(void) { gpio_pad_select_gpio(GPIO_KEY); //选择keyIO口 gpio_set_direction(GPIO_KEY, GPIO_MODE_INPUT); //将该口设置为输入模式 } ``` 以上是两种配置GPIO的方式,你可以根据具体需求选择适合的方式进行配置。 #### 引用[.reference_title] - *1* [ESP32学习笔记(一)](https://blog.csdn.net/A_Big_Fool/article/details/128591950)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insertT0,239^v3^insert_chatgpt"}} ] [.reference_item] - *2* *3* [ESP32_GPIO输入、输出和中断](https://blog.csdn.net/weixin_46364710/article/details/124304675)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insertT0,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值