Programa de torreta
Dependencies: mbed
Diff: main.cpp
- Revision:
- 0:583269628e14
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/main.cpp Fri Sep 20 20:46:16 2019 +0000 @@ -0,0 +1,253 @@ +/* ############################################################################# +** Archivo : main.c +** Proyecto : STM32-F103C8_Torreta +** Procesador : STM32F103C8T6 +** Plataforma : Blue Pill +** Herramienta : Mbed Compiler +** Version : Driver 01.01 +** Compilador : GNU C Compiler +** Fecha/Hora : 14-07-2015, 11:48, # CodeGen: 0 +** Descripción : +** Este proyecto hace... +** This module contains user's application code. +** Componentes : GPIO, Timer, etc . +** Configuraciones : Includes, Stacks y Drivers externos +** Autores : +** ATEAM Development Group: +** - Antulio Morgado Valle +** +** Versión : Beta +** Revisión : A +** Release : 0 +** Bugs & Fixes : +** Date : 20/10/2019 +** Added support for Led_RGB +** 22/09/2018 +** Added LCD Menu, Beta version (with bugs) +** +** ###########################################################################*/ +/* +:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: +: Includes +:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: +*/ +#include "stm32f103c8t6.h" +#include "mbed.h" +/* +:............................................................................... +: Definiciones +:............................................................................... +*/ +#define Ticker_Rate 1000 // Periodo de interrupción (us) +/* ++------------------------------------------------------------------------------- +| Configuración de Puertos ++------------------------------------------------------------------------------- +*/ +Ticker Barrido; // Interrupción del Timer +//BusOut Torreta(D0,D1,D2,D3,D4,D5,D6,D7); // Utilizando las definiciones Arduino +BusOut Torreta(PB_4,PB_3,PA_15,PA_12,PA_11,PA_10,PA_9,PA_8); // +DigitalOut Led_Monitor (LED1); // Led monitor de la Tarjeta STM32F103C8 +//PwmOut Buzzer(PB_1); // PB1_TIM3_CH4N +/* ++------------------------------------------------------------------------------- +| Variables Globales de Usuario ++------------------------------------------------------------------------------- +*/ +uint8_t Secuencias[]={ + 0x03, 0x03, 0xC0, 0xC0, 0x03, 0x03, 0xC0, 0xC0, // 8 + 0x03, 0x03, 0xC0, 0xC0, 0x03, 0x03, 0xC0, 0xC0, // 16 + 0x03, 0xC0, 0x03, 0xC0, 0x03, 0xC0, 0x03, 0xC0, // 24 + 0x03, 0xC0, 0x03, 0xC0, 0x03, 0xC0, 0x03, 0xC0, // 32 + 0x03, 0x00, 0x03, 0x00, 0xC0, 0x00, 0xC0, 0xC0, // 40 + 0x03, 0x00, 0x03, 0x00, 0xC0, 0x00, 0xC0, 0x00, // 48 + 0x03, 0x00, 0x03, 0x00, 0xC0, 0x00, 0xC0, 0x00, // 56 + 0x03, 0x00, 0x03, 0x00, 0xC0, 0x00, 0xC0, 0x00, // 64 + 0x07, 0x08, 0x13, 0x20, 0xC0, 0x20, 0xC8, 0x04, // 72 + 0x07, 0x08, 0x13, 0x20, 0xC0, 0x20, 0xC8, 0x04, // 80 + 0x07, 0x0B, 0xD0, 0xE0, 0x07, 0x0B, 0xD0, 0xE0, // 88 + 0x07, 0x0B, 0xD0, 0xE0, 0x07, 0x0B, 0xD0, 0xE0, // 96 + 0x23, 0x13, 0xC8, 0xC4, 0x23, 0x13, 0xC8, 0xC4, // 104 + 0x23, 0x13, 0xC8, 0xC4, 0x23, 0x13, 0xC8, 0xC4, // 112 + 0x23, 0x10, 0xC8, 0x04, 0x23, 0x10, 0xC8, 0x04, // 120 + 0x23, 0x10, 0xC8, 0x04, 0x23, 0x10, 0xC8, 0x04, // 128 + 0x07, 0x43, 0xD0, 0xC4, 0x07, 0x43, 0xD0, 0xC4, // 136 + 0x07, 0x43, 0xD0, 0xC4, 0x07, 0x43, 0xD0, 0xC4, // 144 + + 0x03, 0x04, 0x08, 0x10, 0x20, 0xC0, 0x20, 0x10, // 152 + 0x08, 0x04, 0x03, 0x04, 0x08, 0x10, 0x20, 0xC0, // 160 + 0x20, 0x10, 0x08, 0x04, 0x03, 0x04, 0x08, 0x10, // 168 + 0x20, 0xC0, 0x20, 0x10, 0x08, 0x04, 0x03, 0x04, // 176 + 0x08, 0x10, 0x20, 0xC0, 0x20, 0x10, 0x08, 0x04, // 184 + + 0x03, 0x18, 0xC0, 0x3C, 0x03, 0x24, 0xC0, 0x3C, // 192 + + 0x04, 0x08, 0x10, 0x20, 0x04, 0x08, 0x10, 0x20, // 200 + 0x04, 0x08, 0x10, 0x20, 0x04, 0x08, 0x10, 0x20, // 208 + 0x20, 0x10, 0x08, 0x04, 0x20, 0x10, 0x08, 0x04, // 216 + 0x20, 0x10, 0x08, 0x04, 0x20, 0x10, 0x08, 0x04, // 224 + 0x03, 0x04, 0x03, 0x08, 0x03, 0x10, 0x03, 0x20, // 232 + 0x03, 0x04, 0x03, 0x08, 0x03, 0x10, 0x03, 0x20, // 240 + 0xC0, 0x20, 0xC0, 0x10, 0xC0, 0x08, 0xC0, 0x04, // 248 + 0xC0, 0x20, 0xC0, 0x10, 0xC0, 0x08, 0xC0, 0x04, // 256 + 0x04, 0x08, 0x10, 0x20, 0x20, 0x10, 0x08, 0x04, // 264 + 0x04, 0x08, 0x10, 0x20, 0x20, 0x10, 0x08, 0x04, // 272 + 0x88, 0x44, 0x11, 0x22, 0x88, 0x44, 0x22, 0x11, // 280 + 0x88, 0x44, 0x11, 0x22, 0x88, 0x44, 0x22, 0x11, // 288 + 0x11, 0x22, 0x44, 0x88, 0x11, 0x22, 0x44, 0x88, // 296 + 0x11, 0x22, 0x44, 0x88, 0x11, 0x22, 0x44, 0x88, // 304 + 0x18, 0x24, 0x18, 0x24, 0x18, 0x24, 0x18, 0x24, // 312 + 0x18, 0x24, 0x18, 0x24, 0x18, 0x24, 0x18, 0x24, // 320 + 0x18, 0x81, 0x3C, 0xC3, 0x24, 0x42, 0x0F, 0xF0, // 328 + 0x18, 0x81, 0x3C, 0xC3, 0x24, 0x42, 0x0F, 0xF0, // 336 + 0x18, 0xC3, 0x24, 0xC3, 0x18, 0xC3, 0x24, 0xC3, // 344 + 0x18, 0xC3, 0x24, 0xC3, 0x18, 0xC3, 0x24, 0xC3, // 352 + 0x20, 0x30, 0x10, 0x18, 0x08, 0x0C, 0x04, 0x03, // 360 + 0x04, 0x0C, 0x08, 0x18, 0x10, 0x30, 0x20, 0xC0, // 368 + 0x20, 0x30, 0x10, 0x18, 0x08, 0x0C, 0x04, 0x03, // 376 + 0x04, 0x0C, 0x08, 0x18, 0x10, 0x30, 0x20, 0xC0, // 384 + 0x81, 0x81, 0x7E, 0x7E, 0x81, 0x81, 0x7E, 0x7E, // 392 + 0x81, 0x7E, 0x81, 0x7E, 0x81, 0x7E, 0x7E, 0x81, // 400 + 0x81, 0x00, 0x81, 0x00, 0x7E, 0x00, 0x7E, 0x00, // 408 + 0x81, 0x00, 0x81, 0x00, 0x7E, 0x00, 0x7E, 0x00, // 416 + 0x80, 0x00, 0x01, 0x00, 0x7E, 0x00, 0x7E, 0x00, // 424 + 0x80, 0x00, 0x01, 0x00, 0x7E, 0x00, 0x7E, 0x00, // 432 + + 0x33, 0xCC, 0x33, 0xCC, 0x33, 0xCC, 0x33, 0xCC, // 440 + 0x03, 0x3C, 0x03, 0x3C, 0xC0, 0x3C, 0xC0, 0x3C, // 448 + 0x03, 0x3C, 0x03, 0x3C, 0xC0, 0x3C, 0xC0, 0x3C, // 456 + 0x3C, 0x00, 0xC3, 0x00, 0x3C, 0x00, 0xC3, 0x00, // 464 + 0x3C, 0x00, 0xC3, 0x00, 0x3C, 0x00, 0xC3, 0x00, // 472 + 0x3C, 0x3C, 0x00, 0x00, 0x3C, 0x3C, 0x00, 0x00, // 480 + 0x3C, 0x3C, 0x00, 0x00, 0x3C, 0x3C, 0x00, 0x00, // 488 + 0x3C, 0x00, 0x3C, 0x00, 0x3C, 0x00, 0x3C, 0x00, // 496 + 0x3C, 0x00, 0x3C, 0x00, 0x3C, 0x00, 0x3C, 0x00, // 504 + 0xC3, 0x3C, 0xC3, 0x3C, 0xC3, 0x3C, 0xC3, 0x3C, // 512 + 0xC3, 0x3C, 0xC3, 0x3C, 0xC3, 0x3C, 0xC3, 0x3C, // 520 + 0xC0, 0x3C, 0x03, 0x3C, 0xC0, 0x3C, 0x03, 0x3C, // 528 + 0xC0, 0x3C, 0x03, 0x3C, 0xC0, 0x3C, 0x03, 0x3C, // 536 + 0xC0, 0x3C, 0x03, 0x3C, 0xC0, 0x3C, 0x03, 0x3C, // 544 + 0xC0, 0x3C, 0x03, 0x3C, 0xC0, 0x3C, 0x03, 0x3C, // 552 + 0x00, 0x28, 0x00, 0x14, 0x00, 0x28, 0x00, 0x14, // 560 + 0x00, 0x28, 0x00, 0x14, 0x00, 0x28, 0x00, 0x14, // 568 + 0xC0, 0xF0, 0x30, 0x0C, 0x0F, 0xC0, 0xF0, 0x30, // 576 + 0x0C, 0x0F, 0xC0, 0xF0, 0x30, 0x0C, 0x0F, 0x03, // 584 + 0x03, 0x0F, 0x0C, 0x30, 0xF0, 0xC0, 0x0F, 0x0C, // 592 + 0x30, 0xF0, 0xC0, 0x0F, 0x0C, 0x30, 0xF0, 0xC0, // 600 + 0x00, 0xC0, 0xF0, 0x30, 0x3C, 0x0C, 0x0F, 0x03, // 608 + 0x00, 0xC0, 0xF0, 0x30, 0x3C, 0x0C, 0x0F, 0x03, // 616 + 0x00, 0x03, 0x0F, 0x0C, 0x3C, 0x30, 0xF0, 0xC0, // 624 + 0x00, 0x03, 0x0F, 0x0C, 0x3C, 0x30, 0xF0, 0xC0, // 632 + 0x00, 0xC0, 0xF0, 0x30, 0x3C, 0x0C, 0x0F, 0x03, // 640 + 0x00, 0xC0, 0xF0, 0x30, 0x3C, 0x0C, 0x0F, 0x03, // 648 + 0x00, 0x0F, 0xFF, 0xF0, 0x00, 0x0F, 0xFF, 0xF0, // 656 + 0x00, 0x0F, 0xFF, 0xF0, 0x00, 0x0F, 0xFF, 0xF0, // 674 + 0x00, 0xF0, 0x00, 0x0F, 0x00, 0xF0, 0x00, 0x0F, // 682 + 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF }; + +uint16_t No_Secuencias=689; // Número de secuencias a desplegar +uint16_t i=0; // Indice para las secuencias +uint16_t delay=250; // Tiempo de retardo entre secuencias (en ms) +uint16_t contador=0; // Contador de mili segundos + +/* END Global Variables */ +/* +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ +| Definición de Funciones Prototipo y Rutinas de los Vectores de Interrupción +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ +*/ +void Barrido_OnInterrupt(void); + +/* +#=============================================================================== +| +| P R O G R A M A P R I N C I P A L +| +#=============================================================================== +*/ +int main() +{ // Inicialización de variables locales, puertos e interrupciones van aquí !!! +confSysClock(); // Inicialización del Sistema, +Barrido.attach_us(&Barrido_OnInterrupt, Ticker_Rate); // Periodo de la Interrupción por Timer = 1ms (Tcker_Rate=1000) + + while (true) // El Lazo del Programa principal está aquí !!! + { + //El Programa principal no hace nada !!! + } +} +/* END main */ + +/* +................................................................................ +: Rutinas de los Vectores de Interrupción +................................................................................ +*/ +void Barrido_OnInterrupt() +{ + /* Rutina de Atención a la Interrupción */ + /* Write your code here ... */ + + contador++; // Incremeta el contador de mili segundos + if (contador == delay) // Contador es igual al retardo programado? + { + Torreta=Secuencias[i]; // Escribe la secuencia + i++; // Incrementa el índice + if (i >= No_Secuencias) i=0; // Es la última secuencia? + contador =0; // Reinicia contador de retardo + Led_Monitor = !Led_Monitor; // Parpadeo del Led Monitor + } +} +/* END Events */ + + +/* +________________________________________________________________________________ +| +| Funciones Prototipo +|_______________________________________________________________________________ +*/ + // Las Funciones Prototipo van aquí ! +//void confSysClock(void); // Configure system clock (72MHz HSE clock, 48MHz USB clock) + +/* END functions */ + +/* END program */ + +/*+----------------------------------------------------------------------------- +*+ La documentación va aquí!: ++-------------------------------------------------------------------------------- +| EJERCICIO +| +| 1.- Modificar este programa para: +| a) Agregar más secuencias (mínimo 32). +| b) Realizar el barrido del arreglo de atrás hacia adelante y repetir +| 2.- Modificar el programa para incluir secuencias de sonidos utiliando el +| módulo PWM (Sirena). +| ++-------------------------------------------------------------------------------- +| +| EXAMEN +| +| 1.- Modificar el programa para que despliegue un rango de secuencias +| determinado. +| 2.- Modificar el programa para incluir un menú de selección de secuencias. +| a) Para la Torreta +| b) Para la Sirena +| c) Combinados +| 3.- Volver a realizar éste programa utilizando tambien con apuntadores. +| +| Mucha Suerte! +| +*+----------------------------------------------------------------------------* +*+ +*+ Powered by +*+ +*+ T H E A N T U L I U ' S T E A M R&D Unltd +*+ +*+ Research, Development, Systems, Equipment, Support & Spare Parts. +*+ (C) Copyright 1989-2019, All Rights Reserved +*+ +*+ Welcome to The Beaners Proyect Community! +*+----------------------------------------------------------------------------*/ + +/* END Mbed */ \ No newline at end of file