Esta guía muestra cómo dar vida a una pantalla Riverdi STM32H7 utilizando LVGL: desde clonar el repositorio hasta ejecutar tu primera interfaz personalizada con una imagen y un botón.
Aprenderás cómo:
- conecta el hardware,
- abre y construye el proyecto en STM32CubeIDE,
- ejecuta la demo LVGL,
- y crear una sencilla interfaz de usuario personalizada con el logotipo de Riverdi y un botón interactivo.
Al final, tendrás una base de trabajo para tu propio proyecto de interfaz gráfica de usuario basada en LVGL en las pantallas embebidas STM32 de Riverdi.
Hardware
| Pantalla Riverdi | RVT101HVLNWC00-B | 10,1″ IPS, pantalla integrada basada en STM32H7 |
| Programador | ST-Link V3 | Conectado al Molex SWD de la parte posterior de la pantalla |
| Alimentación | 12 V CC | Conectada a la entrada de alimentación Molex |
| Cables | Micro-USB ×2 | Uno para ST-Link, otro para alimentación (si se alimenta por USB) |
| PC | Windows/Linux/macOS | Con STM32CubeIDE instalado |
Conexiones
La pantalla de la STM32H7 utiliza dos conectores Molex:
- SWD (programación) – conecta aquí tu ST-Link.
- Alimentación (12 V) – para alimentación externa.
⚠️ No alimentes la pantalla y conectes el ST-Link simultáneamente por primera vez sin comprobar la polaridad correcta.


Software
| Herramienta | Finalidad | Descargar |
| STM32CubeIDE | Desarrollo, construcción y flasheo | STMicroelectronics |
| Creador de proyectos LVGL | Plantillas de proyectos para pantallas Riverdi | LVGL.io |
| Git (opcional) | Clonar repositorios | Git SCM |
Clonar el proyecto
Utilizando el Creador de Proyectos LVGL, descarga el proyecto para el tamaño de pantalla adecuado que estés utilizando. Todo lo que tienes que hacer es escribir Riverdi en la barra de búsqueda de la izquierda, pulsar el proyecto adecuado y pulsar Descargar como puedes ver en la imagen de abajo.


Opcional: clona la biblioteca LVGL más reciente
Si no estás seguro de si la librería LVGL que tienes en tu proyecto es la más reciente o simplemente quieres actualizarla, puedes simplemente borrar el contenido del directorio y descargar la lib manualmente. Para ello simplemente escribe esto en tu CLI:
cd riverdi-lvgl-101/Middlewares/Third_Party/
git clone https://github.com/lvgl/lvgl.git lvgl
Importar el proyecto a STM32CubeIDE
- Abre STM32CubeIDE.
- Ve a Archivo → Abrir proyectos desde el sistema de archivos….
- Haz clic en Directorio…, selecciona el subdirectorio STM32CubeIDE de tu carpeta clonada riverdi-lvgl-101.
- Haz clic en Finalizar.
El proyecto aparecerá ahora en el Explorador de Proyectos.


Construir y ejecutar LVGL Ejemplo
Abre main.c que se encuentra en CM7/Application/User/Core. Después de todas las inicializaciones, debería haber una función lv_demo_widgets() que se llama antes de PWM y kernel.
Puedes construir el proyecto pulsando Ctrl+B o el icono de un martillo en la parte superior izquierda de la pantalla. El proceso de construcción debería llevar algún tiempo, hasta unos minutos. Si ves alguna advertencia, no debería pasar nada, puede deberse a nuevas versiones de la biblioteca LVGL o de CubeIDE.
Si quieres consultar más ejemplos de LVGL y analizar su código, todo lo que tienes que hacer es abrir Middlewares/LVGL/lvgl/examples y llamar a uno de los ejemplos de tu elección en el lugar donde se llama a lv_demo_widgets().
Crear nuestro propio ejemplo
Vamos a crear nuestro propio ejemplo que contiene una imagen y un botón que cambia el color de la pantalla a uno de nuestros colores Riverdi.
Paso 1 – Preparar el logotipo de Riverdi
- Descarga el logotipo de Riverdi del sitio web de Riverdi.
- Abre el Convertidor de Imágenes LVGL.
- Elige el formato de color: RGB565
- Haz clic en «Convertir» y descarga el archivo .c generado.
- Colócalo junto a tu archivo main.c.
- Añade esta línea al principio de main.c:
- extern const lv_image_dsc_t riverdi_logo;
Nota: Si tu imagen tiene un fondo negro – se debe al formato .png – ningún fondo es traducido por el Conversor de Imágenes a 0x00 – color negro. Si quieres hacerlo blanco, simplemente cambia todos los 0x00 a 0xff en tu IDE o editor de texto.
Paso 2 – Añadir un nuevo archivo fuente
En STM32CubeIDE, crea un nuevo archivo:
Aplicación/Usuario/Core/ui_riverdi_logo.c
#include "lvgl.h"
extern const lv_image_dsc_t riverdi_logo;
static lv_color_t colors[3];
static uint8_t color_index = 0;
estático lv_obj_t * scr;
static void color_btn_event_cb(lv_event_t * e)
{
color_index = (color_index + 1) % 3;
lv_obj_set_style_bg_color(scr, colores[color_index], LV_PART_MAIN);
}
void ui_riverdi_logo_crear(void)
{
colors[0] = lv_color_make(0, 0, 255); // Azul
colors[1] = lv_color_make(0, 255, 0); // Verde
colors[2] = lv_color_make(255, 0, 0); // Rojo
scr = lv_obj_create(NULL);
lv_obj_set_style_bg_color(scr, colores[color_index], LV_PART_MAIN);
lv_screen_load(scr);
lv_obj_t * img = lv_image_create(scr);
lv_image_set_src(img, &riverdi_logo);
lv_obj_align(img, LV_ALIGN_CENTER, 0, -40);
lv_obj_t * btn = lv_button_create(scr);
lv_obj_align(btn, LV_ALIGN_CENTER, 0, 100);
lv_obj_add_event_cb(btn, color_btn_event_cb, LV_EVENT_CLICKED, NULL);
lv_obj_t * label = lv_label_create(btn);
lv_label_set_text(etiqueta, "Cambiar color");
lv_obj_center(etiqueta);
}
Paso 3 – Llama a la función
Abre de nuevo main.c y sustituye lv_demo_widgets(); por ui_riverdi_logo_create();
Luego construye y flashea el proyecto.
Nota: Si se produce un error de compilación, reconstruye – CubeIDE a veces indexa mal los archivos nuevos.
Análisis de nuestro código
void color_btn_event_cb() – esta función es una función de evento que se llama cuando se pulsa el botón. En su cuerpo cambiamos el color de fondo (bg) a uno de los colores de la matriz colors[].
void ui_riverdi_logo_create() – esta función es toda nuestra ui. Desde arriba:
- Creamos la pantalla con uno de los colores de fondo.
- Ponemos la imagen en la pantalla y la alineamos al centro. Los siguientes números son las coordenadas X e Y desde el lugar de alineación. En este ejemplo -40 significa que la colocamos 40px por encima del centro de la pantalla.
- A continuación creamos el botón – al no darle ningún estilo, mantiene su aspecto y comportamiento por defecto. Lo colocamos 100px por debajo del centro para que no se solape con la imagen.
- Por último, creamos la etiqueta del botón: «Cambiar color». Para ponerla en el botón, sólo tenemos que pasar el botón como parámetro en lv_label_create.
Próximos pasos
Ya tienes un entorno LVGL operativo en la plataforma STM32H7 de Riverdi.
Desde aquí, puedes
- Añade más widgets (etiquetas, deslizadores, gráficos)
- Integrar gestos táctiles
- Explora animaciones y temas
| Recursos | Enlace |
| Documentación LVGL | https://docs.lvgl.io |
| Riverdi GitHub | https://github.com/riverdi |
| Creador de proyectos LVGL | https://lvgl.io/tools/project-creator |
Resumen
Acabas de hacerlo:
- Clona y abre el proyecto LVGL para la pantalla Riverdi STM32H7,
- Ejecuta la aplicación de demostración de LVGL,
- Crea tu propia pantalla personalizada con una imagen y un botón.
Este flujo de trabajo es la base perfecta para desarrollar interfaces gráficas de usuario profesionales en las pantallas integradas de Riverdi utilizando LVGL.
DESCUBRE NUESTRA
Libro Blanco
Consigue una interacción perfecta entre el usuario y la pantalla con el CI de sensor táctil adecuado. ¿Te has enfrentado alguna vez a problemas con eventos táctiles fantasma o de certificación? ¡Impulsa tu I+D como un profesional con nuestro Libro Blanco!



