中断模式
除了D0/GPIO16,中断可以绑定到任意GPIO的引脚上。
```c
attachInterrupt(digitalPinToInterrupt(D1), InterruptFunc, RISING);
指定引脚设置为响应中断。
digitalPinToInterrupt(D1) :获取指定GPIO5引脚的中断号 注意 这个不是引脚号而是中断号
InterruptFunc : 回调函数 可以理解为中断响应函数
RISING: 触发方式(RISING 上升沿 FALLING 下降沿 CHANGE 跳变沿)
detachInterrupt() 禁用指定GPIO引脚上的中断
```c
ICACHE_RAM_ATTR void InterruptFunc(){
//
}无形参 、无返回值
用ICACHE_FLASH_ATTR编译的函数编译到IROM部分; 对于这些功能,CPU执行指令高速缓存中的代码。
相反,系统启动时没有ICACHE_FLASH_ATTR的函数加载到IRAM中。因此,使用ICACHE_FLASH_ATTR有助于降低IRAM要求。
不要在中断处理程序中使用ICACHE_FLASH_ATTR函数,因为它可能与闪存R / W操作冲突。
模拟输入(ADC)
analogRead(A0) 读取A0端口上的电压
输入电压范围是0~1v 可以使用电阻分压来测得外部5v或者3.3v的电压
PWM模式
analogWrite(D2,50) D2引脚上启用pwm模式 占空比为50% 通过此函数改变占空比
analogWriteRange(1023) x: pwm的溢出时计数器的值 用来调节pwm的精度 默认为1023
analogWriteFreq(1000) 改变PWM频率 默认是1KHZ PWM频率范围应该是100Hz-40KHz
串口
Serial.swap() 串口的映射 Serial使用UART0 默认对应引脚是GPIO1(TX)和GPIO3(RX)
将Serial重新映射到GPIO15(TX)和GPIO13(RX)
Serial1使用UART1,默认对应引脚是GPIO2(TX) Serial1不能用于接收数据
Serial.begin(115200); 初始化 波特率为115200
Serial.setRxBufferSize(size_t size) 定义接收缓冲区的大小,默认值是256
Serial.available() 串口FIFO缓冲区的字节数
Serial.read() 读取串口缓冲区的字节 每次读取一个字节