本帖最后由 skyone 于 2021-7-5 15:19 编辑
setup()
函数原型
void setup();
作用Arduino通电或复位后,即会开始执行 setup() 函数中的程序,该函数只会执行一次。
loop()
函数原型
void loop();
作用
在setup() 函数中的程序执行完后,Arduino会接着会无限循环 loop() 函数。
main() 函数呢?
我们知道,不管是C语言还是C++,程序的入口都是 main() 函数,那么为什么 Arduino 程序没有 main() 函数呢? 实际上,main() 函数并没有消失,它依然是 Arduino 程序的入口,只是 Arduino 设计人员将它移到了核心库里,让我们翻看一下 Arduino 核心库的 main.cpp 文件,它在 Arduino安装目录/hardware/arduino/avr/cores/arduino 里
// main.cpp
#include <Arduino.h>
int atexit(void (* /*func*/ )()) { return 0; }
void initVariant() __attribute__((weak));
void initVariant() { }
void setupUSB() __attribute__((weak));
void setupUSB() { }
int main(void)
{
init();
initVariant();
#if defined(USBCON)
USBDevice.attach();
#endif
setup();
for (;;) {
loop();
if (serialEventRun) serialEventRun();
}
return 0;
}注意: 一个程序不能有两个 main() 函数,Arduino 核心库已经定义了 main() 函数,因此我们的程序里不能包含 main() 函数。
示例
这个例子可以使 LED 闪烁 将 LED 的正极接电阻,再接 3 号引脚,负极接 GND 引脚
/*
* Author: Skyone
* Date: 2020/02/28
*/
#define 3 LED
void setup() {
// Put your setup code here, to run once.
// 将你用于初始化的代码放在这里,这些代码只会执行一次。
pinMode(LED, OUTPUT); // 将 `LED` 引脚初始化为输出模式
}
void loop() {
// Put your main code here, to run repeatedly.
// 将你的业务函数放在这里,这些代码会一直循环的运行。
digitalWrite(LED, HIGH); // 将 `LED` 引脚设为 高电平
sleep(1000); // 停止 1 秒
digitalWrite(LED, LOW); // 将 `LED` 引脚设为 低电平
sleep(1000); // 停止 1 秒
} |