En el desarrollo de sistemas embebidos utilizando el ecosistema de STM32, la gestión correcta de los recursos y la comunicación entre tareas es fundamental. Una variable es un identificador relacionado a una posición de memoria donde se pueden colocar datos, cuyo contenido puede cambiar o ser modificado a lo largo del programa. Para crear un identificador, debe especificarlo en la declaración de una variable, un tipo o una función.
Los identificadores o símbolos son los nombres que se proporcionan para variables, tipos, funciones y etiquetas en el programa. Para definir una variable, se coloca el tipo de dato seguido por los identificadores que desee utilizar. Es importante recordar que el primer carácter de un nombre de identificador debe ser un carácter de subrayado o una letra, y el compilador distingue entre mayúsculas y minúsculas.
Gestión de datos en entornos multitarea con FreeRTOS
Cuando trabajamos con FreeRTOS en STM32, el uso de variables globales para pasar datos entre tareas puede generar condiciones de carrera, donde el resultado final depende de qué tarea se ejecute primero. El problema con las variables globales es que las tareas se ejecutan de forma concurrente y no existe una protección integrada cuando múltiples tareas acceden a la misma variable al mismo tiempo.
La solución profesional para evitar la corrupción de datos es utilizar colas (queues). Las colas de FreeRTOS están diseñadas específicamente para pasar datos entre tareas de forma segura, funcionando bajo la regla FIFO (First In, First Out).
Configuración de colas en CubeMX
Para implementar este mecanismo correctamente, seguimos estos pasos dentro de la herramienta:
Lea también: IVA 21% Excel
- Vaya a Middleware → FreeRTOS y abra la pestaña Tasks and Queues.
- Dentro de la sección de colas, añada una nueva cola configurando el tamaño (por ejemplo, 10 mensajes).
- Para el tamaño del elemento, CubeMX solicitará un tipo de dato; inicialmente puede establecerlo como uint32_t y modificarlo manualmente en el código al definir su estructura de datos personalizada.
- Es vital ajustar el tamaño del heap en la configuración (Parameter Settings) para asegurar que el sistema tenga suficiente memoria para las colas y tareas.
Uso de estructuras como identificadores de datos
Dado que una cola en FreeRTOS tiene un tamaño de elemento fijo, la mejor práctica es definir una estructura que agrupe toda la información necesaria. De esta manera, el identificador de la estructura permite al receptor saber exactamente qué tarea envió el mensaje y procesar los datos de forma coherente.
| Característica | Uso en FreeRTOS |
|---|---|
| Variable Global | Riesgo de corrupción por condiciones de carrera. |
| Cola (Queue) | Comunicación segura, FIFO, ideal para múltiples tareas. |
| Estructura | Permite encapsular múltiples datos en un solo slot de cola. |
Consideraciones importantes sobre los identificadores y el compilador
Al programar en entornos STM32, tenga presente las siguientes reglas:
- No use palabras clave: Los identificadores no pueden utilizar palabras reservadas de C o Microsoft, ya que están destinadas a uso especial.
- Ámbito y vinculación: Cada identificador tiene un ámbito (región donde se conoce) y una vinculación que determina su visibilidad en otros módulos.
- Memoria: Si el sistema muestra errores de memoria, es probable que deba aumentar el tamaño del heap en la configuración de su compilador, ya que las estructuras complejas y las colas consumen recursos significativos.
La correcta declaración de sus identificadores y el uso de mecanismos de sincronización como las colas de FreeRTOS garantizan un sistema robusto, evitando comportamientos impredecibles en su microcontrolador.
Lea también: Guía IVA reducido
Lea también: ¿Cómo localizar tus XML del SAT?
