arduino 是用什么语言写的 开发语言与底层原理详解
Arduino 用户编写的应用程序,主要使用基于 C++ 精简封装的 Arduino 编程语言,它是在标准 C++ 基础上做了简化封装,保留 C++ 核心语法,同时内置 setup 和 loop 两个固定入口函数,降低单片机开发门槛,而 Arduino 核心的 Bootloader 引导程序、核心库底层部分,本身也是用 C 和 C++ 编写,最终通过 AVR-GCC 编译器编译成单片机可以识别的机器码烧录进开发板。学习这个知识点的原因是很多新手会误以为 Arduino 是独立全新编程语言,实际上它本质还是 C++ 体系,理解这一点之后,后续可以直接拓展标准 C++ 语法,也能看懂底层库源码,方便做传感器控制 物联网项目 自动化装置开发。
基础信息对照表
表格
| 项目 | 内容 |
|---|---|
| 用户上层开发语言 | Arduino 封装版 C++ |
| 底层核心库与 Bootloader | C / C++ |
| 编译器 | AVR-GCC 等 GCC 交叉编译器 |
| 固定入口函数 | setup 初始化函数 loop 循环主函数 |
| 开发软件 | Arduino IDE |
详细分层讲解
1 上层用户代码
Arduino IDE 里面写的项目代码,语法兼容 C++,但是做了简化封装,把单片机寄存器操作封装成 digitalWrite analogRead millis 这类现成函数,用户不需要直接操作寄存器,只需要调用封装好的 API,程序必须包含 setup 函数,上电初始化只执行一次,loop 函数会无限循环运行,这是 Arduino 程序标志性结构。
2 底层源码部分
Arduino 核心库,也就是 cores 文件夹里面的源码,使用 C 和 C++ 编写,负责底层寄存器驱动 串口 定时器 中断相关功能,Bootloader 引导程序也是 C 语言编写,作用是让开发板可以通过 USB 直接烧录程序,不需要额外编程器。
3 编译转换流程
在 Arduino IDE 点击上传之后,IDE 会调用交叉编译器,把你写的 C++ 代码编译成对应单片机架构的二进制 HEX 文件,再通过串口把 HEX 文件烧录到开发板 Flash 当中。
拓展可选开发方式
除了官方 Arduino C++,也可以使用其他语言配套框架开发 Arduino 开发板,比如 MicroPython,但是这种属于第三方扩展方案,并不是 Arduino 原生默认语言,原生官方推荐开发仍然是封装 C++。
学习实操步骤
第一步 打开 Arduino IDE,识别它的基础语法就是 C++
第二步 熟悉 setup 和 loop 基础程序框架
第三步 学习内置封装函数,后续进阶可以学习标准 C++ 语法,阅读底层 core 库源码
第四步 理解编译烧录流程,明白代码最终转成单片机机器码
Arduino 原生开发语言是基于 C++ 精简封装的 Arduino 语言,底层核心库和 Bootloader 采用 C 与 C++ 实现,依托交叉编译器完成编译烧录,它不是独立全新编程语言,只是对 C++ 做了适合单片机入门的封装,掌握之后可以平滑过渡到标准 C++ 单片机开发。
【相关 FAQ】
问题 1 arduino 是用什么语言写的,是不是独立新语言
回答 1 arduino 是用什么语言写的,它不是独立新语言,arduino 上层开发是基于 C++ 精简封装,底层核心也是 C 和 C++,属于 C++ 体系的简化版本。
问题 2 arduino 是用什么语言写的,setup 和 loop 是什么
回答 1 arduino 是用什么语言写的,setup 和 loop 是 arduino 封装 C++ 程序固定入口,setup 上电执行一次初始化,loop 循环反复运行,是 arduino 程序标志性结构。
问题 3 arduino 是用什么语言写的,可以用 Python 开发吗
回答 1 arduino 原生默认不是 Python,arduino 是用什么语言写的核心是 C++,但是可以借助 MicroPython 第三方框架,使用 Python 驱动 arduino 开发板。
问题 4 arduino 是用什么语言写的,底层 Bootloader 是什么语言
回答 1 arduino 底层 Bootloader 是 C 语言编写,arduino 是用什么语言写的,底层核心库同样是 C 和 C++,上层用户代码是封装版 C++。
【免责申明】
本内容仅用于嵌入式开发学习参考,不同型号 Arduino 开发板架构存在差异,部分第三方衍生开发环境支持其他编程语言,实际开发请以对应开发板官方文档为准。
相关阅读
-
atm 机转账限额是银行针对自助终端渠道设置的转账额度管控标准,分为单笔限额和日累计限额,同时区分本行转账...浏览全文>>
-
assistive touch 中文名称是辅助触控,也就是大家常说的小白点,它在苹果手机 ios 系统的设置里面,路径位...浏览全文>>
-
arw 是索尼相机生成的 RAW 原始图像格式,打开 arw 可以使用索尼官方软件,也可以用通用 RAW 查看编辑...浏览全文>>
-
Arduino 用户编写的应用程序,主要使用基于 C++ 精简封装的 Arduino 编程语言,它是在标准 C++ 基础上...浏览全文>>
-
AP 蛮王也就是泰达米尔,这套玩法核心依靠 E 技能旋风斩高额法术加成作为主要输出手段,对应的天赋符文需要...浏览全文>>
-
appstore 全称是 App Store,是苹果官方应用分发平台,预装在 iPhone iPad iPod touch 等苹果移动设备...浏览全文>>
-
appleid 连接服务器时出现问题,是登录 iCloud App Store 或者账号验证环节,设备和苹果认证服务器之间通...浏览全文>>
-
apex 英雄在 steam 商店的正式英文名称为 Apex Legends,玩家在 steam 商店搜索这个英文名称,就可以找...浏览全文>>
-
antbang 无线路由器设置主要是通过浏览器登录路由器管理后台,完成上网方式选择 WiFi 名称密码 修改管理密...浏览全文>>
-
anatomy 并不是国家名称,这个英文单词的核心意思是解剖学,也可以引申为生物体的解剖结构,很多同学容易把它...浏览全文>>
- antbang 无线路由器设置 路由器配置操作指南
- amd 闪龙处理器怎么样 产品详解介绍
- ambitious 什么意 英文单词释义与用法详解
- airprint 打印机怎么连 完整连接教程
- adequate 的讲解 英语形容词 adequate 深度解析
- ab 平行于 CD 平行线判定与性质精讲
- aa 的好处 AA 制有什么好处 深度解析
- a3 卡纸什么样子的 外观规格详解
- 8 寸是多少厘米电视 尺寸换算详解
- 8k 的纸是 a3 纸吗 开本与国际尺寸对照说明
- 70 寸电视长宽多少厘米 详细尺寸说明
- 6sp 摄像头抖动修复 排查处理指南
- 60 岁祝福语生日祝福词 花甲寿庆贺词大全
- 6.2 英寸有多大 屏幕尺寸换算详细讲解
- 44 码脚长多少厘米 鞋码换算详解
- 3 种方法来交到女朋友 健康交往指南
- 3 的阶乘等于几 阶乘详解
- 315 是什么日子 国际消费者权益日介绍
- 30 而立 40 不惑 50 知天命什么意思 原文释义详解
- 2 尺 2 换算成厘米是多少 单位换算详解
