Имею многолетний опыт работы с микроконтроллерами и это первый случай, когда я не смог подключить обычную кнопку.
Всего нужно подключить 4 кнопки, я их подключил GPIO 2, 3, 4, 14. Во избежание повреждения GPIO, я подключал кнопки на GND через 200 ом. Код инициализации следующий:
Кнопки почему-то работать не захотели. Начал тыкать мультиметром для поиска проблемы, оказалось, что на некоторых (или на всех, не помню) портах, к которым подключены кнопки при не нажатой кнопке 3,3В (подтяжка, как понимаю), при нажатии - 3В (при этом на кнопке 0В). Получается, данные порты не были настроены как вход?
Собственно, самое печальное то, что перестал работать ресет. Тоесть, при замыкании reset на gnd модуль не перезагружается. Если отключить питание на несколько мин, а потом включить, то ресет 1-2 раза может сработать, а потом опять перестает.
Где я накосячил?
Всего нужно подключить 4 кнопки, я их подключил GPIO 2, 3, 4, 14. Во избежание повреждения GPIO, я подключал кнопки на GND через 200 ом. Код инициализации следующий:
Код:
#define BTN_CALL_RECALL 3
#define BTN_START 4
#define BTN_STOP 2
#define BTN_DELETE 14
PIN_FUNC_SELECT(PERIPHS_IO_MUX_U0RXD_U, FUNC_GPIO3); // переназначаем RX0 как GPIO
os_printf("BTN_STOP = %d\n", set_gpio_mode(BTN_STOP, GPIO_PULLUP, GPIO_INPUT));
os_printf("BTN_DELETE = %d\n", set_gpio_mode(BTN_DELETE, GPIO_PULLUP, GPIO_INPUT));
os_printf("BTN_CALL_RECALL = %d\n", set_gpio_mode(BTN_CALL_RECALL, GPIO_PULLUP, GPIO_INPUT));
os_printf("BTN_START = %d\n", set_gpio_mode(BTN_START, GPIO_PULLUP, GPIO_INPUT));
// зачем это я не совсем понимаю, но в работающем примере, который мне сбросили, это было
GPIO_OUTPUT_SET(BTN_STOP, 1);
GPIO_OUTPUT_SET(BTN_DELETE, 1);
GPIO_OUTPUT_SET(BTN_CALL_RECALL, 1);
GPIO_OUTPUT_SET(BTN_START, 1);
Собственно, самое печальное то, что перестал работать ресет. Тоесть, при замыкании reset на gnd модуль не перезагружается. Если отключить питание на несколько мин, а потом включить, то ресет 1-2 раза может сработать, а потом опять перестает.
Где я накосячил?