4.2. 使用 Arduino IDE 开发应用程序

本节将介绍如何使用 Arduino IDE 给开发板开发嵌入式软件。

第 3.4 节,我们介绍了如何安装与配置 Arduino IDE 和 YADAN Board 开发板工具包。本节将介绍如何使用 Arduino IDE 给开发板开发嵌入式软件。

首先,使用 Micro-USB 线将部署好 SoC 的开发板连接至电脑,电脑会读取到一个 UART 串口,我们可在设备管理器中看到名为 USB-SERIAL CH340 的这个串口,括号内即为该串口的 COM 号,如图 4.7 为例。如果没有看到串口号或显示未知设备,需要在百度网盘中或沁恒官网的对应页面下载 CH340 的驱动程序并安装。


图 4.7 在设备管理器中查询串口的 COM 号(不同电脑会分配不同的编号)

打开 Arduino IDE,根据之前部署的 SoC,在 Tools -> Board 中选择 YADAN Board (VeriMake) 中的 YADAN 或 Zero-risky。然后根据刚才查询到的 COM 号,然后选择 Port 为刚刚查询的串口号,如图 4.8 所示。


图 4.8 选择开发板的串口号(不同电脑会分配不同的编号)

接下来就可以使用 Arduino 语言来开发嵌入式软件了,Arduino 语言的语法请参考 Arduino 官网的 Language Reference。不过要注意的是,YADAN SoC 或者 PULPino SoC 暂时还不支持所有的 Arduino 函数,例如 Analog I/O 里的 analogRead() analogReference() 等与模数转换器 (Analog-to-Digital Converter, ADC) 相关的内容暂时还不可用(因为目前本文档中所述的 YADAN SoC 或者 PULPino SoC 还没有实例化 ADC 端口,需修改 SoC 添加外设来支持,但这部分不在嵌入式软件的教学内)。此外还需注意的是,原版 Arduino 是以 AVR 单片机为平台来开发的,但是我们使用的是 RISC-V 指令集的 SoC,所以不一定百分百兼容所有的 Arduino 函数。


图 4.9 Arduino 官网的 Language Reference

我们可以参考 Arduino 的基础示例,编写一个让 LED 闪烁的简单程序来了解开发的整个流程。首先先填入下列代码(这份代码也可以在 Arduino IDE 的 File -> Examples -> 01.Basics -> Blink 中找到)

/*
  Blink
  Turns an LED on for one second, then off for one second, repeatedly.
  This example code is in the public domain: http://www.arduino.cc/en/Tutorial/Blink
*/

// the setup function runs once when you press reset or power the board
void setup() 
{
    // initialize digital pin LED_BUILTIN as an output.
    pinMode(LED_BUILTIN, OUTPUT);
}

// the loop function runs over and over again forever
void loop() 
{
    digitalWrite(LED_BUILTIN, HIGH);   // turn the LED on (HIGH is the voltage level)
    delay(1000);                       // wait for a second
    digitalWrite(LED_BUILTIN, LOW);    // turn the LED off by making the voltage LOW
    delay(1000);                       // wait for a second
}

代码中的 LED_BUILTIN 对应开发板上 GPIO 的第 13 号引脚,该引脚在电路中连接了一个 LED(原理图可参考第 1.2.2 节),这份代码将实现让这个 LED 亮一秒、灭一秒的无限循环。我们点击如图 4.10 指出的 Upload 按钮,IDE 即会自动开始编译程序、并下载至开发板。


图 4.10 Arduino IDE 中的 Upload 按钮

若编译与下载成功完成,我们可在提示行内看到类似图 4.11 所示的下载成功的提示。


图 4.11 下载成功的提示

下载成功后,即可观察到开发板上的 LED 开始亮一秒、灭一秒的无限循环了,而且断电重新上电后程序依然还能执行。就与这几行简短的代码类似,我们只需要知道相关外设的操作函数就可以快速实现更多所需的功能,而无需特别关注这些函数的底层操作,可以体验到,Arduino 语言提高了嵌入式软件开发的便捷程度。这是因为,Arduino 语言将操作各个外设的底层代码封装成了一个个函数,组成了函数库。

现在的芯片规模越来越大,功能越来越丰富,很多芯片厂商除了提供数据手册外也会提供一套函数库给开发者,因为库能够让开发变得更好、更快、更高效。不过,对于需要走向专业的学习者而言,只学习应用层面的开发是不够的,开发函数库也是需要学习的重要技能。那么,对于我们的 YADAN SoC 或 PULPino SoC,要如何从零开始写第一行代码呢,下一节将介绍如何使用 RISC-V GCC 工具链来更为底层地开发我们的程序。

 


评论:
相关文章
ESP32 外部中断

外部中断是单片机实时地处理外部事件的一种内部机制。


Micro:bit V2与M5GO V2全面对比

本文从硬件、软件、生态、价格、延展性方面对Micro:bit V2和M5GO v2进行全面的对比,供大家选型参考。


Python Turtle库从入门到精通

本教程讲解如何使用Python turtle库进行编程,并介绍了一些非常重要的编程概念。您将知道如何处理变量初始化、循环、条件语句、缩进、列表和操作符。



App Inventor 编程实例及指南-第12章 遥控机器人

本章将创建一个应用,将Android手机变成LEGO MINDSTORMS NXT 机器人的遥控器。


46亿年的奇迹 : 地球简史

一套拥有13本书,50个专题,1000+科学条目和知识点,近3000张绝美配图的科普读物。


3D打印兼容可定制LEGO基础块

3D打印兼容可定制LEGO基础块,套件缺件不要急,3D打印高精兼容块,想要什么颜色就打什么颜色。


两大青少年编程等级考试标准全解读,看这一篇就够了!

随着国家持续推进AI与科学教育的发展,以及大量资本的入场,少儿编程教育市场呈火热趋势,目前市场上已有超过200家少儿编程公司,并且这一趋势很可能依旧延续。虽然对于孩子是否必须学编程,行业内仍存在着不同的声音,但不可否认,少儿编程正在由“非刚需”向“刚需”逐渐转变。


在ESP32上实现WEB交互界面

本文主要介绍在未联网(AP热点)情况下实现WEB交互界面的CSS和javascript库。


Wio Terminal

Wio Terminal 微型计算机是由 Seeed 自主研发,内置多种物联网设备,拥有丰富的接口且同时支持无线数据连接,适合处理各种物联网项目。

YADAN Board 开发板

作者:VeriMake   共11讲

YADAN Board 是一块核心为 Anlogic FPGA 的可编程硬件设计学习平台,我们既能直接写硬件描述语言 (HDL) 在里边实现特定的数字系统、甚至是 CPU 与 SoC,又能部署 SoC 后将其视为常规 SoC 来写软件开发。