programa de torreta

Dependencies:   mbed

Embed: (wiki syntax)

« Back to documentation index

Show/hide line numbers main.cpp Source File

main.cpp

00001 /* #############################################################################
00002 **    Archivo        : main.c
00003 **    Proyecto       : STM32-F103C8_Torreta
00004 **    Procesador     : STM32F103C8T6
00005 **    Plataforma     : Blue Pill
00006 **    Herramienta    : Mbed Compiler
00007 **    Version        : Driver 01.01
00008 **    Compilador     : GNU C Compiler
00009 **    Fecha/Hora     : 14-07-2015, 11:48, # CodeGen: 0
00010 **    Descripción    :
00011 **         Este proyecto hace...
00012 **         This module contains user's application code.
00013 **   Componentes     : GPIO, Timer, etc .
00014 **   Configuraciones : Includes, Stacks y Drivers externos
00015 **   Autores         :
00016 **         ATEAM Development Group:
00017 **          - Antulio Morgado Valle
00018 **
00019 **   Versión        : Beta
00020 **   Revisión       : A
00021 **   Release        : 0
00022 **   Bugs & Fixes   :
00023 **   Date           : 20/10/2019
00024 **                    Added support for Led_RGB
00025 **                    22/09/2018 
00026 **                    Added LCD Menu, Beta version (with bugs)
00027 **
00028 ** ###########################################################################*/
00029 /*
00030 ::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
00031 :  Includes
00032 ::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
00033 */
00034 #include "stm32f103c8t6.h"
00035 #include "mbed.h"
00036 /*
00037 :...............................................................................
00038 :  Definiciones
00039 :...............................................................................
00040 */
00041 #define     Ticker_Rate     1000            // Periodo de interrupción (us)
00042 /*
00043 +-------------------------------------------------------------------------------
00044 |  Configuración de Puertos 
00045 +-------------------------------------------------------------------------------
00046 */
00047 Ticker      Barrido;                    // Interrupción del Timer
00048 //BusOut      Torreta(D0,D1,D2,D3,D4,D5,D6,D7); // Utilizando las definiciones Arduino
00049 BusOut      Torreta(PB_4,PB_3,PA_15,PA_12,PA_11,PA_10,PA_9,PA_8); // 
00050 DigitalOut  Led_Monitor (LED1);         // Led monitor de la Tarjeta STM32F103C8
00051 //PwmOut     Buzzer(PB_1);                // PB1_TIM3_CH4N
00052 /*
00053 +-------------------------------------------------------------------------------
00054 |  Variables Globales de Usuario 
00055 +-------------------------------------------------------------------------------
00056 */
00057 uint8_t Secuencias[]={
00058         0x03, 0x03, 0xC0, 0xC0, 0x03, 0x03, 0xC0, 0xC0, //   8
00059         0x03, 0x03, 0xC0, 0xC0, 0x03, 0x03, 0xC0, 0xC0, //  16
00060         0x03, 0xC0, 0x03, 0xC0, 0x03, 0xC0, 0x03, 0xC0, //  24
00061         0x03, 0xC0, 0x03, 0xC0, 0x03, 0xC0, 0x03, 0xC0, //  32
00062         0x03, 0x00, 0x03, 0x00, 0xC0, 0x00, 0xC0, 0xC0, //  40
00063         0x03, 0x00, 0x03, 0x00, 0xC0, 0x00, 0xC0, 0x00, //  48
00064         0x03, 0x00, 0x03, 0x00, 0xC0, 0x00, 0xC0, 0x00, //  56
00065         0x03, 0x00, 0x03, 0x00, 0xC0, 0x00, 0xC0, 0x00, //  64  
00066         0x07, 0x08, 0x13, 0x20, 0xC0, 0x20, 0xC8, 0x04, //  72
00067         0x07, 0x08, 0x13, 0x20, 0xC0, 0x20, 0xC8, 0x04, //  80 
00068         0x07, 0x0B, 0xD0, 0xE0, 0x07, 0x0B, 0xD0, 0xE0, //  88
00069         0x07, 0x0B, 0xD0, 0xE0, 0x07, 0x0B, 0xD0, 0xE0, //  96 
00070         0x23, 0x13, 0xC8, 0xC4, 0x23, 0x13, 0xC8, 0xC4, // 104
00071         0x23, 0x13, 0xC8, 0xC4, 0x23, 0x13, 0xC8, 0xC4, // 112
00072         0x23, 0x10, 0xC8, 0x04, 0x23, 0x10, 0xC8, 0x04, // 120
00073         0x23, 0x10, 0xC8, 0x04, 0x23, 0x10, 0xC8, 0x04, // 128   
00074         0x07, 0x43, 0xD0, 0xC4, 0x07, 0x43, 0xD0, 0xC4, // 136
00075         0x07, 0x43, 0xD0, 0xC4, 0x07, 0x43, 0xD0, 0xC4, // 144           
00076 
00077         0x03, 0x04, 0x08, 0x10, 0x20, 0xC0, 0x20, 0x10, // 152
00078         0x08, 0x04, 0x03, 0x04, 0x08, 0x10, 0x20, 0xC0, // 160 
00079         0x20, 0x10, 0x08, 0x04, 0x03, 0x04, 0x08, 0x10, // 168
00080         0x20, 0xC0, 0x20, 0x10, 0x08, 0x04, 0x03, 0x04, // 176       
00081         0x08, 0x10, 0x20, 0xC0, 0x20, 0x10, 0x08, 0x04, // 184
00082       
00083         0x03, 0x18, 0xC0, 0x3C, 0x03, 0x24, 0xC0, 0x3C, // 192              
00084 
00085         0x04, 0x08, 0x10, 0x20, 0x04, 0x08, 0x10, 0x20, // 200
00086         0x04, 0x08, 0x10, 0x20, 0x04, 0x08, 0x10, 0x20, // 208
00087         0x20, 0x10, 0x08, 0x04, 0x20, 0x10, 0x08, 0x04, // 216
00088         0x20, 0x10, 0x08, 0x04, 0x20, 0x10, 0x08, 0x04, // 224
00089         0x03, 0x04, 0x03, 0x08, 0x03, 0x10, 0x03, 0x20, // 232
00090         0x03, 0x04, 0x03, 0x08, 0x03, 0x10, 0x03, 0x20, // 240        
00091         0xC0, 0x20, 0xC0, 0x10, 0xC0, 0x08, 0xC0, 0x04, // 248
00092         0xC0, 0x20, 0xC0, 0x10, 0xC0, 0x08, 0xC0, 0x04, // 256
00093         0x04, 0x08, 0x10, 0x20, 0x20, 0x10, 0x08, 0x04, // 264
00094         0x04, 0x08, 0x10, 0x20, 0x20, 0x10, 0x08, 0x04, // 272
00095         0x88, 0x44, 0x11, 0x22, 0x88, 0x44, 0x22, 0x11, // 280
00096         0x88, 0x44, 0x11, 0x22, 0x88, 0x44, 0x22, 0x11, // 288
00097         0x11, 0x22, 0x44, 0x88, 0x11, 0x22, 0x44, 0x88, // 296
00098         0x11, 0x22, 0x44, 0x88, 0x11, 0x22, 0x44, 0x88, // 304
00099         0x18, 0x24, 0x18, 0x24, 0x18, 0x24, 0x18, 0x24, // 312
00100         0x18, 0x24, 0x18, 0x24, 0x18, 0x24, 0x18, 0x24, // 320
00101         0x18, 0x81, 0x3C, 0xC3, 0x24, 0x42, 0x0F, 0xF0, // 328
00102         0x18, 0x81, 0x3C, 0xC3, 0x24, 0x42, 0x0F, 0xF0, // 336
00103         0x18, 0xC3, 0x24, 0xC3, 0x18, 0xC3, 0x24, 0xC3, // 344
00104         0x18, 0xC3, 0x24, 0xC3, 0x18, 0xC3, 0x24, 0xC3, // 352
00105         0x20, 0x30, 0x10, 0x18, 0x08, 0x0C, 0x04, 0x03, // 360
00106         0x04, 0x0C, 0x08, 0x18, 0x10, 0x30, 0x20, 0xC0, // 368
00107         0x20, 0x30, 0x10, 0x18, 0x08, 0x0C, 0x04, 0x03, // 376
00108         0x04, 0x0C, 0x08, 0x18, 0x10, 0x30, 0x20, 0xC0, // 384
00109         0x81, 0x81, 0x7E, 0x7E, 0x81, 0x81, 0x7E, 0x7E, // 392
00110         0x81, 0x7E, 0x81, 0x7E, 0x81, 0x7E, 0x7E, 0x81, // 400
00111         0x81, 0x00, 0x81, 0x00, 0x7E, 0x00, 0x7E, 0x00, // 408
00112         0x81, 0x00, 0x81, 0x00, 0x7E, 0x00, 0x7E, 0x00, // 416        
00113         0x80, 0x00, 0x01, 0x00, 0x7E, 0x00, 0x7E, 0x00, // 424
00114         0x80, 0x00, 0x01, 0x00, 0x7E, 0x00, 0x7E, 0x00, // 432
00115 
00116         0x33, 0xCC, 0x33, 0xCC, 0x33, 0xCC, 0x33, 0xCC, // 440
00117         0x03, 0x3C, 0x03, 0x3C, 0xC0, 0x3C, 0xC0, 0x3C, // 448
00118         0x03, 0x3C, 0x03, 0x3C, 0xC0, 0x3C, 0xC0, 0x3C, // 456        
00119         0x3C, 0x00, 0xC3, 0x00, 0x3C, 0x00, 0xC3, 0x00, // 464
00120         0x3C, 0x00, 0xC3, 0x00, 0x3C, 0x00, 0xC3, 0x00, // 472
00121         0x3C, 0x3C, 0x00, 0x00, 0x3C, 0x3C, 0x00, 0x00, // 480
00122         0x3C, 0x3C, 0x00, 0x00, 0x3C, 0x3C, 0x00, 0x00, // 488
00123         0x3C, 0x00, 0x3C, 0x00, 0x3C, 0x00, 0x3C, 0x00, // 496
00124         0x3C, 0x00, 0x3C, 0x00, 0x3C, 0x00, 0x3C, 0x00, // 504
00125         0xC3, 0x3C, 0xC3, 0x3C, 0xC3, 0x3C, 0xC3, 0x3C, // 512
00126         0xC3, 0x3C, 0xC3, 0x3C, 0xC3, 0x3C, 0xC3, 0x3C, // 520
00127         0xC0, 0x3C, 0x03, 0x3C, 0xC0, 0x3C, 0x03, 0x3C, // 528
00128         0xC0, 0x3C, 0x03, 0x3C, 0xC0, 0x3C, 0x03, 0x3C, // 536        
00129         0xC0, 0x3C, 0x03, 0x3C, 0xC0, 0x3C, 0x03, 0x3C, // 544
00130         0xC0, 0x3C, 0x03, 0x3C, 0xC0, 0x3C, 0x03, 0x3C, // 552
00131         0x00, 0x28, 0x00, 0x14, 0x00, 0x28, 0x00, 0x14, // 560
00132         0x00, 0x28, 0x00, 0x14, 0x00, 0x28, 0x00, 0x14, // 568
00133         0xC0, 0xF0, 0x30, 0x0C, 0x0F, 0xC0, 0xF0, 0x30, // 576
00134         0x0C, 0x0F, 0xC0, 0xF0, 0x30, 0x0C, 0x0F, 0x03, // 584
00135         0x03, 0x0F, 0x0C, 0x30, 0xF0, 0xC0, 0x0F, 0x0C, // 592
00136         0x30, 0xF0, 0xC0, 0x0F, 0x0C, 0x30, 0xF0, 0xC0, // 600
00137         0x00, 0xC0, 0xF0, 0x30, 0x3C, 0x0C, 0x0F, 0x03, // 608
00138         0x00, 0xC0, 0xF0, 0x30, 0x3C, 0x0C, 0x0F, 0x03, // 616
00139         0x00, 0x03, 0x0F, 0x0C, 0x3C, 0x30, 0xF0, 0xC0, // 624
00140         0x00, 0x03, 0x0F, 0x0C, 0x3C, 0x30, 0xF0, 0xC0, // 632
00141         0x00, 0xC0, 0xF0, 0x30, 0x3C, 0x0C, 0x0F, 0x03, // 640
00142         0x00, 0xC0, 0xF0, 0x30, 0x3C, 0x0C, 0x0F, 0x03, // 648        
00143         0x00, 0x0F, 0xFF, 0xF0, 0x00, 0x0F, 0xFF, 0xF0, // 656
00144         0x00, 0x0F, 0xFF, 0xF0, 0x00, 0x0F, 0xFF, 0xF0, // 674
00145         0x00, 0xF0, 0x00, 0x0F, 0x00, 0xF0, 0x00, 0x0F, // 682
00146         0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF };
00147 
00148 uint16_t No_Secuencias=689;     // Número de secuencias a desplegar
00149 uint16_t i=0;                   // Indice para las secuencias
00150 uint16_t delay=250;             // Tiempo de retardo entre secuencias (en ms)
00151 uint16_t contador=0;            // Contador de mili segundos
00152 
00153 /* END Global Variables */           
00154 /*
00155 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
00156 |  Definición de Funciones Prototipo y Rutinas de los Vectores de Interrupción
00157 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
00158 */
00159 void Barrido_OnInterrupt(void);  
00160 
00161 /*
00162 #===============================================================================
00163 |
00164 |               P R O G R A M A     P R I N C I P A L
00165 |
00166 #=============================================================================== 
00167 */
00168 int main()          
00169 {       // Inicialización de variables locales, puertos e interrupciones van aquí !!!
00170 confSysClock();     // Inicialización del Sistema, 
00171 Barrido.attach_us(&Barrido_OnInterrupt, Ticker_Rate);   // Periodo de la Interrupción por Timer = 1ms (Tcker_Rate=1000)
00172 
00173     while (true)                // El Lazo del Programa principal está aquí !!!
00174     {
00175                                 //El Programa principal no hace nada !!!
00176     }
00177 }
00178 /* END main */
00179 
00180 /*
00181 ................................................................................
00182 :  Rutinas de los Vectores de Interrupción
00183 ................................................................................
00184 */
00185 void Barrido_OnInterrupt()
00186 {
00187     /* Rutina de Atención a la Interrupción */
00188     /* Write your code here ... */
00189     
00190     contador++;                     // Incremeta el contador de mili segundos
00191     if (contador == delay)          // Contador es igual al retardo programado?
00192     {
00193     Torreta=Secuencias[i];          // Escribe la secuencia
00194     i++;                            // Incrementa el índice
00195     if (i >= No_Secuencias) i=0;    // Es la última secuencia?
00196     contador =0;                    // Reinicia contador de retardo
00197     Led_Monitor = !Led_Monitor;     // Parpadeo del Led Monitor
00198     }
00199 }
00200 /* END Events */
00201 
00202 
00203 /*
00204 ________________________________________________________________________________
00205 |
00206 |  Funciones Prototipo
00207 |_______________________________________________________________________________
00208 */
00209                     // Las Funciones Prototipo van aquí !
00210 //void confSysClock(void);    // Configure system clock (72MHz HSE clock, 48MHz USB clock)
00211 
00212 /* END functions */    
00213                 
00214 /* END program */
00215 
00216 /*+-----------------------------------------------------------------------------       
00217 *+ La documentación va aquí!:
00218 +--------------------------------------------------------------------------------
00219 |                               EJERCICIO
00220 |
00221 | 1.-   Modificar este programa para: 
00222 |       a) Agregar más secuencias (mínimo 32).
00223 |       b) Realizar el barrido del arreglo de atrás hacia adelante y repetir
00224 | 2.-   Modificar el programa para incluir secuencias de sonidos utiliando el 
00225 |       módulo PWM (Sirena).
00226 |       
00227 +--------------------------------------------------------------------------------
00228 |
00229 |                               EXAMEN
00230 |
00231 | 1.-   Modificar el programa para que despliegue un rango de secuencias  
00232 |       determinado.
00233 | 2.-   Modificar el programa para incluir un menú de selección de secuencias.
00234 |       a) Para la Torreta
00235 |       b) Para la Sirena
00236 |       c) Combinados
00237 | 3.-   Volver a realizar éste programa utilizando tambien con apuntadores.
00238 |
00239 |       Mucha Suerte!                       
00240 |
00241 *+----------------------------------------------------------------------------*
00242 *+
00243 *+   Powered by
00244 *+
00245 *+          T H E     A N T U L I U ' S   T E A M   R&D  Unltd 
00246 *+
00247 *+  Research, Development, Systems, Equipment, Support & Spare Parts.
00248 *+  (C) Copyright 1989-2019, All Rights Reserved            
00249 *+
00250 *+  Welcome to The Beaners Proyect Community!                   
00251 *+----------------------------------------------------------------------------*/
00252 
00253 /* END Mbed */