嘿!您似乎在 United States,您想使用我们的 English 网站吗?
Switch to English site
Skip to main content

在编写基于系统的单片机时,我承认自己很“老式”:我喜欢C语言和嵌入式编程,我还在等待更好的东西说服我去使用。

我也喜欢快速的得到概念验证启动与运行的方法。当我一转身发现,Python作为最常用的编程语言与其应用在应用程序的现象越来越多,如机器学习与Intel Movidius Neural Compute Stick。

因此,在本文中,我将展示如何运行一个“Hello World”应用程序,该应用程序用Python编写,并在半小时内从头开始运行一个主流的开发工具包。当然,除非你的互联网连接速度很慢,它可能会耗费一些时间。

STM32F401 Nucleo

在我们的开发工具包中,使用ST Micro Nucleo F401RE板。这是一个功能强大的嵌入式应用开发板,并为我们提供:

MCU: STM32F401RET6 ARM®Cortex®-M4 32-bit, 84MHz
SRAM: 96 KB
Flash: 512 KB
Digital I/O: 50 pins at 3.3V (in the ubiquitous Arduino format)
ADC input: 16 pins

...在许多其他有趣的功能中

使用Nucleo的一个好处是,我们需要启动的另外一个硬件USB A 到USB mini电缆,我们将用它们来供电和编程。

在我们开始之前

在我们使用ST Nucleo板之前,我们需要做一些事情。首先要做的是确保我们的电源跳线在Nucleo板上的正确位置:在JP5上,跳线应该连接pin 1和pin 2:

JP5_marked_ebf52f4c44dea8ac7859c0d5db280426036b8722.jpg

如果您使用的是Windows,那么下一步就是下载并安装ST-Link driver。它使我们能够访问ST Nucleo编程端口并在主机上创建一个虚拟的COM端口。如果你使用的是MAC OSX或Linux,就可以很好的运行了,因为设备会自动识别。

01_-_link_driver1_4aaa433678f98b29532254d04d4c18518ed08d51.jpg

在使用Python IDE之前,我们还需要升级机载固件。升级和安装说明可以在这里找到。当你下载了zip文件并打开它时,Windows用户可以找到一个可执行文件:

02-_executable_1a82c4761b4717513fcca6c88174819e6b944b15.jpg

运行该可执行文件,单击[Device Connect]按钮:

03a_-_update_yes_button2_b4ab484d449beb3e6b7057246973cbc2b764e4f8.jpg

点击[Yes>>>]按钮。完成后,您应该得到一个“Update Successful”消息

Zerynth Studio

我们将下载并安装Zerynth Studio作为我们的IDE,用于使用Python编程ST Nucleo板。虽然有‘Pro’版本,但免费版给了我们所有我们需要的东西,我们需要在Arduino, Hexiware, NodeMCU, Particle, RedBear, ST Micro, Sparkfun和其他一些制造商的支持下,构建相当复杂的应用程序。

安装过程非常简单,无论您使用什么操作系统,您都可以为Linux下载Windows可执行安装程序、MacOS Disk图像(. dmg)文件或or a ‘./zerynth’ 脚本(在“tar.xz”存档)。

一旦安装并运行,您将会得到一个与此不太类似的接口:

04a_-_updated1_aeb1fc4ba340b896da5253b8e6f7b2323d608f71.jpg

如果你现在将你的ST Nucleo连接到电脑上的一个USB端口(或者你已经连接了),Zerynth将会识别ST Nucleo,你可以在设备管理工具栏上的‘target’框中选择它:

05a---target1_f5896e2356799c50431a5c3ce441d946b556d41c.jpg

接下来,我们要使用DMT上的[Z]按钮注册该设备:

06---z-button_arrow_c4bb1419ef0ec9da2e146bd5f25e41c0dab6ec3e.jpg

点击[Register] 按钮:

07_-_register1_b743edd35e80b5d992b2a0d886aba69c14735944.jpg

注册设备窗口向我们展示正在注册设备:

07b_-_registering1_faaa69406344dc481571399d6976756d18ef260e.jpg

如果成功注册了你的板,你可以看见如下所示的东西:

08---succesful-arrow_a8150abfaabefe2786aed7131a154afc6f677dbc.jpg

再次点击[Z]按钮来创建为了运行代码的虚拟机器。此时会跳出一个窗口,其上有需要您点击的[Create]按钮:

09_-_create_VM_857983d7cd5df57f542e3ea6dfba379c7c3c281a.jpg

确保选择了‘Standard VM’随机按钮,点击[Create]:

10b2_8a68a951858335ae3ca7704451636f26b2da2ca0.jpg

然后点击[Virtualize]按钮:

11_-_virtualise2_304b772e0b2ac113ee8b9d1d271be2adce98608d.jpg

继续点击[Virtualize]按钮:

11b_-_virtualise_pt2_5d988636ad93817d5cbcd56ab386d378ab4f91c8.jpg

在主机PC处理后,你的设备就实现了其虚拟化:

12b---VM-ok_86397613ded30407a962c34a17ee3c29cc25f928.jpg

经过这些操作后,我们就能用Python编辑我们的板子了

用Python编程

如果您是嵌入式Python编程的新手,那么您将会喜欢下一部分,因为Zerynth会给您一个巨大的开端。首先,是相当有吸引力的I /O pin map——在得出我们的程序所需的pin名称时总是有用的:

ST_nucleof401re_pin_io3_92ceddaf8fe85f1bca88547332eb1d0ef5d8a76a.jpg

但更重要的是,如果你向下看IDE窗口左边的图标,你会看到一个灯泡形状的图标,这是示例按钮。单击这个,您就会看到一个Python示例代码的列表,它包含了最初的步骤到使用Zerynth库的硬件交互。当我们希望得到基本的“hello world” blink应用程序并运行时,单击‘Basics’旁边的箭头来列出介绍的例子:

13_-_examples_50f3509e15339dde0a4a8b32429519b3e941eb2b.jpg

然后点击“Blink”来弹出示例代码框。通过点击[Clone]按钮,我们可以将该代码放入编程窗口中:

14_-_clone_blink_db17be125e73487bd1399cc61a434100bd782991.jpg

因此,我们觉得我们实际上已经在这里做了一些工作,让我们编辑自己的例子,并给我们的LED一个短期的任务周期:

15_-_make_it_our_own_2b1278f3012564f7f58f8e0f4d44f9d45f9ab89e.jpg

我们用‘uplink’按钮就可以把这段代码放到我们的设备上:

16---uplink-arrow_8721815039dc40fd6ac136fdb0b76aca1c4c5980.jpg

注意,如果你只是想验证你的代码,而不上传它,你可以使用uplink按钮左边的按钮。

现在,提个建议:保持你的手指放在Nucleo的复位按钮上…

reset_buttonsm_752f5195138fc3590ce51914a21c4ad72857f47d.jpg

…由于在uplink过程中,你会被要求重置你的板, 在uplink超时前你不会拥有大量的时间:

17_-_reset_c7f328cadf3a3e82dcfbf3b28af2e64fe3afdf6c.jpg

现在,如果一切都按计划进行,我们将在消息窗口中得到“uplink done”的消息:

18---done-arrow_f05449b6650ca0e7601f6716ef7c5995c79cf91e.jpg

在我们的Nucleo 板上也应该有一个闪烁的LED。

总结

ST Micro Nucleo板是可靠的单片机开发工具包,它由许多传统的嵌入式工具支持,包括IAR EWARM, Keil MDK-ARM,mbed和GCC / LLVM。

然而,我喜欢Zerynth在这里做的事情。一个固定的开始,它获得代码所需的时间是最小的。这使得在开发工具包中尝试和修改变得非常容易。

Zerynth还在文档、例子和编程指南上投入了大量精力,这样你就可以通过使用它来学习Python,而不仅仅是通过web脚本。从这其中吸取经验,你可以学到一些值得你花时间去学习的新技巧。编码快乐!

Mark completed his Electronic Engineering degree in 1991 and worked in real-time digital signal processing applications engineering for a number of years, before moving into technical marketing.