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

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值