当外部事件发生后,单片机判断外部事件是否符合条件,如果符合外部中断条件,则停止CPU正在执行的程序,转而进行中断事件的处理;中断处理完毕后,又返回被中断的程序处,继续执行。
在ArduinoIDE开发环境下,使用attachInterrupt函数建立外部中断。
attachInterrupt(pin, callback, mode)
pin: 用于触发中断的引脚
callback: 中断处理程序
mode: 中断模式,即信号在哪种情况下产生中断,有这几种情况:RISING(上升沿触发)、FALLING(下降沿触发)、CHANGE(边缘触发)、ONLOW(低电平触发)、ONHIGH(高电平触发)
示例程序如下:
#include <Arduino.h>
const int led = 18;
const int button = 35;
volatile boolean state = HIGH;
// 中断函数
void irq1()
{
//改变状态值,主循环根据这个值来控制LED
state = !state;
}
void setup()
{
pinMode(led, OUTPUT);
pinMode(button, INPUT);
// 初始化外部中断、pin
// 当按键按下时,引脚34输入的电平由高变低,触发中断函数irq1
attachInterrupt(button, irq1, FALLING); // 设置外部中断
}
void loop()
{
//根据state的值控制LED点亮或熄灭
digitalWrite(led, state);
delay(1);
}
I2S(Inter—IC Sound)总线, 又称集成电路内置音频总线,是飞利浦公司为数字音频设备之间的音频数据传输而制定的一种总线标准。
相信很多人都有把绿植给养死的经历,可能是浇水过多、忘记浇水、较长时间不在家不能浇水等,本文介绍一种可以灵活定制的智能浇花方案。
MicroPython 在 ESP32 上支持线程(Thread)功能,通过_thread模块实现。线程允许程序并发执行多个任务,适合处理需要同时运行的场景,例如传感器数据采集和网络通信。
掌控板3.0升级了主控,还主打AI。带有双麦克风阵列,增加了音频解码芯片,板载了一个1W喇叭,还把之前的单色屏幕换成了1.47寸的彩色屏幕,有更多的可玩性。
使用了 MicroPython 库,通过 定时器(Timer) 和 ADC(模数转换器) 功能来实时读取传感器数据。使用定时器可以实现高精度、非阻塞、低资源消耗的周期性任务,保证实时性和可靠性,特别适用于嵌入式系统中的多任务处理和低功耗场景。
ESP32的DAC函数可以实现真正的模拟输出。
ESP32 没有Arduino输出 PWM 的 analogWrite(pin, value) 方法,取而代之的 ESP32 有一个 LEDC 来实现PWM功能。
本文学习如何使用ESP32开发板来进行多线程的开发。
ESP8266有三种工作模式,分别为:AP,STA,AP混合STA
ESP32有四个SPI外设,分别为SPI0、SPI1、HSPI和VSPI。
ESP32有2个硬件I2C总线接口,接口可以配置为主机或从机模式。