Просмотр исходного кода

1、【完善】: 修复 micropython I2C 模块因为 pin 驱动问题导致I2C操作失败的问题。

SummerGift 8 лет назад
Родитель
Сommit
5d761997c7
1 измененных файлов с 6 добавлено и 1 удалено
  1. 6 1
      port/machine_pin.c

+ 6 - 1
port/machine_pin.c

@@ -54,7 +54,12 @@
 const mp_obj_base_t machine_pin_obj_template = {&machine_pin_type};
 
 void mp_pin_od_write(void *machine_pin, int stat) {
-    rt_pin_write(((machine_pin_obj_t *)machine_pin)->pin, stat);
+    if (stat == PIN_LOW) {
+        rt_pin_mode(((machine_pin_obj_t *) machine_pin)->pin, PIN_MODE_OUTPUT);
+        rt_pin_write(((machine_pin_obj_t *) machine_pin)->pin, stat);
+    } else {
+        rt_pin_mode(((machine_pin_obj_t *)machine_pin)->pin, PIN_MODE_INPUT_PULLUP);
+    }
 }
 
 void mp_hal_pin_open_set(void *machine_pin, int mode) {