Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
Dependencies: mbed
main.cpp@1:87e57a5439b8, 2019-09-11 (annotated)
- Committer:
- fcalzadas
- Date:
- Wed Sep 11 19:56:40 2019 +0000
- Revision:
- 1:87e57a5439b8
- Parent:
- 0:9f7581d1af6f
programa adivina para la tarjeta "Blue Pil" o stm32f103c8
Who changed what in which revision?
| User | Revision | Line number | New contents of line |
|---|---|---|---|
| Antulius | 0:9f7581d1af6f | 1 | /* ########################################################################### |
| Antulius | 0:9f7581d1af6f | 2 | ** Archivo : main.c |
| fcalzadas | 1:87e57a5439b8 | 3 | ** Proyecto : STM32-F103C8_Adivina |
| Antulius | 0:9f7581d1af6f | 4 | ** Procesador : STM32F103C8 |
| Antulius | 0:9f7581d1af6f | 5 | ** Herramienta : Mbed |
| Antulius | 0:9f7581d1af6f | 6 | ** Version : Driver 01.01 |
| Antulius | 0:9f7581d1af6f | 7 | ** Compilador : GNU C Compiler |
| Antulius | 0:9f7581d1af6f | 8 | ** Fecha/Hora : 14-07-2015, 11:48, # CodeGen: 0 |
| Antulius | 0:9f7581d1af6f | 9 | ** Descripción : |
| Antulius | 0:9f7581d1af6f | 10 | ** Este proyecto hace... |
| Antulius | 0:9f7581d1af6f | 11 | ** This module contains user's application code. |
| Antulius | 0:9f7581d1af6f | 12 | ** Componentes : GPIO, Timer, etc . |
| Antulius | 0:9f7581d1af6f | 13 | ** Configuraciones : Includes, Stacks y Drivers externos |
| Antulius | 0:9f7581d1af6f | 14 | ** Autores : |
| Antulius | 0:9f7581d1af6f | 15 | ** ATEAM Development Group: |
| Antulius | 0:9f7581d1af6f | 16 | ** - Antulio Morgado Valle |
| Antulius | 0:9f7581d1af6f | 17 | ** |
| Antulius | 0:9f7581d1af6f | 18 | ** Versión : Beta |
| Antulius | 0:9f7581d1af6f | 19 | ** Revisión : A |
| Antulius | 0:9f7581d1af6f | 20 | ** Release : 0 |
| Antulius | 0:9f7581d1af6f | 21 | ** Bugs & Fixes : |
| Antulius | 0:9f7581d1af6f | 22 | ** Date : 20/10/2019 |
| Antulius | 0:9f7581d1af6f | 23 | ** Added support for Led_RGB |
| Antulius | 0:9f7581d1af6f | 24 | ** 22/09/2018 |
| Antulius | 0:9f7581d1af6f | 25 | ** Added LCD Menu, Beta version (with bugs) |
| Antulius | 0:9f7581d1af6f | 26 | ** |
| Antulius | 0:9f7581d1af6f | 27 | ** ###########################################################################*/ |
| Antulius | 0:9f7581d1af6f | 28 | /* |
| Antulius | 0:9f7581d1af6f | 29 | :::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: |
| Antulius | 0:9f7581d1af6f | 30 | : Includes |
| Antulius | 0:9f7581d1af6f | 31 | :::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: |
| Antulius | 0:9f7581d1af6f | 32 | */ |
| Antulius | 0:9f7581d1af6f | 33 | #include "mbed.h" |
| Antulius | 0:9f7581d1af6f | 34 | #include "stm32f103c8t6.h" |
| Antulius | 0:9f7581d1af6f | 35 | //#include "stm32f10x.h" |
| Antulius | 0:9f7581d1af6f | 36 | #include "PinNames.h" |
| Antulius | 0:9f7581d1af6f | 37 | //#include "SysClockConf.h" |
| Antulius | 0:9f7581d1af6f | 38 | //#include "AnalogIn.h" |
| Antulius | 0:9f7581d1af6f | 39 | //#include "Led_RGB.h" |
| fcalzadas | 1:87e57a5439b8 | 40 | #include "Serial.h" |
| fcalzadas | 1:87e57a5439b8 | 41 | #include "stdio.h" |
| Antulius | 0:9f7581d1af6f | 42 | |
| Antulius | 0:9f7581d1af6f | 43 | /* |
| Antulius | 0:9f7581d1af6f | 44 | :............................................................................... |
| Antulius | 0:9f7581d1af6f | 45 | : Definiciones |
| Antulius | 0:9f7581d1af6f | 46 | :............................................................................... |
| Antulius | 0:9f7581d1af6f | 47 | */ |
| Antulius | 0:9f7581d1af6f | 48 | #define on 0 // Estado para boton presionado |
| Antulius | 0:9f7581d1af6f | 49 | #define off 1 // Estado para boton sin presionar |
| Antulius | 0:9f7581d1af6f | 50 | #define hold 2 // Estado para boton mantenido |
| Antulius | 0:9f7581d1af6f | 51 | #define release 3 // Estado para boton liberado |
| fcalzadas | 1:87e57a5439b8 | 52 | #define FALSE 0 |
| fcalzadas | 1:87e57a5439b8 | 53 | #define TRUE 1 |
| fcalzadas | 1:87e57a5439b8 | 54 | //#define Ticker_Rate 1000 // Periodo de interrupción (us) |
| Antulius | 0:9f7581d1af6f | 55 | /* |
| Antulius | 0:9f7581d1af6f | 56 | +------------------------------------------------------------------------------- |
| Antulius | 0:9f7581d1af6f | 57 | | Configuración de Puertos |
| Antulius | 0:9f7581d1af6f | 58 | +------------------------------------------------------------------------------- |
| Antulius | 0:9f7581d1af6f | 59 | */ |
| Antulius | 0:9f7581d1af6f | 60 | //confSysClock(); // Configure system clock (72MHz HSE clock, 48MHz USB clock) |
| fcalzadas | 1:87e57a5439b8 | 61 | //Ticker TimerInt; // Inicializa la Interrupción por Timer |
| fcalzadas | 1:87e57a5439b8 | 62 | DigitalOut verde (LED1); // Inicializa el LED Monitor |
| fcalzadas | 1:87e57a5439b8 | 63 | DigitalOut rojo (PB_1); // Inicializa el LED Testigo |
| Antulius | 0:9f7581d1af6f | 64 | Serial terminal(PA_2, PA_3); // Inicializa la Comunicación Serial a la PC |
| fcalzadas | 1:87e57a5439b8 | 65 | //PwmOut servo(PA_7); // Inicializa el PWM |
| fcalzadas | 1:87e57a5439b8 | 66 | //AnalogIn sensor1 (PB_0); // Inicializa Canal Analógico para sensor 1 |
| Antulius | 0:9f7581d1af6f | 67 | /* |
| Antulius | 0:9f7581d1af6f | 68 | +------------------------------------------------------------------------------- |
| Antulius | 0:9f7581d1af6f | 69 | | Variables Globales de Usuario |
| Antulius | 0:9f7581d1af6f | 70 | +------------------------------------------------------------------------------- |
| Antulius | 0:9f7581d1af6f | 71 | */ |
| fcalzadas | 1:87e57a5439b8 | 72 | //uint16_t Rate=Ticker_Rate/2; // Velocidad de barrido (500us = 0.5ms) |
| fcalzadas | 1:87e57a5439b8 | 73 | //uint16_t counter=250; // Cuenta inicial de 250us |
| Antulius | 0:9f7581d1af6f | 74 | /* END variables */ |
| Antulius | 0:9f7581d1af6f | 75 | |
| Antulius | 0:9f7581d1af6f | 76 | /* |
| Antulius | 0:9f7581d1af6f | 77 | ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
| Antulius | 0:9f7581d1af6f | 78 | | Definición de Funciones Prototipo y Rutinas de los Vectores de Interrupción |
| Antulius | 0:9f7581d1af6f | 79 | ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
| Antulius | 0:9f7581d1af6f | 80 | */ |
| Antulius | 0:9f7581d1af6f | 81 | // Las Definiciones de Funciones Prototipo |
| Antulius | 0:9f7581d1af6f | 82 | // y Apuntadores a Vectores de Interrupciones van aquí ! |
| fcalzadas | 1:87e57a5439b8 | 83 | void Setup(void); |
| fcalzadas | 1:87e57a5439b8 | 84 | //void TimerInt_OnInterrupt(void); |
| fcalzadas | 1:87e57a5439b8 | 85 | //void Blinking_Led(void); |
| Antulius | 0:9f7581d1af6f | 86 | /* END prototypes */ |
| Antulius | 0:9f7581d1af6f | 87 | |
| Antulius | 0:9f7581d1af6f | 88 | /* END definitions */ |
| Antulius | 0:9f7581d1af6f | 89 | /* |
| Antulius | 0:9f7581d1af6f | 90 | #=============================================================================== |
| Antulius | 0:9f7581d1af6f | 91 | | |
| Antulius | 0:9f7581d1af6f | 92 | | P R O G R A M A P R I N C I P A L |
| Antulius | 0:9f7581d1af6f | 93 | | |
| Antulius | 0:9f7581d1af6f | 94 | #=============================================================================== |
| Antulius | 0:9f7581d1af6f | 95 | */ |
| Antulius | 0:9f7581d1af6f | 96 | int main() |
| Antulius | 0:9f7581d1af6f | 97 | { // Inicialización de variables, puertos e interrupciones |
| fcalzadas | 1:87e57a5439b8 | 98 | void confSysClock(); // Inicialización del Sistema, Configure system clock (72MHz HSE clock, 48MHz USB clock) |
| fcalzadas | 1:87e57a5439b8 | 99 | void Setup(void); |
| fcalzadas | 1:87e57a5439b8 | 100 | //TimerInt.attach_us(&TimerInt_OnInterrupt, Ticker_Rate); // Le asigna el periodo de interrupción de 1ms (Ticker_Rate=1000) |
| Antulius | 0:9f7581d1af6f | 101 | |
| fcalzadas | 1:87e57a5439b8 | 102 | //terminal.baud(115200); // Se configura la velocidad de transmisión e inicia la comunicación serial. |
| fcalzadas | 1:87e57a5439b8 | 103 | terminal.printf(" ADIVINA \n\r"); |
| fcalzadas | 1:87e57a5439b8 | 104 | rojo = off; |
| fcalzadas | 1:87e57a5439b8 | 105 | verde = off; |
| Antulius | 0:9f7581d1af6f | 106 | |
| Antulius | 0:9f7581d1af6f | 107 | while (true) // El Lazo del Programa principal está aquí !!! |
| Antulius | 0:9f7581d1af6f | 108 | { |
| fcalzadas | 1:87e57a5439b8 | 109 | Inicio: terminal.printf("DIGITE UN NUMERO SECRETO DE 0 A 9 \r\n"); |
| fcalzadas | 1:87e57a5439b8 | 110 | char secreto = terminal.getc(); |
| fcalzadas | 1:87e57a5439b8 | 111 | rojo = on; |
| fcalzadas | 1:87e57a5439b8 | 112 | verde = on; |
| fcalzadas | 1:87e57a5439b8 | 113 | Intenta: terminal.printf("ADIVINA EL NUMERO \r\n"); |
| fcalzadas | 1:87e57a5439b8 | 114 | char respuesta = terminal.getc(); |
| fcalzadas | 1:87e57a5439b8 | 115 | if( secreto < respuesta ) |
| fcalzadas | 1:87e57a5439b8 | 116 | { |
| fcalzadas | 1:87e57a5439b8 | 117 | terminal.printf("Es mas BAJO \r\n"); |
| fcalzadas | 1:87e57a5439b8 | 118 | rojo = on; |
| fcalzadas | 1:87e57a5439b8 | 119 | verde = off; |
| fcalzadas | 1:87e57a5439b8 | 120 | goto Intenta; |
| fcalzadas | 1:87e57a5439b8 | 121 | } |
| fcalzadas | 1:87e57a5439b8 | 122 | if(secreto > respuesta ) |
| fcalzadas | 1:87e57a5439b8 | 123 | { |
| fcalzadas | 1:87e57a5439b8 | 124 | terminal.printf("Es mas ALTO \r\n"); |
| fcalzadas | 1:87e57a5439b8 | 125 | rojo = off; |
| fcalzadas | 1:87e57a5439b8 | 126 | verde = on; |
| fcalzadas | 1:87e57a5439b8 | 127 | goto Intenta; |
| fcalzadas | 1:87e57a5439b8 | 128 | } |
| fcalzadas | 1:87e57a5439b8 | 129 | if( secreto == respuesta ) |
| fcalzadas | 1:87e57a5439b8 | 130 | { |
| fcalzadas | 1:87e57a5439b8 | 131 | terminal.printf("CORRECTO!, Es igual a: %c \r\n", secreto); |
| fcalzadas | 1:87e57a5439b8 | 132 | rojo = off; |
| fcalzadas | 1:87e57a5439b8 | 133 | verde = on; |
| fcalzadas | 1:87e57a5439b8 | 134 | wait(1.0); |
| fcalzadas | 1:87e57a5439b8 | 135 | rojo = off; |
| fcalzadas | 1:87e57a5439b8 | 136 | verde = off; |
| fcalzadas | 1:87e57a5439b8 | 137 | wait(1.0); |
| fcalzadas | 1:87e57a5439b8 | 138 | rojo = off; |
| fcalzadas | 1:87e57a5439b8 | 139 | verde = on; |
| fcalzadas | 1:87e57a5439b8 | 140 | wait(1.0); |
| fcalzadas | 1:87e57a5439b8 | 141 | terminal.printf("ERES UN GENIO !!! \r\n"); |
| fcalzadas | 1:87e57a5439b8 | 142 | wait(1.0); |
| fcalzadas | 1:87e57a5439b8 | 143 | rojo = on; |
| fcalzadas | 1:87e57a5439b8 | 144 | verde = off; |
| fcalzadas | 1:87e57a5439b8 | 145 | wait(1.0); |
| fcalzadas | 1:87e57a5439b8 | 146 | rojo =off; |
| fcalzadas | 1:87e57a5439b8 | 147 | verde = on; |
| fcalzadas | 1:87e57a5439b8 | 148 | } |
| fcalzadas | 1:87e57a5439b8 | 149 | terminal.printf("Quieres intentarlo de nuevo? \r\n"); |
| fcalzadas | 1:87e57a5439b8 | 150 | terminal.printf("0 = NO \r\n 1 = SI \r\n"); |
| fcalzadas | 1:87e57a5439b8 | 151 | char opcion = terminal .getc(); |
| fcalzadas | 1:87e57a5439b8 | 152 | if(opcion =='1') goto Inicio; |
| fcalzadas | 1:87e57a5439b8 | 153 | else if(opcion == '0') |
| fcalzadas | 1:87e57a5439b8 | 154 | { |
| fcalzadas | 1:87e57a5439b8 | 155 | terminal.printf("GAME OVER \r\n"); |
| fcalzadas | 1:87e57a5439b8 | 156 | break; |
| fcalzadas | 1:87e57a5439b8 | 157 | } |
| fcalzadas | 1:87e57a5439b8 | 158 | |
| Antulius | 0:9f7581d1af6f | 159 | } |
| Antulius | 0:9f7581d1af6f | 160 | } |
| Antulius | 0:9f7581d1af6f | 161 | /* END main */ |
| Antulius | 0:9f7581d1af6f | 162 | |
| Antulius | 0:9f7581d1af6f | 163 | /* |
| Antulius | 0:9f7581d1af6f | 164 | ................................................................................ |
| Antulius | 0:9f7581d1af6f | 165 | : Rutinas de los Vectores de Interrupción |
| Antulius | 0:9f7581d1af6f | 166 | ................................................................................ |
| Antulius | 0:9f7581d1af6f | 167 | */ |
| Antulius | 0:9f7581d1af6f | 168 | // Las Rutinas de Atención a Interrupciones van aquí ! |
| fcalzadas | 1:87e57a5439b8 | 169 | /*void TimerInt_OnInterrupt() // Rutina de Atención al Ticker |
| Antulius | 0:9f7581d1af6f | 170 | { |
| Antulius | 0:9f7581d1af6f | 171 | counter--; // Aquí va la Rutina de Servicio ! |
| Antulius | 0:9f7581d1af6f | 172 | if (!counter) |
| Antulius | 0:9f7581d1af6f | 173 | { |
| Antulius | 0:9f7581d1af6f | 174 | terminal.printf("Counter Finish! \r\n"); |
| Antulius | 0:9f7581d1af6f | 175 | led_monitor = !led_monitor; // Parapadeo del LED por Interrupción (LED Toggled) |
| Antulius | 0:9f7581d1af6f | 176 | counter = Rate; // Restablece el contador, Le asigna el periodo de 0.5ms (Rate=500) |
| Antulius | 0:9f7581d1af6f | 177 | } |
| fcalzadas | 1:87e57a5439b8 | 178 | }*/ |
| Antulius | 0:9f7581d1af6f | 179 | /* END Events */ |
| Antulius | 0:9f7581d1af6f | 180 | /* |
| Antulius | 0:9f7581d1af6f | 181 | ________________________________________________________________________________ |
| Antulius | 0:9f7581d1af6f | 182 | | |
| Antulius | 0:9f7581d1af6f | 183 | | Funciones Prototipo |
| Antulius | 0:9f7581d1af6f | 184 | |_______________________________________________________________________________ |
| Antulius | 0:9f7581d1af6f | 185 | */ |
| Antulius | 0:9f7581d1af6f | 186 | // Las Funciones Prototipo van aquí ! |
| fcalzadas | 1:87e57a5439b8 | 187 | void Setup() // Software Blinking routine for LED |
| Antulius | 0:9f7581d1af6f | 188 | { |
| Antulius | 0:9f7581d1af6f | 189 | // The on-board LED is connected, via a resistor, to +3.3V (not to GND). |
| Antulius | 0:9f7581d1af6f | 190 | // So to turn the LED on or off we have to set it to 0 or 1 respectively |
| fcalzadas | 1:87e57a5439b8 | 191 | terminal.baud(9600); |
| fcalzadas | 1:87e57a5439b8 | 192 | terminal.printf("System is Wake Up!.\n\r"); |
| fcalzadas | 1:87e57a5439b8 | 193 | //led_testigo = 1; // turn the LED on (using Positive Logic) |
| fcalzadas | 1:87e57a5439b8 | 194 | //wait_ms(200); // 200 millisecond |
| fcalzadas | 1:87e57a5439b8 | 195 | //led_testigo = 0; // turn the LED off (using Positive Logic) |
| fcalzadas | 1:87e57a5439b8 | 196 | //wait_ms(1000); // 1000 millisecond |
| Antulius | 0:9f7581d1af6f | 197 | } |
| Antulius | 0:9f7581d1af6f | 198 | /* END functions */ |
| Antulius | 0:9f7581d1af6f | 199 | |
| Antulius | 0:9f7581d1af6f | 200 | /* END program */ |
| Antulius | 0:9f7581d1af6f | 201 | |
| Antulius | 0:9f7581d1af6f | 202 | /*+----------------------------------------------------------------------------- |
| Antulius | 0:9f7581d1af6f | 203 | *+ Conexión al Led Testigo: |
| Antulius | 0:9f7581d1af6f | 204 | *+ |
| Antulius | 0:9f7581d1af6f | 205 | *+ Los leds se pueden conectar a cualquier pin que se declare como DigitalOut. |
| Antulius | 0:9f7581d1af6f | 206 | *+ El dispositivo puede drenar hasta 20ma por todas sus salidas a un voltaje de |
| Antulius | 0:9f7581d1af6f | 207 | *+ 3.3V, pero se recomienda no exceder de 1mA por salida. |
| Antulius | 0:9f7581d1af6f | 208 | *+ Esto se logra poniendo una resistencia limitadora de mínimo 330 Ohms. |
| Antulius | 0:9f7581d1af6f | 209 | *+ |
| Antulius | 0:9f7581d1af6f | 210 | *+ 3.3V o 5V |
| Antulius | 0:9f7581d1af6f | 211 | *+ O |
| Antulius | 0:9f7581d1af6f | 212 | *+ | |
| Antulius | 0:9f7581d1af6f | 213 | *+ | |
| Antulius | 0:9f7581d1af6f | 214 | *+ / |
| Antulius | 0:9f7581d1af6f | 215 | *+ \ 1K |
| Antulius | 0:9f7581d1af6f | 216 | *+ / |
| Antulius | 0:9f7581d1af6f | 217 | *+ \ UTILIZANDO LÓGICA NEGATIVA |
| Antulius | 0:9f7581d1af6f | 218 | *+ | |
| Antulius | 0:9f7581d1af6f | 219 | *+ ___|___ |
| Antulius | 0:9f7581d1af6f | 220 | *+ \ / |
| Antulius | 0:9f7581d1af6f | 221 | *+ \ / |
| Antulius | 0:9f7581d1af6f | 222 | *+ \ / |
| Antulius | 0:9f7581d1af6f | 223 | *+ __\/__ |
| Antulius | 0:9f7581d1af6f | 224 | *+ | |
| Antulius | 0:9f7581d1af6f | 225 | *+ |__________________________ PIN (Digital Out) |
| Antulius | 0:9f7581d1af6f | 226 | *+ |
| Antulius | 0:9f7581d1af6f | 227 | *+ |
| Antulius | 0:9f7581d1af6f | 228 | *+ |
| Antulius | 0:9f7581d1af6f | 229 | *+ |
| Antulius | 0:9f7581d1af6f | 230 | *+ 1K |
| Antulius | 0:9f7581d1af6f | 231 | *+ |
| Antulius | 0:9f7581d1af6f | 232 | *+ _________/\ /\ /\ _____ PIN (Digital Out) |
| Antulius | 0:9f7581d1af6f | 233 | *+ | \/ \/ \/ |
| Antulius | 0:9f7581d1af6f | 234 | *+ | |
| Antulius | 0:9f7581d1af6f | 235 | *+ | |
| Antulius | 0:9f7581d1af6f | 236 | *+ ___|___ |
| Antulius | 0:9f7581d1af6f | 237 | *+ \ / |
| Antulius | 0:9f7581d1af6f | 238 | *+ \ / |
| Antulius | 0:9f7581d1af6f | 239 | *+ \ / UTILIZANDO LÓGICA POSITIVA |
| Antulius | 0:9f7581d1af6f | 240 | *+ __\/__ |
| Antulius | 0:9f7581d1af6f | 241 | *+ | |
| Antulius | 0:9f7581d1af6f | 242 | *+ | |
| Antulius | 0:9f7581d1af6f | 243 | *+ | |
| Antulius | 0:9f7581d1af6f | 244 | *+ ___|___ |
| Antulius | 0:9f7581d1af6f | 245 | *+ _____ |
| Antulius | 0:9f7581d1af6f | 246 | *+ ___ |
| Antulius | 0:9f7581d1af6f | 247 | *+ _ |
| Antulius | 0:9f7581d1af6f | 248 | *+ |
| Antulius | 0:9f7581d1af6f | 249 | *+ GND |
| Antulius | 0:9f7581d1af6f | 250 | *+ |
| Antulius | 0:9f7581d1af6f | 251 | *+----------------------------------------------------------------------------* |
| Antulius | 0:9f7581d1af6f | 252 | *+ |
| Antulius | 0:9f7581d1af6f | 253 | *+ Powered by |
| Antulius | 0:9f7581d1af6f | 254 | *+ |
| Antulius | 0:9f7581d1af6f | 255 | *+ T H E A N T U L I U ' S T E A M R&D Unltd |
| Antulius | 0:9f7581d1af6f | 256 | *+ |
| Antulius | 0:9f7581d1af6f | 257 | *+ Research, Development, Systems, Equipment, Support & Spare Parts. |
| Antulius | 0:9f7581d1af6f | 258 | *+ (C) Copyright 1989-2019, All Rights Reserved |
| Antulius | 0:9f7581d1af6f | 259 | *+ |
| Antulius | 0:9f7581d1af6f | 260 | *+ Welcome to The Beaners Proyect Community! |
| Antulius | 0:9f7581d1af6f | 261 | *+----------------------------------------------------------------------------*/ |
| Antulius | 0:9f7581d1af6f | 262 | |
| Antulius | 0:9f7581d1af6f | 263 | /* END Mbed */ |