Arduino 单片机开发之入坑

2/13/2020 C++语言Arduino

# 简介与开发环境

首先,Arduino是一种单片机开发板,其MCU大部分基于AVR架构,采用串口下载,板载USB转串口芯片,下载时可自动复位,无需手动重置;开发板大多支持7 ~ 12 V DC 供电以及5V USB供电。

要开发它,首先要安装Arduino的IDE (或者安装atmel公司提供的开发环境),接着安装开发板USB转串口芯片的驱动程序,然后在Arduino IDE中的工具-开发板选择你的开发板型号(我这里用的是基于Atmega328P的Uno),就可以愉快地coding了!

# 程序代码结构

Arduino是基于精简的C++的,所以他支持对象,但是对于STL的支持并不完整!

Arduino的工程文件后缀名为.ino,相当于.cpp(实际上,在编译时预处理器会把工程目录下的所有文件复制到临时文件夹并改名.ino为.cpp),工程目录文件夹名需与主ino文件名相同。

当你新建一个工程时,默认有两个函数,如下:

void setup(){
    
}

void loop(){
    
}
1
2
3
4
5
6
7

这两个函数没有返回值,也没有入口参数,且不可更改名称。为啥?因为Arduino是在核心文件里包含工程文件来实现编译的,核心文件里就是这样定义这两个函数的,要改了的话会报错(改核心文件另说)。其中setup函数只在板子上电或重置时执行一次,loop则在setup后无限循环。

# 第一个闪灯程序

在文件-示例-Basics里找到Blink程序,如下:

//LED_BUILTIN 是板载LED的引脚号,是自动定义的,不用管直接用
void setup() {
  // 初始化LED引脚为OUTPUT
  //Arduino的引脚有3种模式,分别为
  //  OUTPUT  输出模式,向外输出电流,单个引脚最大40mA
  //  INPUT   输入模式,引脚为高阻抗态,对外部电平变化敏感
  //  INPUT_PULLUP  与INPUT作用相同,只是多开启了内部的10k上拉电阻
  pinMode(LED_BUILTIN, OUTPUT);
}

void loop() {
  digitalWrite(LED_BUILTIN, HIGH);   // 将LED引脚电平配置为高(HIGH=1)
  delay(1000);                       // 等待1000毫秒
  digitalWrite(LED_BUILTIN, LOW);    // LED引脚电平配置为低(LOW=0)
  delay(1000);                       // 等待1000毫秒
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16

插上你的开发板的USB线,等待电脑识别后在工具-端口里选择对应串口,按Ctrl+U进行编译并下载,下载完成后,你就可以看到开发板上的LED亮一秒灭一秒地闪烁了。