Я новичок в микро python, и я пытался обернуть мигание. c, чтобы использовать его в качестве модуля с микро python для управления светодиодом на ESP32. Я выполнил следующие шаги: https://docs.micropython.org/en/latest/develop/cmodules.html, и, похоже, это работает, но всякий раз, когда я пытаюсь это сделать, возникает следующая ошибка.
build-standard/py/objmodule.o:(.data.rel.ro.mp_builtin_module_table+0x208): undefined reference to `blink_user_cmodule'
мой код выглядит следующим образом:
#include <stdio.h>
#include "/home/shawnee/esp/esp-idf/components/freertos/include/freertos/FreeRTOS.h"
#include "/home/shawnee/esp/esp-idf/components/freertos/include/freertos/task.h"
#include "/home/shawnee/esp/esp-idf/components/driver/include/driver/gpio.h"
//#include "~/esp/esp_idf/components/sdkconfig.h"
// included python libraries
#include "/home/shawnee/micropython/micropython/py/obj.h"
#include "/home/shawnee/micropython/micropython/py/runtime.h"
#include "/home/shawnee/micropython/micropython/py/builtin.h"
// built in ESP32 LED
//#define BLINK_GPIO CONFIG_BLINK_GPIO 2
STATIC mp_obj_t blink_led(mp_obj_t led_obj) {
gpio_pad_select_gpio(led_obj);
/* Set the GPIO as a push/pull output */
gpio_set_direction(led_obj, GPIO_MODE_OUTPUT);
while(1) {
/* Blink off (output low) */
printf("Turning off the LED\n");
gpio_set_level(led_obj, 0);
vTaskDelay(1000 / portTICK_PERIOD_MS);
/* Blink on (output high) */
printf("Turning on the LED\n");
gpio_set_level(led_obj, 1);
vTaskDelay(1000 / portTICK_PERIOD_MS);
}
}
STATIC MP_DEFINE_CONST_FUN_OBJ_2(blink_led_obj, blink_led);
STATIC const mp_rom_map_elem_t blink_module_globals_table[] = {
{ MP_ROM_QSTR(MP_QSTR___name__), MP_ROM_QSTR(MP_QSTR_blink) },
{ MP_ROM_QSTR(MP_QSTR_blink_led), MP_ROM_PTR(&blink_led_obj) },
};
STATIC MP_DEFINE_CONST_DICT(blink_module_globals, blink_module_globals_table);
// Define module object.
const mp_obj_module_t blink_user_cmodule = {
.base = { &mp_type_module },
.globals = (mp_obj_dict_t*)&blink_module_globals,
};
// Register the module to make it available in Python
MP_REGISTER_MODULE(MP_QSTR_blink, blink_user_cmodule, MODULE_BLINK_ENABLED);
Я понятия не имею, почему он не "заработает". Пожалуйста помоги.