STM32 + HAL
Acerca del Curso
Este curso está diseñado para introducir a los participantes al desarrollo de aplicaciones embebidas utilizando microcontroladores STM32 y la librería HAL (Hardware Abstraction Layer). A lo largo de las sesiones, los alumnos aprenderán paso a paso a controlar periféricos reales como LEDs, botones, sensores analógicos y módulos de comunicación UART, sin necesidad de manipular directamente registros.
El enfoque es completamente práctico y guiado, utilizando el entorno STM32CubeIDE para la configuración de periféricos, generación de código y depuración. A través de ejemplos y proyectos reales, los estudiantes comprenderán el flujo de desarrollo profesional con HAL, reforzando su conocimiento sobre la arquitectura del microcontrolador y las mejores prácticas de programación embebida.
- Modalidad: 100% en línea, con sesiones en vivo junto al instructor.
- Interacción: Posibilidad de hacer preguntas y resolver dudas en tiempo real.
- Frecuencia: 2 sesiones por semana.
- Duración de cada sesión: 2 horas.
- Duración total del curso: 7 semanas.
- Acceso a plataforma: Con ejemplos y prácticas del curso disponibles durante todo el programa.
- Fecha de inicio: TBD
La formación concluye con un proyecto integrador que pone en práctica todos los conocimientos adquiridos, permitiendo a los estudiantes consolidar sus habilidades como desarrolladores de sistemas embebidos con STM32.
Objetivos del Curso
¿Qué es la librería HAL?
La HAL (Hardware Abstraction Layer) es una librería oficial de STMicroelectronics que proporciona una capa de abstracción del hardware para los microcontroladores STM32. Permite a los desarrolladores configurar y controlar periféricos sin necesidad de trabajar directamente con registros, facilitando así el desarrollo y mantenimiento del código.
Es utilizada ampliamente debido a su:
- Facilidad de uso y curva de aprendizaje rápida
- Compatibilidad con toda la familia STM32
- Integración con STM32CubeIDE y STM32CubeMX
- Código portátil y reutilizable en diferentes proyectos
- Soporte oficial y amplia documentación
Bloques del Curso
Requisitos
El curso incluye un kit de desarrollo completo, el cual recibirás al inscribirte. Este kit contiene todo lo necesario para realizar las prácticas: una tarjeta Nucleo F411RE con carcasa protectora, un shield con componentes como EEPROM, botones, LEDs, potenciómetros y un slot para acelerómetro MPU6050, además de una caja organizadora con compartimentos para cables y accesorios. Puedes ver más detalles y fotografías del kit en la sección de cursos.
Aparte del kit necesitarás
- Computadora con Windows.
- Internet
- Conocimientos básicos de microcontroladores.

Configuración de Herramientas
No te preocupes si nunca has trabajado con herramientas de desarrollo embebido. El instructor te guiará paso a paso en la configuración de todo lo necesario para comenzar a programar.
- Instalación del entorno de desarrollo (STM32CubeIDE).
- Configuración del proyecto.
- Acompañamiento personalizado para resolver problemas técnicos durante la instalación.

Arquitectura del microcontrolador
En este bloque exploraremos en detalle los componentes esenciales del microcontrolador STM32, incluyendo su núcleo Cortex-M, la organización de la memoria, los buses internos y los periféricos integrados. Analizaremos cómo se gestionan las interrupciones y su papel en el rendimiento del sistema. Además, revisaremos la estructura del archivo startup y el funcionamiento del vector de interrupciones, sentando las bases para comprender cómo interactúa el hardware con el código que desarrollaremos usando la librería HAL.

Instalación STM32CUBEIDE
En este bloque aprenderás a instalar y configurar STM32CubeIDE, la herramienta oficial de desarrollo para microcontroladores STM32. Cubriremos el flujo de trabajo completo: creación de un nuevo proyecto, selección del microcontrolador (MCU), configuración de periféricos mediante el archivo .ioc, generación automática de código y uso del entorno de depuración para probar y optimizar tus aplicaciones.

Librería HAL
En este bloque conocerás qué es la Hardware Abstraction Layer (HAL), cómo está estructurada y cuál es su relación con CMSIS. Aprenderás cómo esta librería simplifica la programación de periféricos en los microcontroladores STM32, evitando el acceso directo a registros y permitiendo un desarrollo más rápido y seguro. También veremos ejemplos prácticos de uso para que domines su aplicación desde el inicio.

Uso de GPIOs con HAL
Los GPIOs (General Purpose Input/Output) son la interfaz esencial que permite a un microcontrolador interactuar con el mundo exterior. A través de ellos es posible leer señales digitales de entrada y controlar salidas hacia dispositivos y periféricos. Con la librería HAL, la configuración y manejo de GPIOs en STM32 se vuelve más rápida, segura y sencilla, permitiendo implementar desde funciones básicas como leer botones y encender LEDs, hasta el uso avanzado de interrupciones externas para responder de inmediato a eventos.
Aprenderás a:
- Configurar pines GPIO como entrada o salida usando HAL
- Controlar salidas digitales de forma eficiente
- Leer entradas digitales con detección confiable de estado
- Integrar el manejo de GPIOs con otros módulos del sistema

Configuración de relojes (RCC)
El sistema de reloj en los microcontroladores STM32 es clave para el correcto funcionamiento y rendimiento de todos sus periféricos. A través del módulo RCC (Reset and Clock Control) es posible seleccionar y configurar distintas fuentes de reloj, como HSI, HSE y PLL, para adaptar la velocidad y estabilidad del sistema a cada aplicación. Con la librería HAL y el entorno de desarrollo, este proceso se simplifica, permitiendo un ajuste preciso y seguro.
Aprenderás a:
- Identificar las diferentes fuentes de reloj disponibles (HSI, HSE, PLL)
- Configurar el sistema de reloj usando STM32CubeIDE y HAL
- Ajustar la frecuencia del sistema para optimizar el rendimiento
- Configurar el reloj de periféricos específicos

Manejo de interrupciones con HAL
Las interrupciones son un mecanismo fundamental en los sistemas embebidos para responder de forma inmediata a eventos internos o externos sin desperdiciar recursos del procesador. Con la librería HAL, la configuración y gestión de interrupciones en STM32 se simplifica, permitiendo un manejo eficiente y seguro. En este bloque aprenderás a habilitar interrupciones en periféricos, definir funciones de callback y responder a eventos de hardware de manera controlada, implementando ejemplos prácticos.
Aprenderás a:
- Configurar interrupciones internas y externas en STM32 usando HAL
- Asignar prioridades y gestionar múltiples fuentes de interrupción
- Implementar rutinas de servicio (ISR) eficientes
- Utilizar callbacks para el manejo estructurado de eventos
- Integrar las interrupciones con el resto del sistema

Uso de temporizadores con HAL
Los temporizadores son periféricos clave en los microcontroladores STM32, utilizados para medir intervalos de tiempo, generar señales periódicas o controlar salidas PWM. Dominar su configuración con la librería HAL permite implementar funciones como retardos precisos, medición de eventos y generación de señales para control de motores, LEDs y otros dispositivos.
Aprenderás a:
- Configurar temporizadores en modos básicos usando HAL
- Generar retardos precisos por software
- Medir tiempos e intervalos de eventos
- Configurar y generar señales PWM
- Integrar los temporizadores con otros módulos del sistema

Uso del ADC con HAL
El conversor analógico-digital (ADC) en los microcontroladores STM32 permite transformar señales analógicas, como las provenientes de sensores, en valores digitales procesables por el sistema. Con la librería HAL, su configuración se simplifica, facilitando el uso en aplicaciones que requieren mediciones precisas y confiables. En este bloque aprenderás a trabajar con distintos modos de conversión y métodos de lectura para adaptar el ADC a tus necesidades.
Aprenderás a:
- Configurar el ADC en modo de conversión simple y continua
- Trabajar con múltiples canales de entrada
- Realizar lecturas usando polling
- Implementar lecturas por interrupción

Comunicación UART con HAL
La comunicación UART (Universal Asynchronous Receiver-Transmitter) es uno de los métodos más utilizados para el intercambio de datos entre un microcontrolador y otros dispositivos. Con la librería HAL, su configuración y manejo en STM32 resulta sencilla y flexible, permitiendo trabajar en distintos modos de transmisión y recepción. En este bloque aprenderás a implementar comunicación confiable y a utilizar herramientas de análisis para depurar y validar el flujo de datos.
Aprenderás a:
- Configurar la comunicación UART en STM32 usando HAL
- Transmitir y recibir datos en modo polling, por interrupción y con DMA
- Integrar UART con herramientas como Tera Term para pruebas
- Utilizar analizadores lógicos para monitorear y depurar la comunicación

Proyecto Final
Durante el curso, desarrollarás un proyecto integrador en el que aplicarás todo lo aprendido: lectura de sensores, uso de temporizadores, comunicación UART, manejo de interrupciones y procesamiento básico de señales, todo implementado mediante la librería HAL. Este proyecto permitirá consolidar tus conocimientos, reforzar las buenas prácticas de programación y obtener una visión clara del desarrollo embebido moderno con STM32.
¿Qué harás en el proyecto final?
- Integrar múltiples periféricos en una sola aplicación
- Aplicar técnicas de programación estructurada y modular
- Implementar comunicación y sincronización entre módulos
- Optimizar el uso de recursos del microcontrolador
