雷竞技注册
新闻

原型资源:微控制器编程的新语言基础

2019年2月5日通过罗宾·米切尔

微控制器的规格在过去的几十年里变化不大,但是语言和支持软件的扩展提供了许多选择。在本指南中了解微控制器可用的几种新语言。

微控制器的规格在过去的几十年里变化不大,但是语言和支持软件的扩展为应用程序开发开辟了许多道路。

多年来,编程微控制器涉及两种语言的选择:C语言和汇编语言。但是随着微处理器的新语言的出现,用户在应用程序设计上面临更多的决策。

哪种语言是最好的?没有明确的答案,因为这取决于您正在处理的应用程序。为了帮助您规划开发,这里提供了对可用于微控制器的不同语言的高级探索,以及进一步学习的资源。您也可以查看我们以前的文章嵌入式系统的语言,包括Rust, Python, VHDL和Verilog。

C和汇编

在微控制器使用新语言之前,只有C语言和汇编语言可供选择。在深入学习新语言之前,让我们简单地看看它们。

C语言是一种流行的微控制器语言尽管它是在20世纪70年代早期开发的。对于微控制器来说,C很好用,因为它有处理内存分配的能力,同时还能执行复杂的函数,如if语句、循环和数学表达式。

汇编语言提供了C语言之外的一种选择,具有一些优点。汇编是一种较老的语言,它经常使用特定于设备的代码,使用汇编实用程序转换这些代码。使用这种语言,用户可以直接访问CPU,在那里例程可以小心地调整精确的定时应用程序。汇编提供了更好的CPU使用率,以及C不支持的进一步指令集,比如使用特定bit指令的位操作。

了解更多:

MicroPython

Python是一种功能丰富的解释性语言它以简单、清晰和通用的适应性而闻名。这些特性也使得该语言对于微处理器来说过于庞大。然而,在2013年众筹网站Kickstarter的帮助下,物理学家达米恩·乔治将Python改造成了一个更小的版本,MicroPython,适合在微控制器上使用。

MicroPython代码是开源的在麻省理工学院的许可下。该语言运行在微处理器的裸金属上,使用标准Python库的一小部分。它可以只使用256k的空间和16k的RAM,但是它被设计为尽可能与常规Python完全兼容。

MicroPython的官方微控制器板PyBoard的示意图。图片由icroPython

最初设计用于在基于arm的系统上运行,包括英国广播公司(BBC)微:位, Adafruit Circuit Playground Express和MicroPython PyBoard,它也可以用于其他处理器,包括ESP8266和ESP32。

MicroPython在构建复杂项目原型方面非常出色。例如,在ESP8266上,可以通过几个简单的函数调用来创建物联网项目,使MicroPython项目连接到本地Wi-Fi点,并开始将信息流传输到MQTT代理。

了解更多:

是谷歌支持的开源编程库,旨在通过使用拖放块使代码可视化逻辑。

而不是依赖于在正常对话中没有意义的单词和短语,用户将块放置到一个环境中,并将它们连接在一起来定义程序的流程。例如,用户将IF块拖到工作场所中,产生的操作也被拖到IF语句块中,而不是编写IF语句。

Blockly互动演示的截图,由谷歌对教育raybet电子竞技竞猜

构建块之后,用户可以用多种语言导出Blockly代码,包括JavaScript、Python、PHP、Lua和Dart。Blockly系统的优点之一是,错误几乎不可能发生(不是bug或错误,只是普通的旧错误),因为块需要特定的连接,不允许不兼容的块连接。

虽然这种编程方法可以在许多平台上使用,包括Micro Bit和Adafruit Circuit Playground Express,但它不是设计用于最终的商业产品。然而,它在原型阶段非常有用,特别是在需要概念验证和学习设备的细节将花费很长时间(如寄存器、配置位和IDE配置)的情况下。

了解更多:

Arduino c++

虽然它通常被称为“Arduino编程语言”,但Arduino实际上是用古老的c++编程的,并使用了Arduino特有的库子集。

Arduino c++与常规c++的区别包括微控制器的通用例程,因为标准库c++函数不能在其有限的功率和内存上操作。

Arduino Uno板。图片由Arduino

使用这个较小版本的c++使该语言具有很高的可访问性,因为许多设计人员已经熟悉常规c++。实际上,通过使用编译器,代码可以用c++编写,然后解释为Arduino可以使用的代码。

使用Arduino c++的优点是,它适用于商业环境,比Python等大型语言更快,并且具有高度可移植性。在ARM核心上编译最初用于Uno的代码是由库使用泛型函数自动处理的。

了解更多:

基本

BASIC语言最早出现于上世纪60年代,随着80年代个人电脑的兴起,它达到了鼎盛时期。BASIC(初学者通用符号指令代码的首字母缩写)至今仍在使用,因为它的简单性和解释性,允许设计者更多地关注硬件而较少地关注软件。

当在微控制器上使用时,BASIC被解释,这会导致性能损失。然而,该语言的优势在于它具有高度的可移植性。任何用BASIC编写的代码都可以在任何有BASIC解释器的设备上工作。

图片由查尔斯·r·汉普顿

BASIC在微控制器上使用的两个例子是BASIC Stamp(由视差生产)和PICAXE, PICAXE是由PICAXE生产的,使用Microchip PIC微控制器。BASIC对于原型设计甚至硬件开发都是一种很好的语言,但是在商业产品中应该避免使用它,因为它的速度慢,能耗高。

了解更多:

结论

在过去使用微控制器时,设计师必须选择自己喜欢的平台,然后学习它使用的语言。随着语言和软件的进步,语言可以决定设计师使用哪个平台。如果设计人员正在寻找特定的特性,例如GPIO支持、网络、通过SSH进行通信的能力或其他特性,那么语言和系统的选择可能是寻找最佳开发路径的重要因素。

用户选择的语言很重要,但最好记住,没有“最好的语言”或“最好的微控制器”这样的东西。最后,最好的选择是应用程序所要求的。

8的评论
  • yerpj 2019年2月6日

    好文章!
    然而,它并不是在谈论嵌入式Javascript,后者正在被越来越多的人所采用。在嵌入式javascript中,一个似乎是最适合微控制器的是Espruino (http://www.espruino.com/Reference).从用户的角度来看,特性几乎与Micropython相似,但是具有更友好的语言语法

    喜欢的。 回复
  • withoutego 2019年2月8日

    这个特性非常好——帮助我们这些老家伙在为PICs编写嵌入式代码时克服了ASSY,绕过了c++。
    我想我要一跃成为微型蟒蛇。学习曲线对老年人和年轻人来说是陡峭的,但总是一个伟大的智力锻炼项目!“雷竞技注册关于电路的一切”是超级....保持平衡,即工作工程师和学生。你现在做得很好。KC1CCG

    喜欢的。 回复
  • J
    jbandy1564 2019年2月8日

    除了解释BASIC之外,还可以使用BASIC编译器Great Cow BASIC为Arduino Uno和其他程序进行开发。它维护解释性BASIC的核心语法,但可以用于生成一个.hex文件,该文件可以以这种形式编程到Arduino上。

    喜欢的。 回复