micropython用c添加接口——添加module

定义一个module相对来说比较简单,下面分几个步骤详细说明一下:

第一步:在ports/esp32文件夹下新建一个文件modtest.c (如果你是在其他平台而非esp32 请在对应文件夹下新建文件)

下面打开该文件我们输入以下内容,来实现一个最简单的module

可以看到modtest.c主要有三个部分,这三个部分是添加一个module必须要有的,可以打开官方的其他module文件,都是遵循这样的一个模型

  1. mp_rom_map_elem_t modtest_globals_table[]
  2. MP_DEFINE_CONST_DICT(mp_module_modtest_globals, modtest_globals_table)
  3. mp_obj_module_t mp_module_modtest

这样一个简单的module已经定义好了。但是我们现在也仅仅是一个单独的c文件,还没有添加到编译文件里面,外部现在也没办法调用他

第二步:毫无意外,要把module.c添加到Makefile文件中去

打开Makefile找到如下脚本的地方,按照格式添加modtest.c就可以了:

 

第三步:我们要把我们定义的module注册到micropython中去,这个是在mpconfigport.h文件中修改

找到MICROPY_PORT_BUILTIN_MODULES 定义的地方按照格式添加我们定义的module

 

这里实际上需要我们添加的代码也就两行,第一行不用解释了吧,应用外部定义的结构体。第二个需要解释一下下,MP_QSTR_modtest这个名字要改成自定义的,MP_QSTR_这个一定要保留,后面的modtest就是在python中显示的module名字。

make编译一下,再使用make deploy烧录进esp32。执行一下代码,如下图所示可以看到我们添加的modtest 模块已经成功了,只是现在这个module内部没有添加任何type和function,只能看看而已。下一篇我会讲下如何在module中添加function

 

您可能还喜欢...

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注