Introduction
原本以为放开在machine的类清单中对Signal类型的定义就能通,虽然能够通过编译,但在实测中并不能操作引脚。
测试MM32F3277中的MicroPython的Signal功能
想想也是,还没搞清楚Signal同Pin的绑定关系,只是心存侥幸就启动测试。实在对不住卓老师还高兴了一晚上。
Signal不像别的组件有很显而易见的代码组织结构。所以还是要从内核开始看代码。
现在追一下代码,看看Signal的实现机制是怎样的。
Tracing
extmod\machine_signal.c
通过不成熟的实验,发现Pin对象还是能够传入到Signal对象的,现在没有绑定到硬件上而已。
on和off函数是通过mp_virtual_pin_write()函数实现的:
STATIC mp_obj_t signal_on(mp_obj_t self_in) {
mp_virtual_pin_write(self_in, 1);
return mp_const_none;
}
STATIC MP_DEFINE_CONST_FUN_OBJ_1(signal_on_obj, signal_on);
STATIC mp_obj_t signal_off(mp_obj_t self_in) {
mp_virtual_pin_write(self_in, 0);
return mp_const_none;
}
STATIC MP_DEFINE_CONST_FUN_OBJ_1(signal_off_obj, signal_off);
mp_virtual_pin_write() 函数的实现在 extmod/virpin.c 文件
void mp_virtual_pin_write(mp_obj_t pin, int v