[STM32F7] 在NUCLEO_F767ZI上使用MicroPython

[复制链接]
1707|6
 楼主| shaoziyang 发表于 2016-8-1 11:51 | 显示全部楼层 |阅读模式
本帖最后由 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带有大整数计算功能,支持超大整数运算,例如我们可以直接用 ** 进行指数计算。

1.jpg

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

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

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

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


3.jpg


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

4.jpg

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

5.jpg

在计算到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())


2.jpg
使用I2C、ADC、RTC也非常简单,如图:
6.jpg


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

wolfgang_z 发表于 2016-8-1 12:25 | 显示全部楼层
mmuuss586 发表于 2016-8-1 14:32 | 显示全部楼层
谢谢分享;
秋风式街球 发表于 2016-8-3 16:06 | 显示全部楼层
顶大神!!!!
strong161 发表于 2016-8-4 14:27 | 显示全部楼层
来帮顶一下,D大无处不在!谢谢你的固件,昨晚我已经把我的也刷成micropython了
 楼主| shaoziyang 发表于 2016-8-4 21:04 | 显示全部楼层
strong161 发表于 2016-8-4 14:27
来帮顶一下,D大无处不在!谢谢你的固件,昨晚我已经把我的也刷成micropython了 ...

静海惊天 发表于 2016-8-22 14:54 | 显示全部楼层
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

30

主题

313

帖子

6

粉丝
快速回复 在线客服 返回列表 返回顶部