🛠 Control de GPIO e interfaces simples
Objetivos
Este tutorial tiene como objetivo dominar la configuración de los pines de Entrada/Salida de Uso General (GPIO) en el microcontrolador HPMicro HPM5100. Aprenderás a encender un LED y detectar el estado de un botón pulsador, habilidades fundamentales para cualquier interacción física con el sistema.
Material Necesario
- Placa de Desarrollo HPM5100 (ej: HPM5151)
- Cable USB-C para alimentación y depuración
- Un botón pulsador y una resistencia de pull-up/down si no están integradas
- PC con HPM SDK v1.13.0 instalado
Pasos
Abre una línea de comandos y navega a la carpeta de ejemplo GPIO del SDK. Asegúrate de que las variables de entorno estén configuradas correctamente para el HPM5100. ``bash cd hpm_sdk/examples/drivers/gpio ``
- Preparación del Entorno
En el archivo de configuración (a menudo board.h o pin_name.h), identifica los pines físicos. Para el HPM5100, consulta la hoja de datos para confirmar los números de pines disponibles en tu placa. Asocia un pin GPIO con un LED y otro con el botón.
- Configuración de Hardware
Abre el archivo principal main.c. Incluye los encabezados necesarios e inicializa el sistema de reloj. El núcleo RISC-V de 400 MHz requiere una inicialización precisa de los periféricos. ```c #include "board.h" #include "hpm_gpio_drv.h"
- Inicialización de Software
void gpio_init(void) { clock_add_to_group(clock_gpio, 0); gpio_set_pin_output_with_initial_state(BOARD_APP_LED_GPIO_CTRL, BOARD_APP_LED_GPIO_INDEX, BOARD_APP_LED_GPIO_PIN, 0); } ```
Implementa la lógica de cambio de estado. Lee el estado del botón para cambiar el estado del LED. Ten en cuenta que el HPM5100 admite interrupciones GPIO, pero para este primer paso, el polling es suficiente. ``c while (1) { uint8_t button_state = gpio_read_pin(BOARD_APP_BUTTON_GPIO_CTRL, BOARD_APP_BUTTON_GPIO_INDEX, BOARD_APP_BUTTON_GPIO_PIN); if (button_state == 0) { gpio_write_pin(BOARD_APP_LED_GPIO_CTRL, BOARD_APP_LED_GPIO_INDEX, BOARD_APP_LED_GPIO_PIN, 1); } else { gpio_write_pin(BOARD_APP_LED_GPIO_CTRL, BOARD_APP_LED_GPIO_INDEX, BOARD_APP_LED_GPIO_PIN, 0); } delay_ms(50); } ``
- Bucle Principal
Compila el proyecto especificando el objetivo HPM5100, luego graba el binario en la placa a través de la interfaz USB o JTAG. ``bash cmake -B build -DBOARD=hpm5100evk cmake --build build ``
- Compilación y Flash
Verificación
Abre el monitor serie a 115200 baudios para verificar los mensajes de inicio. Presiona el botón físico: el LED debe encenderse o apagarse inmediatamente. Si no sucede nada, verifica las conexiones físicas y los números de pines en el código.
Para Ir Más Allá
Explora las interrupciones GPIO para evitar el polling, o usa los temporizadores sincronizados del HPM5100 para un parpadeo preciso sin bloquear el procesador.