微控制器的规格在过去的几十年里变化不大,但是语言和支持软件的扩展为应用程序开发开辟了许多道路。
多年来,编程微控制器涉及两种语言的选择: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进行通信的能力或其他特性,那么语言和系统的选择可能是寻找最佳开发路径的重要因素。
用户选择的语言很重要,但最好记住,没有“最好的语言”或“最好的微控制器”这样的东西。最后,最好的选择是应用程序所要求的。
好文章!
然而,它并不是在谈论嵌入式Javascript,后者正在被越来越多的人所采用。在嵌入式javascript中,一个似乎是最适合微控制器的是Espruino (http://www.espruino.com/Reference).从用户的角度来看,特性几乎与Micropython相似,但是具有更友好的语言语法
这个特性非常好——帮助我们这些老家伙在为PICs编写嵌入式代码时克服了ASSY,绕过了c++。
我想我要一跃成为微型蟒蛇。学习曲线对老年人和年轻人来说是陡峭的,但总是一个伟大的智力锻炼项目!“雷竞技注册关于电路的一切”是超级....保持平衡,即工作工程师和学生。你现在做得很好。KC1CCG
除了解释BASIC之外,还可以使用BASIC编译器Great Cow BASIC为Arduino Uno和其他程序进行开发。它维护解释性BASIC的核心语法,但可以用于生成一个.hex文件,该文件可以以这种形式编程到Arduino上。