打印
[STM32F7]

在NUCLEO_F767ZI上使用MicroPython

[复制链接]
1354|6
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
本帖最后由 shaoziyang 于 2016-8-1 11:58 编辑

前面介绍了在NUCLEO_F767ZI上移植MicroPython,下面在简单介绍在在NUCLEO_F767ZI上使用MicroPython。

首先写入MicroPython固件,然后通过一个终端连接到开发板,串口的参数需要设置为115200, n, 8, ,1, none。不要使用一般的串口辅助调试软件,而需要使用支持串口的终端软件,如WindowsXP自带的超级终端、xshell、MobaTerm、putty等。连接后,将会显示版本信息,已经python的命令提示符: >>>

在命令提示符后,可以直接输入各种python命令和程序,如print、数学计算等。值得一提的是python带有大整数计算功能,支持超大整数运算,例如我们可以直接用 ** 进行指数计算。



利用大整数,还可以精确计算圆周率到任意位数,下面的程序可以计算圆周率。
import time

def pi(places=10):
  # 3 + 3*(1/24) + 3*(1/24)*(9/80) + 3*(1/24)*(9/80)*(25/168)
  # The numerators 1, 9, 25, ... are given by (2x + 1) ^ 2
  # The denominators 24, 80, 168 are given by (16x^2 -24x + 8)
  extra = 8
  one = 10 ** (places+extra)
  t, c, n, na, d, da = 3*one, 3*one, 1, 0, 0, 24

  while t > 1:
    n, na, d, da = n+na, na+8, d+da, da+32
    t = t * n // d
    c += t
  return c // (10 ** extra)

def pi_t(n=10):
    t1=time.ticks_us()
    t=pi(n)
    t2=time.ticks_us()
    print('elapsed: ', time.ticks_diff(t1,t2)/1000000, 's')
    return t





计算100位大约需要6ms,计算1000位用了0.21s,虽然和PC上专业程序比有点慢,但是在威控制器上有这个速度,还是可以体现出STM32F7的性能不错。



计算更多位数,10000位使用了21s,30000位使用了188s。



在计算到50000位时,因为内存不足提示错误:
>>> pi_t(500000)
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "<stdin>", line 19, in pi_t
  File "<stdin>", line 8, in pi
MemoryError: memory allocation failed, allocating 54428 bytes


除了进行计算,MicroPython控制硬件也非常方便,如控制LED,可以用pyb.LED(1).toggle(),代表翻转LED1,on()和off()可以开关LED。在NUCLEO_F767ZI上,有3个用户LED。

也可以通过定时器去控制LED,如下面用定时器1每秒翻转依次LED2:
>>> tm = pyb.Timer(1)                     
>>> tm.init(freq = 1)                     
>>> tm.callback(lambda t: pyb.LED(2).toggle())



使用I2C、ADC、RTC也非常简单,如图:



MicroPython的功能很多,这里只简单介绍了一点,更多内容大家可以参考官方文档和其他帖子。MicroPython的功能很强大,适合DIY、快速原型设计,是Arduino进阶的最好选择。

沙发
wolfgang_z| | 2016-8-1 12:25 | 只看该作者
GOOD

使用特权

评论回复
板凳
mmuuss586| | 2016-8-1 14:32 | 只看该作者
谢谢分享;

使用特权

评论回复
地板
秋风式街球| | 2016-8-3 16:06 | 只看该作者
顶大神!!!!

使用特权

评论回复
5
strong161| | 2016-8-4 14:27 | 只看该作者
来帮顶一下,D大无处不在!谢谢你的固件,昨晚我已经把我的也刷成micropython了

使用特权

评论回复
6
shaoziyang|  楼主 | 2016-8-4 21:04 | 只看该作者
strong161 发表于 2016-8-4 14:27
来帮顶一下,D大无处不在!谢谢你的固件,昨晚我已经把我的也刷成micropython了 ...

使用特权

评论回复
7
静海惊天| | 2016-8-22 14:54 | 只看该作者
MARK!

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

个人签名:https://www.micropython.org.cn/

30

主题

313

帖子

6

粉丝