使用PlatformIO对Arduino UNO和STM32板进行编程

发布者:Haifeeng最新更新时间:2024-03-22 来源: elecfans关键字:PlatformIO  Arduino  UNO  STM32板  编程 手机看文章 扫描二维码
随时随地手机看文章

  使用简单的用户界面,在 Arduino 和 Arduino IDE 中进行开发总是简单而有趣。Arduino IDE 是开源的,可免费使用开发环境,具有编写、编译和上传代码到 Arduino Boards 等所有功能。它基于 Java,可在 Windows、OS X 和 Linux 等主要操作系统上运行。但是,由于它的简单性和庞大的社区,它没有一些经验丰富的开发人员需要的快速开发功能,可以缩短开发周期。有许多可用于 Arduino 的开发环境,但都有一些优点和缺点。今天,我们将从易于使用且与 Arduino 环境相比增加了功能的PlatformIO 开发环境开始。


  什么是 PlatformIO?

  PlatformIO 是一个基于 Python 的物联网开发开源生态系统,是一个在 Windows、Mac 和 Linux 上运行的具有统一调试器的跨平台 IDE。PlatformIO 带有用于 Arduino 或 MBED 等平台的库管理器,以及单元测试和固件更新。PlatformIO 支持许多平台、框架、板,如 Arduino、ESP32、ESP8266,并附带许多示例和库。它独立于运行它的平台,只需要在计算机上安装 Python。

  PlatformIO的优势

  PlatformIO 具有快速开发的特点,它的 C/C++ 代码完成和智能代码检查器等功能可用于快速专业开发,而 Arduino IDE 中没有这些功能。除此之外,PlatformIO 还提供深色和浅色主题支持,以便随时进行开发。它还带有智能代码导航和代码格式化。核心功能包括多平台构建系统、库管理器、串行端口监视器等。

  支持多种架构和开发平台的统一调试器允许使用零配置调试多个嵌入式板。PlatformIO 统一调试器具有条件断点、表达式和观察点、内存查看器、活动调试会话的热重启等功能。PlatformIO Core 是用 Python 2.7 编写的,适用于 Windows、macOS、Linux、FreeBSD 甚至基于 ARM 的信用卡大小的计算机,如 Raspberry Pi、BeagleBone、CubieBoard、Samsung ARTIK 等。除此之外,PlatformIO 还具有文件资源管理器,这有助于当项目发展到一定水平并且组织变得必要时组织文件。

  为 Arduino Uno 设置 PlatformIO

  使用 PlatformIO 非常简单,只需几个步骤即可开始。PlatformIO 需要在计算机上安装 Python,因为如上所述 PlatformIO 核心是用 Python 2.7 编写的。请注意,PlatformIO 不支持 Python 3,因此建议安装 Python 2 版本,然后继续设置 PlatformIO IDE。PlatformIO 是一个 IDE,它为最流行的 IDE 和文本编辑器提供官方包(插件、扩展)。

  今天我们将 PlatformIO 安装到像 Atom 和 Visual Studio Code 这样的文本编辑器中。在 Platform IDE 的官方文档中,它指出 PlatformIO IDE for VS Code (Visual Studio Code) 提供了更好的系统性能,并且用户发现它更容易上手。所以我们将在 Visual Studio Code 中设置 PlatformIO。VS Code 是一个著名的文本编辑器,具有许多扩展,允许我们使用不同的编程语言进行开发。

  让我们开始设置 PlatformIO 以开始在 Arduino UNO 中开发代码。涉及的步骤如下所述:

  首先从其官方网站安装Visual Studio Code 。Visual Studio Code的安装步骤在此不做说明,您可以在 VS Code 网站上找到。就像在 Windows 操作系统上安装任何其他软件一样,涉及到一般步骤。

  成功安装后,Visual Studio 代码将如下所示。

pYYBAGMVpBOAXEwLAAEfv0EvHj0021.png

  下一步包括使用 VS Code Extensions 安装 PlatformIO。为此,您需要转到 VS Code 左上角的扩展图标。左上角的第 5个图标是方形框图标。只需点击它,旁边就会出现一个搜索框,您可以在其中找到许多针对不同编程语言的扩展,例如 C/C++、C#、Python、PHP、Go、JavaScript、TypeScript 和 Node.js 等。

poYBAGMVpA6AEu-EAACNDr9-2vo969.png

  在扩展搜索框中搜索“PlatformIO”,您将看到带有名称和描述的 PlatformIO 图标。只需单击它并安装它。安装工具链和其他依赖项可能需要一些时间。依赖项包括 C/C++ 环境,因为 Arduino 开发主要在 C/C++ 上完成。

poYBAGMVpAuAExgQAAHFNV47HTg144.png

  安装完成后会看到如下界面。该界面包括所有必要的导航,例如创建新项目,导入Arduino项目,打开项目,项目示例等。建议在安装完PlatformIO后重新启动VS Code Editor。

poYBAGMVpAeANkdbAAG7MAFkiDU178.png

  这样就完成了 PlatformIO 的安装步骤。现在 PlatformIO 已安装并可以使用了。就像 Arduino IDE 一样,我们将从 Blink Program 开始,并尝试在 Arduino UNO 中上传 Blink Program。

  使用 PlatformIO IDE 对 Arduino UNO 进行编程

  PlatformIO 接口将在编程 Arduino UNO 的同时进行讲解。在这里,我们正在使用 PlatformIO 对 Arduino 进行编程以使 LED 闪烁。使用 Arduino IDE也可以做到这一点。按照以下步骤创建一个用于闪烁 LED 的新项目。

  从快速访问菜单中选择“新建项目”选项卡。

pYYBAGMVpAOABruxAAC0CsBCzyw382.png

  为项目命名(此处为“Blink”)。搜索并选择 Arduino UNO 板。由于我们在 Arduino 框架中工作,所以选择的框架将是 Arduino。填写所有详细信息后,只需单击完成。

pYYBAGMVo_-ATRDZAAD7v8yje2g997.png

  该项目将通过收集资源和其他依赖项开始创建。

poYBAGMVo_uAHfP5AADGfcBtIj4840.png

  成功创建项目后,您将收到“项目已成功初始化”的提示消息,并填写所有详细信息。

poYBAGMVo_eAXti9AADa4GVcSpk413.png

  要打开创建的项目,只需向下滚动 PlatformIO 的主菜单,您将看到从头开始创建的所有项目列表。在创建的项目的右上角单击“打开”以打开项目并开始编辑。

pYYBAGMVo_OAeN0KAABVZmtQNd0494.png

  打开项目时,最初它看起来像是隐藏的,但不用担心,PlatformIO 具有文件浏览器功能,可以找到当前项目的所有文件。只需转到左上角并打开“无标题(工作场所)”。单击它时,所有文件将显示为下拉菜单。要找到文本编辑器来编辑“代码”,请选择“src”并打开“main.cpp”。文本编辑器模式将出现在主屏幕上,并打开一个新选项卡。在这里您可以编写 Current Ongoing Project 的所有代码。

poYBAGMVo--AOmUSAADo61bS-bQ577.png

  只需为 Arduino UNO 编写闪烁代码。请注意,PlatformIO 没有默认访问 Arduino 库,因此每次为 Arduino 编写代码时,始终在程序开头包含 Arduino 库,即“#include 《Arduino.h》” 。

poYBAGMVo-yAJMaGAAEzt5ACJLo957.png

  下一步是编译和上传代码。为此,让我们看一下 PlatformIO 提供的功能。此外,PlatformIO 默认选择 COM 端口。但如果它不是所需的 COM 端口,您也可以更改端口。COM 端口的变化将在本教程后面解释。PlatformIO 具有 Build、Upload、Upload to Remote Device、Clean、Test、Run Task、Serial Monitor、New Terminal等功能。所有功能都可以在编辑器的左下角找到。当您将鼠标悬停在图标上时,将显示功能。

pYYBAGMVo-iAHTFkAAE3kkzVxtw716.png

  要构建草图,请单击“构建”并上传草图,请单击“上传”图标。上传完成后,您将能够看到上传所需的时间以及所有其他详细信息以及一条消息“成功”。代码上传成功,您将能够看到 Arduino Board 中的 LED 闪烁。

pYYBAGMVo-SAK6VqAAXNHbOHjbs527.png

  要选择或更改任何 COM 端口,只需转到 PlatformIO 主屏幕,然后转到设备,在这里您可以看到所有连接的可用设备。选择适当的 COM 端口并按照相同的程序上传草图。

poYBAGMVo-CAdvP5AAEitgIcw8U874.png

  使用 PlatformIO IDE 对 STM32 板进行编程

  对 STM32 板进行编程将具有与上述编程 Arduino UNO 完全相同的步骤。不同之处在于为 STM32 打开新项目时选择 STM32 的板。PlatformIO的好处是,它不需要任何板子单独下载任何外部包,它会自动下载所有包,方便我们选择板子和进入编辑器。我们将使用外部 JLink/ JTAG/ STLink/ 串行编程器将草图上传到 STM32。

  只需命名项目(此处为“Blink STM32”)。然后选择STM32的板子,即‘ BluePill F103C8(Generic) ’。然后选择框架作为 Arduino。单击完成并等待一段时间,因为最初下载板 STM32 的包和依赖项需要一些时间。

poYBAGMVo9uAMPOjAAD22qULU00773.png

  一旦设置,下一个项目创建时间将比第一次少。现在只需转到左侧文件资源管理器中的 Untitled(Workspace) -》 src -》 main.cpp。

  现在接下来的步骤将很重要,因为需要决定我们应该使用哪个程序员来对 STM32 板进行编程。有许多可用的编程器,例如 JTAG、STLink、JLink、Serial 等。所有这些都可以工作,但您需要配置“platformio.ini”配置页面或文件。

  在这个项目中,我们使用串行编程器 CP210x USB 到 UART 桥接器。

  首先,使用以下引脚映射将串行编程器连接到 STM32 板,并将其连接到 PC。

pYYBAGMVo9aALkhMAAANtzYdka0398.png

  现在转到项目资源管理器并打开“platformio.ini”页面并更改语句,如图所示。upload_protocol将告诉程序员应该使用哪个(STLink、JLink、Serial 等)。upload_port选择 COM 端口。您可以通过转到主页中的“设备”来找到。根据您的 COM 端口更改 COM 端口。

poYBAGMVo9OAe3yCAAG3VUI6GAM604.png

  转到“main.cpp”并将程序更改为Blink程序。现在只需上传程序,它将显示成功消息和上传时间。现在 LED 将开始闪烁连接到 STM32 板的 PC13 引脚。

poYBAGMVo8-ALN0IAAGHUcjuyac221.png

  这完成了使用 PlatformIO对 Arduino UNO和 STM32 板进行编程的完整教程。

#include

无效设置(){

// 将数字引脚 LED_BUILTIN 初始化为输出。

pinMode(LED_BUILTIN,输出);

}

// 循环函数永远一遍又一遍地运行

无效循环(){

数字写入(LED_BUILTIN,高);//打开LED(HIGH是电压电平

延迟(100);// 等待一秒钟

数字写入(LED_BUILTIN,低);//通过使电压低来关闭LED

延迟(100);// 等待一秒钟

}


关键字:PlatformIO  Arduino  UNO  STM32板  编程 引用地址:使用PlatformIO对Arduino UNO和STM32板进行编程

上一篇:基于STM32+JAVA宠物管理系统的设计与实现
下一篇:STM32F103的CAN收发通信过程

推荐阅读最新更新时间:2024-11-11 19:42

2018年CES电子展上可编程的机器人抢尽风头
CES是Consumer Electronics Show的首字母缩写,就是消费电子展的意思。这个展会,每年举办两次,1月份的冬季电子展,6月份的夏季电子展。 曾经的CD、DVD、平板等展品,都成为流行的电子消费品。所以,这个展会可以说是一个风向标。因为王颢老师关注教育方面,所以这里就不介绍高大上的人工智能、自动驾驶啥的。去年乐高展出了它的Boost可编程机器人,今年又出现了哪些可编程的机器人呢? 1、Root机器人 对的,就是这个机器人,这个机器人下面有两个轮子,中间可以插上马克笔。右边的是iPad,装了一个可以对机器人进行编程的app,让机器人绘制有意思的图案。 从编程界面来看,类似我经常推荐的ScratchJr,都是
[机器人]
单片机的“编程语言”规范
  我在多年教学中发现,单片机的学习,还是以编程为难点。翻开现在的单片机教材,硬件部分与知识讲解部分基本上都是大同小异,唯有程序编写部分,真可谓是五花八门,异彩纷呈。试想一下,面对五花八门的程序编写资料,学生们又如何能知道从哪儿下手呢?这也难怪多数同学认为,编程只是个别学生的事情,与他们无关了。   这是在学校里面单片机的教学情况,社会上学习单片机的情况又怎样呢?随着电子元器件 技术的发展,硬件电路的制作越来越简单容易,有些器件可以直接把管脚焊接在一起,甚至无需用电路板连接即可使用,让大家感到头疼的还是编程。   尤其是业余单片机爱好者,没有受过专业的编程语言训练,大多数情况下是使用别人写好的程序,最多是在别人的程序上修改。我
[单片机]
单片机的“<font color='red'>编程</font>语言”规范
labview编程技巧-----如何处理数据的位
位操作是自动化控制中经常遇到的问题,最近看到论坛上有人提到字节高四位和低四位提取的问题,今天仔细探讨一下位的操作. 位不等于LABVIEW中的布尔量BOOLEAN占一个字节,和U8 I8相同,在内存中都是一个字节. 而一个字节是由8个位组成的,所以一个字节可以表示8个开关量. 最简单地操作是BOOLEAN 转换成I16,LV本身提供,FALSE---- 0,TRUE---- 1 数字转换成BOOLEAN,LV没提供,实际用!=0判断就可以了,非0既为真 因为BOOLEAN和I8 U8同占一个字节,因此转换也可以直接用CAST函数实现 因为LABVIEW提供了NUM-- BOOLEAN ARRAY和BOOLEAN A
[测试测量]
labview<font color='red'>编程</font>技巧-----如何处理数据的位
CAN总线学习系列之七——CAN总线软件编程
在编写CAN总线通讯程序时,主要编写函数由初始化函数,发送函数和接收函数组成。其中发送函数一般写为主动发送函数,接收函数一般采用中断接收。下面就简单介绍一下三个函数的编写。 1 SJA1000寄存器初始化配置顺序 (1)进入复位模式,进行配置 (2)配置时钟分频寄存器,决定Peil模式还是Basic模式。 (3)配置总线定时寄存器,确定波特率。 (4)配置中断使能寄存器,决定使用那几个中断 (5)配置输出控制寄存器 (6)配置验收码和屏蔽码,决定接收哪一类节点的数据 (7)退出复位模式,进入正常工作模式。 2 发送数据顺序 (1)查询状态寄存器,判断是否正在接收,是否正在发送,是否数据缓冲区被锁。 (2)配置发送缓冲区。 (3)配置
[嵌入式]
C51单片机模块化编程万年历设计
原文地址: C51单片机模块化编程万年历设计 作者: 给力哈 哈 程序如下: main.h #ifndef __MAIN_H__ #define __MAIN_H__ #include regx52.h #include intrins.h #include absacc.h #define uchar unsigned char #define uint unsigned int #define DQ P3_7 #endif ds18b20.h #include main.h uint sec; uint min=41; uint hour=18; uint day=20; uint month=
[单片机]
elmos可编程烟雾探测器芯片E520.30
德国elmos公司日前宣布推出基于光电式的烟雾探测器方案E520.30,它具有硬件连线总线接口( 联网式烟雾探测器 )。该IC可用于实现可编程烟雾探测器平台,具有大电流驱动器,可驱动红外LED和与之匹配的光学信号测量放大器。 芯片具有高度集成的模拟电路以及可寻功能,只需很少的外部元件,极大地减少了烟雾探测系统的复杂性。该器件工作时候的电流消耗小于90 A(包括烟腔的LED)的平均电流。两线供电模式和通讯总线接口,可在8〜50V的电压范围进行工作。 该方案用于光电式烟雾探测器,系统具有很高的灵活性:内部集成8位微控制器,并带有4 KB的Flash-ROM,128字节的RAM和28字节的EEPROM,通过总线模式用来
[传感器]
三菱PLC编程技巧及实例图解
三菱PLC的实例分析及编程技巧:利用PLC进行程序编制时,为了减少指令条数,节省内存和提高运行速度,应掌握以下编程技巧。 (1) 把串联触点多的电路编在上方,如图1所示,可见(b)形式减少使用ORB指令或多重输出指令等。 (2) 并联触点多的电路放在左边,如图2所示,可见(b)形式减少使用ANB指令。 (3) 多重输出电路,最好将串联接点多的电路放在下边,如图3所示,可以不使用MPS、MPP指令等。 (4) 如果电路复杂,采用ANB、ORB等指令实现比较困难时,可以重复使用一些触点改成等效电路,再进行编程,如图4所示
[嵌入式]
arm学习笔记一(arm概述及其基本编程模型)
arm概述及其基本编程模型 arm体系结构的版本及命名方法 arm体系统构的6个版本的特点 arm体系的变种 1 thumb指令集(t变种) 2 长乘法指令(M变种) 3 增强型dsp指令(E变种) 4 java加速器jazelle(J变种) 5 arm媒体功能扩展(SIMD变种) arm/thumb体系版本的命名格式 1 字符串ARMv 2 ARM指令的版本号 1-6 3 表示变种的字符 版本4之后M变种成为标准功能,不需要列出来 4 使用x表示排除某种写功能 arm处理器系列 arm7 arm9 arm9e arm920T ARM922T ARM9440T arm10e securCore intel的Xscale intl
[单片机]
小广播
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

电子工程世界版权所有 京ICP证060456号 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved