大家好,我是吴彦祖,好了啦。骗你们的啦。我是Mr_Dong。下面我们正式来讲ESP8266 中GPIO的控制。
先看一下手册中GPIO对于的API函数介绍。
看完了上面介绍。我们下面写个实例加深一下印象。
#define SWITCH_Pin_NUM 5 // 开关输入管脚相关 宏定义
#define SWITCH_Pin_FUNC FUNC_GPIO5 //管脚功能
#define SWITCH_Pin_MUX PERIPHS_IO_MUX_GPIO5_U
#define SWITCH_Pin_Rd_Init() GPIO_DIS_OUTPUT(SWITCH_Pin_NUM) //设置为读状态
#define SWITCH_Pin_Wr_Init() GPIO_OUTPUT_SET(SWITCH_Pin_NUM,0) //设置为写状态
#define SWITCH_Pin_Set_High() GPIO_OUTPUT_SET(SWITCH_Pin_NUM,1) //设置管脚为高
#define SWITCH_Pin_Set_Low() GPIO_OUTPUT_SET(SWITCH_Pin_NUM,0)//设置管脚为低
#define SWITCH_Pin_State() GPIO_INPUT_GET(SWITCH_Pin_NUM) //读取管脚状态
/*******************************************************************
函数名称:rgbGpioInit 函数
函数作用:初始化GPIO管脚,SWITCH_Pin设置为输出。
函数输入参数说明:无
函数返回值说明:无
其他说明:
*******************************************************************/
void ICACHE_FLASH_ATTR rgbGpioInit(void)
{
PIN_FUNC_SELECT(SWITCH_Pin_MUX, SWITCH_Pin_FUNC );
SWITCH_Pin_Set_High (); //设置管脚为高
}
上面三个函数,我们分别实现了对GPIO_5 设置为输出高。输出低。还有读取GPIO状态三个函数。
那大家肯定又要问了(其实没人会问)。为啥在 void 之后加ICACHE_FLASH_ATTR ?不加行不行?
这里我要特别说明一下:
ICACHE_FLASH_ATTR 是 ESP8266_NONOS_SDK 才需要添加的宏,ESP8266_RTOS_SDK 默认使用这个宏,无需特别添加。如果不加这个宏,代码一开始就加载到 RAM 的函数,将始终在 RAM 中。这样很快就把内存用完了,也就是我们俗称的败家玩意,在我们添加了这个宏之后,在 CACHE 中的函数,才是仅调用时才加载到 CACHE 中。
今天的课程很简单。连续几天的晚睡感觉最近精神都不在状态,今天决定要在12点之前睡觉。洗澡睡觉了。晚安。