初次学习ESP32。记录一下,以免遗忘。方便日后项目查询。
学习平台为VS Code中PlatformIO搭建的环境,写法与Arduino的一样。
对于ESP32的引脚读/写操作与Arduino一样函数分别为
pinMode(pin.mode);//功能:工作模式设置
//模块的23个引脚均可作为读IO口,除34,35,36,39不可做写IO口其他均可写IO口
//34,35,36,39在作为读IO口时不能设置为上拉或者下拉模式
//mode: INPUT:输入
// OUTPUT:输出
// PULLUP:上拉
// INPUT_PULLUP:输入上拉模式
// PULLDOWN:下拉
// INPUT_PULLDOWN:输入下拉模式
// OPEN_DRAIN:开漏模式
// OUTPUT_OPEN_DRAIN:输出开漏模式
// ANALOG:模拟量输入模式 DAC
digitalRead(pin); //功能:从指定引脚读取外部输入的数字信号
//返回值:当引脚接受为高电平时返回值为1,当引脚接受为低电平时,返回值为0
digitalWrite(pin,value);//功能:向指定引脚输出高低电平数字信号
//value:HIGH(高电平)LOW(低电平),HIGH为1,LOW为0;
中断触发模式:当引脚接受到中断信号时,内部程序进行执行中断函数程序
attachInterrupt(pin,function,mode);//功能:指定中断的引脚,并对中断引脚进行初始化的设置
//pin:设置中断的引脚,23个引脚都可设置为中断引脚
//function:中断回调函数,当引脚触发时执行的中断函数,中断回调函数不能有输入参数及其返回值
//mode:引脚中断方式模式
// RISING:上升沿
// FALLING:下降沿
// CHANGE:电平的跳变(从低到高,或从高到低)
// ONLOW:在低电平的时候,一直处于低电平的时候
// ONHIGH:在高电平的时候,一直处于高电平的时候
detachInterrupt(pin);//功能:关闭指定引脚的中断功能
学习了GPIO口的配置方式以及中断函数的调用;实现功能,按键控制LED灯
以下为例程:
#include <Arduino.h>
/
//GPIO设置以及外部中断函数的使用//
#define EXT_ISR 2
uint8_t start=0;
void PinIntEvent()
{
start = ~ start;
digitalWrite(2,start);
}
void setup()
{
// put your setup code here, to run once:
#if 1==EXT_ISR
pinMode(2,OUTPUT); //引脚设置为输出模式
pinMode(0,INPUT_PULLUP);//引脚设置为输入,输入上拉模式
//GPIO口的模式设置
//第一参数:引脚选择,结合原理图
//第二参数:模式选择 INPUT:输入
// OUTPUT:输出
// PULLUP:上拉
// INPUT_PULLUP:输入上拉模式
// PULLDOWN:下拉
// INPUT_PULLDOWN:输入下拉模式
// OPEN_DRAIN:开漏模式
// OUTPUT_OPEN_DRAIN:输出开漏模式
// ANALOG:模拟量输入模式 DAC
#elif 2==EXT_ISR
pinMode(2,OUTPUT); //引脚设置为输出模式
pinMode(0,INPUT_PULLUP);
attachInterrupt(0,PinIntEvent,FALLING); //外部中断函数调用
//第一参数:引脚
//第二参数:中断函数名
//第三参数:外部中断触发模式 RISING:上升沿
// FALLING:下降沿
// CHANGE:电平的跳变(从低到高,或从高到低)
// ONLOW:在低电平的时候,一直处于低电平的时候
// ONHIGH:在高电平的时候,一直处于高电平的时候
#endif
}
void loop()
{
#if 1==EXT_ISR
if (digitalRead(0)==0)
{
delay(10);
if (digitalRead(0)==0)
{
start =~start;
digitalWrite(2,start);
}
while(digitalRead(0)!=1);
}
#endif
// put your main code here, to run repeatedly:
}
效果展示:
一开始:蓝色LED灯不亮
第一次按下:蓝色LED灯亮
再次按下时:蓝色LED灯灭