NipGeihou's blog NipGeihou's blog
  • Java

    • 开发规范
    • 进阶笔记
    • 微服务
    • 快速开始
    • 设计模式
  • 其他

    • Golang
    • Python
    • Drat
  • Redis
  • MongoDB
  • 数据结构与算法
  • 计算机网络
  • 应用

    • Grafana
    • Prometheus
  • 容器与编排

    • KubeSphere
    • Kubernetes
    • Docker Compose
    • Docker
  • 组网

    • TailScale
    • WireGuard
  • 密码生成器
  • 英文单词生成器
🍳烹饪
🧑‍💻关于
  • 分类
  • 标签
  • 归档

NipGeihou

我见青山多妩媚,料青山见我应如是
  • Java

    • 开发规范
    • 进阶笔记
    • 微服务
    • 快速开始
    • 设计模式
  • 其他

    • Golang
    • Python
    • Drat
  • Redis
  • MongoDB
  • 数据结构与算法
  • 计算机网络
  • 应用

    • Grafana
    • Prometheus
  • 容器与编排

    • KubeSphere
    • Kubernetes
    • Docker Compose
    • Docker
  • 组网

    • TailScale
    • WireGuard
  • 密码生成器
  • 英文单词生成器
🍳烹饪
🧑‍💻关于
  • 分类
  • 标签
  • 归档
  • 资料

  • 笔记

  • ESP32入门

    • 硬件 - ESP32
    • 软件 - Arduino
      • 关于Arduino
      • Arduino IDE2 - 安装
      • CH343驱动 - 安装
      • Arduino IDE2 - 基本操作
        • 基本设置
        • 修改简体中文
        • 开启代码补全
        • 添加 ESP32开发板
        • 调整 工程参数
        • 上传 固件
        • 安装库
      • Arduino IDE2 - 基本语法
        • 数据类型
        • 整型
        • 浮点数
        • 模块化编程
        • LED实验示例
    • 软硬件 - 通信
  • 嵌入式
  • ESP32入门
NipGeihou
2025-12-25
目录

软件 - Arduino

# 关于 Arduino

  • 公司名称:Arduino(/ɑːrˈdwiːnoʊ/)是一家意大利开源硬件和软件公司
  • 硬件:
    • 狭义:由 Arduino 公司授权制造的硬件开发板
    • 广义:兼容 Arduino 软件的所有开发板
  • 软件:Arduino IDE

# Arduino IDE2 - 安装

支持 Windows、macOS https://www.arduino.cc/en/software/

无脑下一步即可

Windows

  • 项目文件夹地址:“首选项 - 项目文件夹地址” 处设置,默认为 C:\Users\用户名\Documents\Arduino
  • 库安装位置: {项目文件夹地址}\libraries
  • 开发板包安装目录: C:\Users\用户名\AppData\Local\Arduino15

# CH343 驱动 - 安装

macOS 参考:WCHSoftGroup/ch34xser_macos: MacOS USB driver for USB to serial chip ch340, ch341, ch342, ch343, ch344, ch9101, ch9102, ch9103, etc (opens new window)

Note

macOS26,在没有额外手动安装 CH323 驱动下,Arduino 也能识别到串口设备 ESP32,不确定是不是下面安装 ESP32 库时自动安装了。

# Arduino IDE2 - 基本操作

image.png

# 基本设置

# 修改简体中文

File (文件) - Preferences (首选项) - Language (编辑器语言)

# 开启代码补全

File (文件) - Preferences (首选项) - 编辑快速建议

# 添加 ESP32 开发板

  • 开发板管理 - 搜 esp32 ,安装 By Espressif Systems (乐鑫官方)的库

image.png

  • 安装成功后,在 (顶部)工具 - 开发板 出现 esp32 选项

# 调整 工程参数

以 esp32-s3 为例

由于我手上 adafruit 的 ESP32-S3 只丝印了 ESP32-S3-MINI-1 ,没有具体的 Flash、PSRAM 信息,通过翻查当时活动的教程 (opens new window)可知是: 4 MB Flash + 2 MB of PSRAM ,再翻查乐鑫官网的 ESP32-S3 技术规格书 (opens new window),对应为 ESP32-S3FH4R2 。 image.png

  • 工具 - 开发板…… ,选择 ESP32S3 Dev Module
  • 工具 - 端口 ,选择连接的开发板 COM image.png
  • 修改工程参数
属性 推荐参数 说明
CPU Frequency 240Mhz 默认频率,如需低功耗,可调低
Flash Mode QIO 120MHz QIO 即 Quad I/O,根据技术手册选择
120MHz,手册可知默认为 80,可调至 120
Flash Size 4MB(32Mb) Flash 大小,按芯片实际选择
Partition Scheme 4MB FATFS 分区表,按芯片实际选择;读写 FATFS,只读 SPIFFS
PSRAM QSPI PSRAM RAM 类型,按芯片实际选择

# 上传 固件

不同的开发板,进入烧写模式的方法不同,以文档为准。

image-20231014132724016

以为手上的 Feather ESP32-S3 TFT 为例,在烧机前,需要按住 BOOT,再按一下 RST,进入烧机模式,再在 工具 - 端口 选择对应的设备,再上传。

查看开发板引脚文档:https://learn.adafruit.com/adafruit-esp32-s3-tft-feather/pinouts (opens new window),可知红色 LED 的引脚为 13

void setup() {
  // put your setup code here, to run once:
  pinMode(13, OUTPUT);
  digitalWrite(13, HIGH);
}

void loop() {
  // put your main code here, to run repeatedly:
  digitalWrite(13, LOW);
  delay(500);
  digitalWrite(13, HIGH);
  delay(500);
}

# 安装库

  • 在线安装:窗口左侧 - 库管理
  • 离线安装:窗口顶部 - 项目 - 导入库 - 添加.ZIP 库

在 Arduino 代码中,使用 #include 指令引入所需的库文件,然后调用库中函数。

# Arduino IDE2 - 基本语法

参考资料

  • C++ 基本语法 | 菜鸟教程 (opens new window)
  • Arduino 使用 C/C++ 语言编写程序
  • 不直接操作 main 函数,而是使用 setup 和 loop 函数,执行顺序为:
int main(void)
{
	setup(); // 常用语初始化设置
	while(true){
		loop(); // 程序的主要功能
	}
}

# 数据类型

单片机内存是否受限,一个合理的类型是否重要。

# 整型

类型 关键字 (简写) 占用内存 / Byte 取值范围
短整型 int16_t(short) 2 -32768 ~ 32767
无符号短整型 uint16_t(unsigned short) 2 0 ~ 65535
整型 int32_t(int) 4 -2147483648 ~2147483647
无符号整型 uint32_t(unsigned int) 4 0 ~ 4294967295
长整型 int64_t(long long) 8 -9223372036854775808~ 9223372036854775807
无符号长整型 uint64_t(unsigned long long) 8 0 ~18446744073709551615

# 浮点数

数据类型 描述 大小(字节) 范围 / 取值示例
float 单精度浮点数 4 约 ±3.4e±38(6-7 位有效数字)
double 双精度浮点数 8 约 ±1.7e±308(15 位有效数字)

# 模块化编程

传统方式编程:所有的函数都放在 xxx.ino 里,不利于代码的组织和管理,而且很影响编程者的思路。 模块化编程:把各个模块的代码放进不同的 .cpp 文件里,在 .h 里面提供外部可调用函数的声 明,其他 .cpp 文件想使用其中代码时,只需要 #include “xxx.h” 文件即可。使用模块化编程可极大的提高代码的可阅读性、可维护性、可移植性。

  • .h 文件:可被外部调用的函数、变量的声明、以及一些宏定义(某程度可以理解为 Java 的接口)
  • .c/.cpp 文件:函数、变量的定义

任何自定义的变量、函数在调用之前必须有定义或声明 要调用自定义函数,必须 #include 对应的 .h 文件

filename.cpp

#include "filename.h"

void func(void)
{
	// ....
}

filename.h

#ifndef __FILENAME_H
#define __FILENAME_H

void func(void);

#endif

# LED 实验示例

led.h 定义一些常量、函数

// 固定写法
#ifndef __LED_H
#define __LED_H

// 引入Arduino.h,因为digitalWrite、digitalRead来自于此
#include "Arduino.h"

// 定义了一个LED_PIN常量,值为13
#define LED_PIN 13

// 定义了一些函数
#define LED(x) digitalWrite(LED_PIN, x)
#define LED_TOGGLE() digitalWrite(LED_PIN, !digitalRead(LED_PIN))

// 声明了一个函数,但为实现
void led_init(void);

#endif

led.cpp 实现 led.h 定义的 led_init 函数

#include "led.h"

void led_init(void)
{
  pinMode(LED_PIN, OUTPUT);
  digitalWrite(LED_PIN, LOW);
}

led.ino

// 引入led.h
#include "led.h"

void setup() {
	// 调用led.h的led_init,实际调用的led.cpp的实现
  led_init();
}

void loop() {
  LED(1);
  delay(500);
  LED(0);
  delay(500);
}

上次更新: 2025/12/30, 21:29:20
硬件 - ESP32
软硬件 - 通信

← 硬件 - ESP32 软硬件 - 通信→

最近更新
01
软硬件 - 通信
12-30
02
硬件 - ESP32
12-25
03
软件源
12-19
更多文章>
Theme by Vdoing | Copyright © 2018-2025 NipGeihou | 友情链接
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式