你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

查看: 3515|回复: 3

[micropython] MicroPython的初步研究

[复制链接]

12

主题

484

回帖

111

蝴蝶豆

金牌会员

最后登录
2020-6-12
发表于 2018-2-1 21:17:36 | 显示全部楼层 |阅读模式
本帖最后由 yu0405jie 于 2018-2-2 21:06 编辑

    收到申请的《MicroPython》已经有一段时间了,奈何这段时间事情比较多,一直没有大量的时间好好研究,最近刚好有点空,大概试验了一下,我采用的是STM32F746 Discovery开发板,PC是Windows 10 64bit操作系统。

    首先自然是下载对应的固件库:firmware_v1.9.1-4_STM32F7DISC_MPLR_v1.2,并使用STM32 ST-LINK Utility工具进行烧录,这个过程十分简单,并没有出现什么问题,烧录完成之后可以看到系统识别的盘符以及串口。
捕获.PNG
串口.PNG
这个过程还是十分顺利的,但是在使用终端连接时出现了一些问题,尝试了超级终端、PUTTY、KITTY都无法连接,也没有找到原因,最后使用MobaXterm_v8.6终于连上了,看到下面的界面还真有点小激动呢。

启动.PNG
第一个程序自然是拿软柿子捏了,试试具有“Hello World”之称的LED吧,编写如下代码,可以看到LED非常容易的被控制。
  1. from pyb import LED
  2. l = LED(1)
  3. l.on()
  4. l.off()
复制代码
但我个人并不喜欢在命令行里写python代码,除非只是验证某个类或函数的功能,要写一个实际应用的程序,自然是要写成脚本的,通过读取盘符里的readme文件可以知道,只有在main.py里写入代码,重新上电之后单片机就可以执行里面的指令了,那也是爽的不要不要的。
脚本.PNG

Micropython初次尝试就完成了,在收到书之前,一些想着怎么能够自己再底层添加一些驱动,不过好可惜书里对这部分内容介绍的并不多,自己也大概看了一下源码,也有一些心得,以LED.c为例(不分析PWM哦)。

虽然代码使用C语言编写的,但用的应该是面向对象的思想,毕竟python就是一个面向对象的语言嘛。

LED.c文件包含了两部分内容,一部分是实现了对LED的各种操作,包括点亮、熄灭、翻转等等,在这部分作者定义了一个结构体pyb_led_obj_t,第一个元素可以看做他的基类,是后面一个结构体变量的指针,第二个元素是LED的ID,第三个是关联的IO口。接着根据LED的数量,定义了pyb_led_obj_t的数组,对每个LED的操作都是在这个数组的基础上操作的,另外创建一个LED对象时返回的也是该数组中的一个(根据LED ID返回)。

另外一部分是实现python的接口,这个接口会调用第一部分的函数,实现对LED的操作,同时还进行了两个操作,将接口函数与自定义的对象相关连,在将对象与名称相关联,这个名称类似于MP_QSTR_xxx,猜测其中xxx是在python中调用的函数名称,这部分还需要自己编译源码验证。
函数.PNG

最后为了能够在python中使用LED类,这里定义了一个结构体mp_obj_type_t的变量pyb_led_type,pyb_led_type的地址就是上述结构体pyb_led_obj_t的第一个元素的值。猜测mp_obj_type_t中的name指定了python中LED的名字,形式如MP_QSTR_LED,这个也需要在验证。

不过在python中LED的名字以及相关函数的名字最终是什么生成的还没太明白,应该是编译过程中由工具自动处理生成的,这部分在书里也没有提到,整体讲的有点乱,许多东西还需要自己修改代码编译代码进行确认,后期有时间在进行更新了。

也想着在windows 10 下编译Micropython的,但仍然没有成功,还存在一些问题需要研究,等什么时候调通了在发帖共享。

<
回复

使用道具 举报

1182

主题

3785

回帖

1

蝴蝶豆

论坛元老

最后登录
2020-3-17
发表于 2018-2-1 22:34:45 | 显示全部楼层
回复 支持 反对

使用道具 举报

61

主题

1071

回帖

17

蝴蝶豆

论坛元老

最后登录
2020-12-9
发表于 2018-2-2 06:24:08 | 显示全部楼层
楼主帮忙有空试试pyb或 machine库的 ADC,DAC,
回复 支持 反对

使用道具 举报

0

主题

8

回帖

0

蝴蝶豆

初级会员

最后登录
2020-10-5
发表于 2020-8-18 11:47:43 | 显示全部楼层
實用!推一個
回复 支持 反对

使用道具 举报

关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
STM32N6 AI生态系统
STM32MCU,MPU高性能GUI
ST ACEPACK电源模块
意法半导体生物传感器
STM32Cube扩展软件包
关注我们
st-img 微信公众号
st-img 手机版