MicroPython开发之--用C添加接口(框架介绍)

 

       MicroPython留给用户的是python的接口,语法规则也是遵循python的。有时候我们想自己添加自己的python接口。有两种方法:第一种在官方的python接口之上直接使用python的语法写自己的python脚本来实现相应的功能,这种方式比较简便,无需自己编译MicroPython的代码固件,但是缺点就是可扩展性有限,有些偏底层的功能单纯用python接口无法完成;那么就还有第二种自己基于MicroPython的代码用C语言写底层的实现,然后留出来python的接口。我会写几篇文章来深入聊一下第二种方法,用c语言扩展MicroPython的接口。 

       首先从代码上看,添加自己的接口只用关注micropython项目下的ports文件夹,github地址在这里:https://github.com/micropython/micropython/tree/master/ports   这个文件夹下面可以看到有stm32、esp32 、esp8266、nrf等平台。你使用的是哪种平台,只用去关注对应的文件夹里面的内容就可以了。当然如果自己想把MicroPython移植到自己的平台可以在ports下新建自己的平台文件夹,然后移植对应的代码,但是这里不做探讨, 因为我也还没有研究到那么深入去。 

       我自己是基于esp32 来添加接口的。所以就只关注ports/esp32文件夹下的代码就可以了。可以看到里面很多文件,我们自己要添加c语言接口要修改哪些文件?c语言的函数如何和python语言对接?这在后面的文章我会慢慢写。这篇文章先聊聊整个框架,我们把需要实现的类型搞明白,添加一个接口就只是照葫芦画瓢而已。

       我自己总结了一张图,可以清晰的看出来我们实现的接口的分类:

       从图中可以看出来我们实现的接口分为三大类:module、type、function。这几类的关系也很明显可以看得出来。module在python层是一个比较大的类,比如esp32 里面的machine,在module下面会有function和type两种类型,machine.Pin  和machine.UART  都属于type类型。在type类的下面就是具体的函数了,比如Pin.value() 用来设定io的高低电平。

       在运行的有MicroPython的esp32串口REPL交互中,可以输入type(machine)    type(machine.Pin)    type(machine.Pin.value) 分别查看下他们的类型,如下图所示:

       有了这个分类,之后我们实现的c语言接口就只用把这三种类型先进行划分,再用c语言套用对应的实现代码就可以了。后面文章我会讲用c代码如何定义module、type和function以及python代码中的函数参数如何和c语言函数的参数对应起来。

(喜欢MicroPython的开发就点击关注我,后续会慢慢分享)

  • 19
    点赞
  • 36
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 4
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Mr.Lanson

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值