ESP8266模块GPIO16使用方式

本次开发ESP8266的环境是AiThinker_IDE,在设计一块电路板的时候,因为ESP8266模块原理图直接给出GPIO16,于是在程序没有去验证的情况下直接当做普通GPIO使用。
当实际情况使用时,发现GPIO16并不能直接使用,GPIO16作为时钟引脚是可以唤醒时钟的。
但当我们非要当做普通IO需要怎么使用呢?
首先,需要添加GPIO16开发专用库文件(.c .h)。
在这里插入图片描述

如图,将GPIO16的文件复制到SDK的相应目录下,

包含头文件:

#include "driver/gpio16.h"

然后调用函数初始化:

gpio16_output_conf();
gpio16_output_set(0);//初始电平设置为0

就可以直接调用API来设置GPIO16的状态了。

void gpio16_output_set(uint8 value)

说了这么多,,起始网上最不好找的就是这个GPIO16.c和GPIO16.h了。我也是找了很久才找到,放在这里供大家下载。

这里是GPIO16.c文件

#include "ets_sys.h"
#include "osapi.h"
#include "driver/gpio16.h"

void ICACHE_FLASH_ATTR
gpio16_output_conf(void)
{
           // mux configuration for XPD_DCDC to output rtc_gpio0
	 WRITE_PERI_REG(PAD_XPD_DCDC_CONF,  (READ_PERI_REG(PAD_XPD_DCDC_CONF) & 0xffffffbc) | (uint32)0x1); 
	
	 //mux configuration for out enable
	WRITE_PERI_REG(RTC_GPIO_CONF, (READ_PERI_REG(RTC_GPIO_CONF) & (uint32)0xfffffffe) | (uint32)0x0);
	
	 //out enable
	WRITE_PERI_REG(RTC_GPIO_ENABLE,  (READ_PERI_REG(RTC_GPIO_ENABLE) & (uint32)0xfffffffe) | (uint32)0x1);
}

void ICACHE_FLASH_ATTR
gpio16_output_set(uint8 value)
{
	    WRITE_PERI_REG(RTC_GPIO_OUT, (READ_PERI_REG(RTC_GPIO_OUT) & (uint32)0xfffffffe) | (uint32)(value & 1));
}

void ICACHE_FLASH_ATTR
gpio16_input_conf(void)
{
	// mux configuration for XPD_DCDC and rtc_gpio0 connection
	   WRITE_PERI_REG(PAD_XPD_DCDC_CONF,(READ_PERI_REG(PAD_XPD_DCDC_CONF) & 0xffffffbc) | (uint32)0x1);  
	    
	 //mux configuration for out enable
	WRITE_PERI_REG(RTC_GPIO_CONF,  (READ_PERI_REG(RTC_GPIO_CONF) & (uint32)0xfffffffe) | (uint32)0x0);

 	//out disable
	 WRITE_PERI_REG(RTC_GPIO_ENABLE,READ_PERI_REG(RTC_GPIO_ENABLE) & (uint32)0xfffffffe);
}

uint8 ICACHE_FLASH_ATTR
gpio16_input_get(void)
{
    return (uint8)(READ_PERI_REG(RTC_GPIO_IN_DATA) & 1);
}

这是.h文件

#ifndef __GPIO16_H__
#define __GPIO16_H__

void gpio16_output_conf(void);
void gpio16_output_set(uint8 value);
void gpio16_input_conf(void);
uint8 gpio16_input_get(void);

#endif

  • 3
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
回答: ESP8266是一款低成本、低功耗的Wi-Fi模块,具有丰富的GPIO(通用输入输出)功能。在配置ESP8266的GPIO时,可以参考ESP8266_Pin_List_xxxxxx.xlsx表格,其中的Digital Die Pin List页提供了通用的GPIO和复用功能的信息。在Reg页可以查阅到GPIO功能选择相关的寄存器。\[1\] ESP8266的GPIO引脚有多个功能,如GPIO0、GPIO2、GPIO4等,每个引脚都有对应的编号和复用功能。例如,GPIO0的引脚编号为15,复用功能为UGPIO1。类似地,GPIO2的引脚编号为14,复用功能为UGPIO3。\[2\] 在处理ESP8266的GPIO中断函数时,可以参考以下示例代码。首先,通过读取GPIO_STATUS_ADDRESS寄存器来获取中断状态,然后根据中断状态进行相应的处理。在处理过程中,可以使用GPIO_REG_WRITE函数来清除中断掩码,以确保中断被正确处理。\[3\] 总之,配置ESP8266的GPIO时,可以参考ESP8266_Pin_List_xxxxxx.xlsx表格中的信息,并根据需要使用相应的引脚和功能。同时,处理GPIO中断时,可以参考示例代码来实现相应的功能。 #### 引用[.reference_title] - *1* *2* *3* [ESP8266 GPIO 使用说明](https://blog.csdn.net/springcity2014/article/details/82985377)[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^control_2,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值