Hi3861的micropython移植之Pin 原创 精华
本文介绍Micropython中的Pin接口使用,也就是GPIO接口的使用。
1、打开Pin的编译
需要将MICROPY_PY_PIN配置成1,参加编译。在modmachine.c文件中的machine_module_globals_table数据中会包含
{ MP_ROM_QSTR(MP_QSTR_Pin), MP_ROM_PTR(&machine_pin_type) },
2、移植Pin的接口函数
需要包含openharmony中的gpio的头文件,其中包含了GPIO的操作函数
定义可以被引用的GPIO的名字
然后移植初始化定义函数mp_pin_make_new
定义完Pin之后,需要获取IO的状态或者设置IO的状态。
在micropython的函数定义中,MP_DEFINE_CONST_FUN_OBJ_VAR_BETWEEN关键词用于定义函数可以接受的参数的范围。根据定义,如果该函数中参数为空,则为获取参数,参数有数值,则为设置IO的高低。
3、中断模式
想要获取IO的高低电平,轮训模式是其中一种,但是必然离不开IO口的中断模式。micropython也是支持中断模式的。
machine_pin_irq用于设置中断回调函数以及中断触发的条件,当IO中触发中断之后,会调用注册的函数machine_pin_isr_handler。
然后调用mp_sched_schedule(self->pin_isr_cb, MP_OBJ_FROM_PTR(self));来实现回调函数的引用。后续会专门介绍mp_sched_schedule是如何工作的。
4、python编程驱动IO
1)实现LED灯闪烁
2)IO的电平获取
3)IO的中断
5、总结
IO口的使用是我们学习一款单片机的开始,通过python来驱动IO,使得我们学习的成本进一步降低。移植micropython到hi3861的过程,也是学习C和Python的一个过程。后续会持续的更新这方便的内容。
干货,必须支持!
真牛,盼望出一个从0开始的教程,并对比C与py 的转化