在NUCLEO_H743上玩MicroPython.doc

上传人:白大夫 文档编号:3408196 上传时间:2019-08-22 格式:DOC 页数:7 大小:29KB
返回 下载 相关 举报
在NUCLEO_H743上玩MicroPython.doc_第1页
第1页 / 共7页
亲,该文档总共7页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述

《在NUCLEO_H743上玩MicroPython.doc》由会员分享,可在线阅读,更多相关《在NUCLEO_H743上玩MicroPython.doc(7页珍藏版)》请在三一文库上搜索。

1、在NUCLEO_H743上玩MicroPython随着micropython 1.9.4版本的发布,micropython开始正式支持STM32H7微控制器。STM32H7作为目前STM32 Cotex-M系列控制器中性能最高的系列,micropython在它上面的表现如何呢?和其它型号相比,有什么优势?下面我们就在NUCELO_H743开发板上,看看MicroPython的表现。从 1.9.4版开始,micropython在支持的开发板中增加了Nucleo-H743ZI开发板,不过官网上并没有提供开发板的二进制固件文件,要运行micropython就需要自己编译源码。如果安装过micropy

2、hon编译环境,那么只要在micropython目录下,输入下面命令进行编译:make -C ports/stm32 BOARD=NUCLEO_H743ZI如果没有安装编译环境,可以参考另外一篇文章在win10的ubuntu子系统下编译micropython,按照文中的方法就可以安装编译环境。这个方法也可以用于其它虚拟机,或者ubuntu系统。如果觉得安装编译环境太麻烦,或者网速太慢安装不了,可以直接下载我编译好的固件,将固件通过板载的STLink下载到芯片,就可以运行了。在使用前,我们需要准备两根microUSB数据线(安卓手机的数据线),以及串口终端软件,如putty、kitty、Moba

3、Xterm等。注意不能使用串口助手之类的软件,因为它们不支持终端模式。为什么需要两个数据线呢?因为ST-Link需要使用一个数据线,而开发板上的STM32H743的USB可以接入另外一个USB。写入固件后,先断电一次,然后连接ST-Link,再连接另外一边的用户USB。如果一切操作步骤正常,这时就会显示一个pybflash磁盘,我们可以往这个磁盘中写入文件,运行编写好的程序。默认情况下,会从main.py文件开始运行,所以我们可以将编写的程序放入main.py,让它自动运行。如果是win10或者macos、Linux系统,无需安装任何驱动,如果是win7系统,还需要安装一个串口驱动,驱动程序就

4、在这个PYBFLASH磁盘中。安装后,我们可以看到有两个串口,一个是ST-Link的串口,另外一个就是MicroPython的串口了。运行一个终端软件,串口可以设置为上面两个串口中的任何一个,并设置波特率是115200,流量控制选择None。下面以kitty软件为例,其它软件的使用也是类似的:设置好参数后,点open按钮,就可以打开终端了。按下回车键,如果出现提示,就代表运行成功了。这时按下ctrl-B键,就可以看到版本提示。按照习惯,我们先从点灯开始。在MicroPython中,默认定义了LED类型,我们可以通过pyb.LED进行控制,如:pyb.LED(1).on()pyb.LED(1).

5、off()因为NUCLEO_H743开发板上有3个LED,所以我们也可以使用它们做一个跑马灯:while 1: for i in range(1, 4): pyb.LED(i).toggle() pyb.delay(500) pyb.LED(i).toggle() pyb.delay(500)按键的使用也非常容易,MicroPython中有一个内置的Switch类,可以用来读取按键。下面的程序通过按键来控制LED1的状态:sw=pyb.Switch()sw()while 1: if sw(): pyb.LED(1).on() else: pyb.LED(1).off()定时器也是我们在编程时最

6、常用的功能之一,下面的程序中,分别在定时器6和定时器7的回调函数中控制LED1和LED3,并使用不同的频率闪烁。tm = pyb.Timer(6, freq=2)tm.callback(lambda t: pyb.LED(1).toggle()tm2 = pyb.TImer(7, freq=5)tm2.callback(lambda t: pyb.LED(3).toggle()虽然STM32H743有22个定时器,但是micropython目前只支持到定时器14,超过14的定时器可以定义,但是一旦使用就会死机。PWM也是很常用的功能,它是通过定时器控制GPIO实现的,是定时器的一种特殊工作模式

7、。下面是在MicroPython中使用PWM的方法,下面程序通过定时器3的CH3控制LED1(PB0),通过周期改变占空比实现了一个呼吸灯。tm = pyb.TImer(3, freq=1000)pwm = tm.channel(3, mode=pyb.TImer.PWM, pin=pyb.Pin(B0)pwm.pulse_width_percent(20)while 1: for i in range(100): pwm.pulse_width_percent(i) pyb.delay(20)STM32H743带有两路DAC,分别是PA4和PA5,通过DAC我们可以输出模拟电压、产生各种波形

8、。如下面分别使用8位(默认情况)和12位方式控制DAC的输出:d1 = pyb.DAC(1)d1.write(100)d1 = pyb.DAC(1, 12)d1.write(3000)除了直接输出模拟电压,也可以输出不同波形:三角波d1.triangle(2048)白噪声d1.noise(1000)还可以输出预定义的用户波形。利用这个特点和STM32H7的高速特性,完全可以将它作为一个简易的波形发生器。MicroPython还有很多功能,这里就不一一介绍了,大家可以自己运行一下,体验MicrPython带来的方便。最后,为了测试MicroPython在STM32H743上的性能,我们做了一个计

9、算性能对比测试,在不同的硬件平台上,进行加法、乘法、除法、圆周率计算,并记录下计算消耗的时间。通过不同硬件计算时间的对比,就可以直观的比较性能了(这可能是目前最全面的MicroPython计算性能对比测试,将目前常见的硬件都包括了)。完整的测试程序from microbit import running_TImedef pi(places=100): # 3 + 3*(1/24) + 3*(1/24)*(9/80) + 3*(1/24)a = n+na, na+8, d+da, da+32 t = t * n / d c += t return c / (10 * extra)def pi_t

10、est(n=5000): t1=running_time() t=pi(n) t2=running_time() print(Pi test: , (t2-t1)/1000, s)def add_test(n=1000000, a = 1234, b = 5678): t1=running_time() sum = 0 for i in range(n): sum = a + b t2=running_time() print(Add test: , (t2-t1)/1000, s)def mul_test(n=1000000, a = 1234, b = 5678): t1=running_

11、time() sum = 0 for i in range(n): sum = a * b t2=running_time() print(Mul test: , (t2-t1)/1000, s)def div_test(n=1000000, a = 1234, b = 5678): t1=running_time() sum = 0 for i in range(n): sum = a / b t2=running_time() print(Div test: , (t2-t1)/1000, s)print(Speed test starting.)add_test()add_test()m

12、ul_test()mul_test()div_test()div_test()pi_test()pi_test()测试结果MCU主频整数加法乘法除法圆周率microbitnRF5182216M61.88874.075103.935Nucleo_F091STM32F09148M19.88225.8951.7882.851PYBNanoSTM32F40184M6.9597.22212.52418.236Nucleo_F411STM32F41196M5.8586.07610.47816.467PYBV10STM32F405168M3.4363.5636.06710.18STM32L476DISCST

13、M32L47680M8.5868.98914.91318.932STM32F7DISCSTM32F746192M1.9462.3043.684.579Nucleo_H743STM32H743400M0.8560.9421.5342.835ESP8266ESP826680M15.54618.30219.70641.926ESP32ESP32240M2.6072.7943.8397.729ESP32_psRAMESP32240M3.3653.55318.90215.012ESP32_LoBoESP32240M3.3963.49913.029.607ESP32_psRAM_LoBoESP32240M4.2284.1518.90218.757计算结果的单位是秒所有固件都更新到最新版本,除了Microbit、ESP32 Lobo外,固件版本都是1.9.4-479。

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 其他


经营许可证编号:宁ICP备18001539号-1