Proyecto Final – Medición de Inclinación 0.0.1
Este proyecto utiliza la placa NUCLEO-STM32F446RE y permite detectar y visualizar en tiempo real la inclinación mediante el sensor MPU-6050.
|
Máquina de estados principal del sistema. Más...
#include "sys_sm.h"
#include "FreeRTOS.h"
#include "cmsis_os.h"
#include "dev_LCD.h"
#include "mpu6050.h"
#include "ds3231.h"
#include "mpu_math.h"
#include "dev_gpio_cfg.h"
#include "dev_uart.h"
#include <math.h>
#include <stdio.h>
#include <string.h>
#include <stdbool.h>
Estructuras de datos | |
struct | SM_Handler |
Estructura de control que contiene todas las variables de la SM principal. Más... | |
struct | Boot_Status |
Estructura utilizada en el proceso de inicialización de dispositivos. Más... |
defines | |
#define | SAMPLE_PERIOD_MS 100 |
Configuración del ciclo de muestreo y actualización del sistema. | |
#define | PERIOD_100MS pdMS_TO_TICKS(100) |
#define | PERIOD_1S pdMS_TO_TICKS(1000) |
#define | UART_REFRESH_DIV 5 |
#define | ALPHA 0.2f /* Filtro utilizado para el calculo del angulo*/ |
#define | STR_LENGTH DEV_LCD_COLS + 1 /* 16 Caracteres del LCD + \0 */ |
#define | BOOT_MAX_TRIES 3 /* Numero de intentos de inicialización por periférico */ |
#define | RTC_YEAR 25 |
#define | RTC_MONTH 10 |
#define | RTC_DATE 15 |
#define | RTC_DAY 3 |
#define | RTC_HOUR 14 |
#define | RTC_MIN 30 |
#define | RTC_SEC 0 |
Enumeraciones | |
enum | Device_Init_Stage { DEV_INIT_LCD = 0 , DEV_INIT_RTC , DEV_INIT_MPU , DEV_INIT_COMPLETE , DEV_INIT_ERROR } |
Estado de inicialización de periféricos durante el arranque del sistema. |
Funciones | |
HAL_StatusTypeDef | SM_InitOS (void) |
Crea e inicializa la tarea principal de la máquina de estados, utilizando el FreeRTOS proporcionado por el CubeMX. | |
void | SM_Iter (void *argument) |
Máquina de estados principal del sistema. |
Máquina de estados principal del sistema.
Esta SM se encarga de coordinar todo el flujo del dispositivo: arranca los periféricos (LCD, RTC, MPU6050), realiza las lecturas periódicas y muestra la información tanto en pantalla como por UART. Además, controla el parpadeo del LED según el ángulo de inclinación detectado.
Ciclo principal (≈100 ms):
Flujo de estados: ST_INIT ↓ ST_READ_SENSORS → ST_UPDATE_LED → ST_UPDATE_UART → (vuelve a leer)
#define SAMPLE_PERIOD_MS 100 |
Configuración del ciclo de muestreo y actualización del sistema.
HAL_StatusTypeDef SM_InitOS | ( | void | ) |
Crea e inicializa la tarea principal de la máquina de estados, utilizando el FreeRTOS proporcionado por el CubeMX.
HAL_OK | si la tarea fue creada correctamente. |
void SM_Iter | ( | void * | argument | ) |
Máquina de estados principal del sistema.
Tarea que ejecuta la máquina de estados.
Estados: