
Bluepill_Plantilla Es la plantilla base (mejorada) para soporte y compatibilidad en Mbed para la tarjeta "BluePill" basada en el procesador ARM M3 STM32F103C8T6
main.cpp@5:e2fe0990d8ad, 2020-06-21 (annotated)
- Committer:
- Antulius
- Date:
- Sun Jun 21 02:31:47 2020 +0000
- Revision:
- 5:e2fe0990d8ad
- Parent:
- 4:e1e547c34929
- Child:
- 6:f47832fe0b07
Plantilla Mejorada para la Tarjeta "Blue Pill" (STM32F103C8T6)
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
Antulius | 4:e1e547c34929 | 1 | /* ############################################################################# |
Antulius | 0:9f7581d1af6f | 2 | ** Archivo : main.c |
Antulius | 5:e2fe0990d8ad | 3 | ** Proyecto : STM32F103C8_Plantilla_Enhenced |
Antulius | 4:e1e547c34929 | 4 | ** Procesador : STM32F103C8T6 |
Antulius | 4:e1e547c34929 | 5 | ** Plataforma : Blue Pill |
Antulius | 0:9f7581d1af6f | 6 | ** Herramienta : Mbed |
Antulius | 4:e1e547c34929 | 7 | ** Compilador : Mbed Online C Compiler |
Antulius | 4:e1e547c34929 | 8 | ** Version : Mbed-OS 5.15.0 |
Antulius | 4:e1e547c34929 | 9 | ** Fecha/Hora : 18-12-2019, 11:48, # CodeGen: 0 |
Antulius | 0:9f7581d1af6f | 10 | ** Descripción : |
Antulius | 0:9f7581d1af6f | 11 | ** Este proyecto hace... |
Antulius | 0:9f7581d1af6f | 12 | ** This module contains user's application code. |
Antulius | 0:9f7581d1af6f | 13 | ** Componentes : GPIO, Timer, etc . |
Antulius | 0:9f7581d1af6f | 14 | ** Configuraciones : Includes, Stacks y Drivers externos |
Antulius | 0:9f7581d1af6f | 15 | ** Autores : |
Antulius | 0:9f7581d1af6f | 16 | ** ATEAM Development Group: |
Antulius | 0:9f7581d1af6f | 17 | ** - Antulio Morgado Valle |
Antulius | 0:9f7581d1af6f | 18 | ** |
Antulius | 0:9f7581d1af6f | 19 | ** Versión : Beta |
Antulius | 0:9f7581d1af6f | 20 | ** Revisión : A |
Antulius | 0:9f7581d1af6f | 21 | ** Release : 0 |
Antulius | 0:9f7581d1af6f | 22 | ** Bugs & Fixes : |
Antulius | 0:9f7581d1af6f | 23 | ** Date : 20/10/2019 |
Antulius | 0:9f7581d1af6f | 24 | ** Added support for Led_RGB |
Antulius | 0:9f7581d1af6f | 25 | ** 22/09/2018 |
Antulius | 0:9f7581d1af6f | 26 | ** Added LCD Menu, Beta version (with bugs) |
Antulius | 0:9f7581d1af6f | 27 | ** |
Antulius | 0:9f7581d1af6f | 28 | ** ###########################################################################*/ |
Antulius | 0:9f7581d1af6f | 29 | /* |
Antulius | 0:9f7581d1af6f | 30 | :::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: |
Antulius | 0:9f7581d1af6f | 31 | : Includes |
Antulius | 0:9f7581d1af6f | 32 | :::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: |
Antulius | 0:9f7581d1af6f | 33 | */ |
Antulius | 1:c0ed6c52c441 | 34 | #include "stm32f103c8t6.h" |
Antulius | 0:9f7581d1af6f | 35 | #include "mbed.h" |
Antulius | 5:e2fe0990d8ad | 36 | #include "Serial.h" |
Antulius | 0:9f7581d1af6f | 37 | //#include "AnalogIn.h" |
Antulius | 0:9f7581d1af6f | 38 | //#include "Led_RGB.h" |
Antulius | 5:e2fe0990d8ad | 39 | //#include <stdio.h> |
Antulius | 0:9f7581d1af6f | 40 | |
Antulius | 0:9f7581d1af6f | 41 | /* |
Antulius | 0:9f7581d1af6f | 42 | :............................................................................... |
Antulius | 0:9f7581d1af6f | 43 | : Definiciones |
Antulius | 0:9f7581d1af6f | 44 | :............................................................................... |
Antulius | 0:9f7581d1af6f | 45 | */ |
Antulius | 5:e2fe0990d8ad | 46 | #define Led_on 0 // Estado para el Led Encendido |
Antulius | 5:e2fe0990d8ad | 47 | #define Led_off 1 // Estado para el Led Apagado |
Antulius | 5:e2fe0990d8ad | 48 | #define Buzz_On 1 // Estado para Buzzer Encendido |
Antulius | 5:e2fe0990d8ad | 49 | #define Buzz_Off 0 // Estado para Buzzer Apagado |
Antulius | 5:e2fe0990d8ad | 50 | #define on 0 // Estado para boton presionado |
Antulius | 5:e2fe0990d8ad | 51 | #define off 1 // Estado para boton sin presionar |
Antulius | 5:e2fe0990d8ad | 52 | #define hold 2 // Estado para boton mantenido |
Antulius | 5:e2fe0990d8ad | 53 | #define release 3 // Estado para boton liberado |
Antulius | 5:e2fe0990d8ad | 54 | #define FALSE 0 // Estado FALSO |
Antulius | 5:e2fe0990d8ad | 55 | #define TRUE 1 // Estado VERDADERO |
Antulius | 5:e2fe0990d8ad | 56 | #define Ticker_Rate 1000 // Periodo de interrupción (us) |
Antulius | 5:e2fe0990d8ad | 57 | #define Baud_Rate 115200 // Velocidad de Transmisión (Bauds) |
Antulius | 5:e2fe0990d8ad | 58 | // Velocidades Permitidas: |
Antulius | 5:e2fe0990d8ad | 59 | // 300, 600, 1200, 2400, 4800, 9600, |
Antulius | 5:e2fe0990d8ad | 60 | // 14400, 19600, 28800, 38400, 57600 |
Antulius | 5:e2fe0990d8ad | 61 | // 115200, 230400 |
Antulius | 0:9f7581d1af6f | 62 | /* |
Antulius | 0:9f7581d1af6f | 63 | +------------------------------------------------------------------------------- |
Antulius | 0:9f7581d1af6f | 64 | | Configuración de Puertos |
Antulius | 0:9f7581d1af6f | 65 | +------------------------------------------------------------------------------- |
Antulius | 0:9f7581d1af6f | 66 | */ |
Antulius | 0:9f7581d1af6f | 67 | //confSysClock(); // Configure system clock (72MHz HSE clock, 48MHz USB clock) |
Antulius | 0:9f7581d1af6f | 68 | Ticker TimerInt; // Inicializa la Interrupción por Timer |
Antulius | 4:e1e547c34929 | 69 | DigitalOut led_monitor(LED1); // Inicializa el LED Monitor (Interno) |
Antulius | 4:e1e547c34929 | 70 | DigitalOut led_testigo(PB_1); // Inicializa el LED Testigo (Externo) |
Antulius | 5:e2fe0990d8ad | 71 | PwmOut pwm1(PA_7); // Inicializa el PWM para el LED Externo |
Antulius | 5:e2fe0990d8ad | 72 | PwmOut buzzer(PB_1); // Inicializa el PWM para el Buzzer Externo |
Antulius | 5:e2fe0990d8ad | 73 | AnalogIn pot1(PB_0); // Inicializa Canal Analógico para Potenciometro 1 |
Antulius | 4:e1e547c34929 | 74 | Serial terminal(PA_2, PA_3); // Inicializa la Comunicación Serial a la PC |
Antulius | 0:9f7581d1af6f | 75 | /* |
Antulius | 0:9f7581d1af6f | 76 | +------------------------------------------------------------------------------- |
Antulius | 0:9f7581d1af6f | 77 | | Variables Globales de Usuario |
Antulius | 0:9f7581d1af6f | 78 | +------------------------------------------------------------------------------- |
Antulius | 0:9f7581d1af6f | 79 | */ |
Antulius | 0:9f7581d1af6f | 80 | uint16_t Rate=Ticker_Rate/2; // Velocidad de barrido (500us = 0.5ms) |
Antulius | 0:9f7581d1af6f | 81 | uint16_t counter=250; // Cuenta inicial de 250us |
Antulius | 0:9f7581d1af6f | 82 | /* END variables */ |
Antulius | 0:9f7581d1af6f | 83 | |
Antulius | 0:9f7581d1af6f | 84 | /* |
Antulius | 0:9f7581d1af6f | 85 | ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
Antulius | 0:9f7581d1af6f | 86 | | Definición de Funciones Prototipo y Rutinas de los Vectores de Interrupción |
Antulius | 0:9f7581d1af6f | 87 | ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
Antulius | 0:9f7581d1af6f | 88 | */ |
Antulius | 0:9f7581d1af6f | 89 | // Las Definiciones de Funciones Prototipo |
Antulius | 0:9f7581d1af6f | 90 | // y Apuntadores a Vectores de Interrupciones van aquí ! |
Antulius | 0:9f7581d1af6f | 91 | void TimerInt_OnInterrupt(void); |
Antulius | 0:9f7581d1af6f | 92 | void Blinking_Led(void); |
Antulius | 5:e2fe0990d8ad | 93 | void Clear_Screen(void); |
Antulius | 5:e2fe0990d8ad | 94 | void Buzzer_Beep(void); |
Antulius | 0:9f7581d1af6f | 95 | /* END prototypes */ |
Antulius | 0:9f7581d1af6f | 96 | |
Antulius | 0:9f7581d1af6f | 97 | /* END definitions */ |
Antulius | 0:9f7581d1af6f | 98 | /* |
Antulius | 0:9f7581d1af6f | 99 | #=============================================================================== |
Antulius | 0:9f7581d1af6f | 100 | | |
Antulius | 0:9f7581d1af6f | 101 | | P R O G R A M A P R I N C I P A L |
Antulius | 0:9f7581d1af6f | 102 | | |
Antulius | 0:9f7581d1af6f | 103 | #=============================================================================== |
Antulius | 0:9f7581d1af6f | 104 | */ |
Antulius | 0:9f7581d1af6f | 105 | int main() |
Antulius | 0:9f7581d1af6f | 106 | { // Inicialización de variables, puertos e interrupciones |
Antulius | 0:9f7581d1af6f | 107 | confSysClock(); // Inicialización del Sistema, Configure system clock (72MHz HSE clock, 48MHz USB clock) |
Antulius | 0:9f7581d1af6f | 108 | TimerInt.attach_us(&TimerInt_OnInterrupt, Ticker_Rate); // Le asigna el periodo de interrupción de 1ms (Ticker_Rate=1000) |
Antulius | 4:e1e547c34929 | 109 | terminal.baud(Baud_Rate); // Se configura la velocidad de transmisión e inicia la comunicación serial. |
Antulius | 5:e2fe0990d8ad | 110 | Clear_Screen(); // Limpia la pantalla de la Terminal |
Antulius | 5:e2fe0990d8ad | 111 | terminal.printf("The System is Wake Up!.\n\r"); |
Antulius | 5:e2fe0990d8ad | 112 | Buzzer_Beep(); // Prueba el Buzzer |
Antulius | 5:e2fe0990d8ad | 113 | |
Antulius | 5:e2fe0990d8ad | 114 | while (true) // El Lazo del Programa principal está aquí !!! |
Antulius | 5:e2fe0990d8ad | 115 | { |
Antulius | 5:e2fe0990d8ad | 116 | Blinking_Led(); // Parapadeo del LED por Software |
Antulius | 5:e2fe0990d8ad | 117 | pwm1 = pot1.read(); // Lee el Potenciometro y mueve el Servo |
Antulius | 5:e2fe0990d8ad | 118 | terminal.printf("Blink \r\n"); |
Antulius | 5:e2fe0990d8ad | 119 | } |
Antulius | 0:9f7581d1af6f | 120 | } |
Antulius | 0:9f7581d1af6f | 121 | /* END main */ |
Antulius | 0:9f7581d1af6f | 122 | |
Antulius | 0:9f7581d1af6f | 123 | /* |
Antulius | 0:9f7581d1af6f | 124 | ................................................................................ |
Antulius | 0:9f7581d1af6f | 125 | : Rutinas de los Vectores de Interrupción |
Antulius | 0:9f7581d1af6f | 126 | ................................................................................ |
Antulius | 0:9f7581d1af6f | 127 | */ |
Antulius | 0:9f7581d1af6f | 128 | // Las Rutinas de Atención a Interrupciones van aquí ! |
Antulius | 5:e2fe0990d8ad | 129 | /* |
Antulius | 5:e2fe0990d8ad | 130 | ** =================================================================== |
Antulius | 5:e2fe0990d8ad | 131 | ** Vector : TimerInt_OnInterrupt() |
Antulius | 5:e2fe0990d8ad | 132 | */ |
Antulius | 5:e2fe0990d8ad | 133 | /*! |
Antulius | 5:e2fe0990d8ad | 134 | ** @brief |
Antulius | 5:e2fe0990d8ad | 135 | ** Called after Ticker is done, [Interrupt service/event] |
Antulius | 5:e2fe0990d8ad | 136 | ** and it is enabled: |
Antulius | 5:e2fe0990d8ad | 137 | ** TimerInt.attach_us(&TimerInt_OnInterrupt, Ticker_Rate); |
Antulius | 5:e2fe0990d8ad | 138 | ** the event is enabled and will be executed every [Ticker_Rate] |
Antulius | 5:e2fe0990d8ad | 139 | ** @param |
Antulius | 5:e2fe0990d8ad | 140 | ** UserDataPtr - Pointer to the user or |
Antulius | 5:e2fe0990d8ad | 141 | ** RTOS specific data. The pointer is passed |
Antulius | 5:e2fe0990d8ad | 142 | ** as the parameter of Init method. |
Antulius | 5:e2fe0990d8ad | 143 | */ |
Antulius | 5:e2fe0990d8ad | 144 | /* ===================================================================*/ |
Antulius | 0:9f7581d1af6f | 145 | void TimerInt_OnInterrupt() // Rutina de Atención al Ticker |
Antulius | 0:9f7581d1af6f | 146 | { |
Antulius | 0:9f7581d1af6f | 147 | counter--; // Aquí va la Rutina de Servicio ! |
Antulius | 0:9f7581d1af6f | 148 | if (!counter) |
Antulius | 0:9f7581d1af6f | 149 | { |
Antulius | 0:9f7581d1af6f | 150 | terminal.printf("Counter Finish! \r\n"); |
Antulius | 0:9f7581d1af6f | 151 | led_monitor = !led_monitor; // Parapadeo del LED por Interrupción (LED Toggled) |
Antulius | 4:e1e547c34929 | 152 | counter = Rate; // Restablece el contador, Le asigna el periodo de 0.5ms (Rate=500) |
Antulius | 0:9f7581d1af6f | 153 | } |
Antulius | 0:9f7581d1af6f | 154 | } |
Antulius | 0:9f7581d1af6f | 155 | /* END Events */ |
Antulius | 0:9f7581d1af6f | 156 | /* |
Antulius | 0:9f7581d1af6f | 157 | ________________________________________________________________________________ |
Antulius | 0:9f7581d1af6f | 158 | | |
Antulius | 0:9f7581d1af6f | 159 | | Funciones Prototipo |
Antulius | 0:9f7581d1af6f | 160 | |_______________________________________________________________________________ |
Antulius | 0:9f7581d1af6f | 161 | */ |
Antulius | 0:9f7581d1af6f | 162 | // Las Funciones Prototipo van aquí ! |
Antulius | 5:e2fe0990d8ad | 163 | /* |
Antulius | 5:e2fe0990d8ad | 164 | |-------------------------------------------------- |
Antulius | 5:e2fe0990d8ad | 165 | | Función Blinking_Led() |
Antulius | 5:e2fe0990d8ad | 166 | |-------------------------------------------------- |
Antulius | 5:e2fe0990d8ad | 167 | */ |
Antulius | 0:9f7581d1af6f | 168 | void Blinking_Led() // Software Blinking routine for LED |
Antulius | 0:9f7581d1af6f | 169 | { |
Antulius | 0:9f7581d1af6f | 170 | // The on-board LED is connected, via a resistor, to +3.3V (not to GND). |
Antulius | 0:9f7581d1af6f | 171 | // So to turn the LED on or off we have to set it to 0 or 1 respectively |
Antulius | 0:9f7581d1af6f | 172 | led_testigo = 1; // turn the LED on (using Positive Logic) |
Antulius | 0:9f7581d1af6f | 173 | wait_ms(200); // 200 millisecond |
Antulius | 0:9f7581d1af6f | 174 | led_testigo = 0; // turn the LED off (using Positive Logic) |
Antulius | 0:9f7581d1af6f | 175 | wait_ms(1000); // 1000 millisecond |
Antulius | 0:9f7581d1af6f | 176 | } |
Antulius | 5:e2fe0990d8ad | 177 | /* |
Antulius | 5:e2fe0990d8ad | 178 | |-------------------------------------------------- |
Antulius | 5:e2fe0990d8ad | 179 | | Función clear_screen() |
Antulius | 5:e2fe0990d8ad | 180 | |-------------------------------------------------- |
Antulius | 5:e2fe0990d8ad | 181 | */ |
Antulius | 5:e2fe0990d8ad | 182 | void Clear_Screen() |
Antulius | 5:e2fe0990d8ad | 183 | { |
Antulius | 5:e2fe0990d8ad | 184 | // ANSI Terminal Commands |
Antulius | 5:e2fe0990d8ad | 185 | terminal.printf("\x1B[2J"); // secuencia de Escape \e1B[2J |
Antulius | 5:e2fe0990d8ad | 186 | terminal.printf("\x1B[H"); // secuencia de Escape \e1B[H |
Antulius | 5:e2fe0990d8ad | 187 | } |
Antulius | 5:e2fe0990d8ad | 188 | /* |
Antulius | 5:e2fe0990d8ad | 189 | |-------------------------------------------------- |
Antulius | 5:e2fe0990d8ad | 190 | | Función Buzzer_Beep() |
Antulius | 5:e2fe0990d8ad | 191 | |-------------------------------------------------- |
Antulius | 5:e2fe0990d8ad | 192 | */ |
Antulius | 5:e2fe0990d8ad | 193 | void Buzzer_Beep() // Software routine for Buzzer Beep |
Antulius | 5:e2fe0990d8ad | 194 | { |
Antulius | 5:e2fe0990d8ad | 195 | terminal.printf("Testing Buzzer... \n\r"); |
Antulius | 5:e2fe0990d8ad | 196 | buzzer = Buzz_On; |
Antulius | 5:e2fe0990d8ad | 197 | wait_ms(750); |
Antulius | 5:e2fe0990d8ad | 198 | buzzer = Buzz_Off; |
Antulius | 5:e2fe0990d8ad | 199 | wait_ms(125); |
Antulius | 5:e2fe0990d8ad | 200 | buzzer = Buzz_On; |
Antulius | 5:e2fe0990d8ad | 201 | wait_ms(250); |
Antulius | 5:e2fe0990d8ad | 202 | buzzer = Buzz_Off; |
Antulius | 5:e2fe0990d8ad | 203 | wait_ms(125); |
Antulius | 5:e2fe0990d8ad | 204 | buzzer = Buzz_On; |
Antulius | 5:e2fe0990d8ad | 205 | wait_ms(500); |
Antulius | 5:e2fe0990d8ad | 206 | buzzer = Buzz_Off; |
Antulius | 5:e2fe0990d8ad | 207 | terminal.printf("Buzzer OK ! \n\r"); |
Antulius | 5:e2fe0990d8ad | 208 | } |
Antulius | 0:9f7581d1af6f | 209 | /* END functions */ |
Antulius | 0:9f7581d1af6f | 210 | |
Antulius | 0:9f7581d1af6f | 211 | /* END program */ |
Antulius | 0:9f7581d1af6f | 212 | |
Antulius | 0:9f7581d1af6f | 213 | /*+----------------------------------------------------------------------------- |
Antulius | 1:c0ed6c52c441 | 214 | *+ La documentación va aquí!: |
Antulius | 1:c0ed6c52c441 | 215 | *+----------------------------------------------------------------------------- |
Antulius | 0:9f7581d1af6f | 216 | *+ Conexión al Led Testigo: |
Antulius | 0:9f7581d1af6f | 217 | *+ |
Antulius | 0:9f7581d1af6f | 218 | *+ Los leds se pueden conectar a cualquier pin que se declare como DigitalOut. |
Antulius | 0:9f7581d1af6f | 219 | *+ El dispositivo puede drenar hasta 20ma por todas sus salidas a un voltaje de |
Antulius | 0:9f7581d1af6f | 220 | *+ 3.3V, pero se recomienda no exceder de 1mA por salida. |
Antulius | 0:9f7581d1af6f | 221 | *+ Esto se logra poniendo una resistencia limitadora de mínimo 330 Ohms. |
Antulius | 0:9f7581d1af6f | 222 | *+ |
Antulius | 0:9f7581d1af6f | 223 | *+ 3.3V o 5V |
Antulius | 0:9f7581d1af6f | 224 | *+ O |
Antulius | 0:9f7581d1af6f | 225 | *+ | |
Antulius | 0:9f7581d1af6f | 226 | *+ | |
Antulius | 0:9f7581d1af6f | 227 | *+ / |
Antulius | 0:9f7581d1af6f | 228 | *+ \ 1K |
Antulius | 0:9f7581d1af6f | 229 | *+ / |
Antulius | 0:9f7581d1af6f | 230 | *+ \ UTILIZANDO LÓGICA NEGATIVA |
Antulius | 0:9f7581d1af6f | 231 | *+ | |
Antulius | 0:9f7581d1af6f | 232 | *+ ___|___ |
Antulius | 0:9f7581d1af6f | 233 | *+ \ / |
Antulius | 0:9f7581d1af6f | 234 | *+ \ / |
Antulius | 0:9f7581d1af6f | 235 | *+ \ / |
Antulius | 0:9f7581d1af6f | 236 | *+ __\/__ |
Antulius | 0:9f7581d1af6f | 237 | *+ | |
Antulius | 0:9f7581d1af6f | 238 | *+ |__________________________ PIN (Digital Out) |
Antulius | 0:9f7581d1af6f | 239 | *+ |
Antulius | 0:9f7581d1af6f | 240 | *+ |
Antulius | 0:9f7581d1af6f | 241 | *+ |
Antulius | 0:9f7581d1af6f | 242 | *+ |
Antulius | 0:9f7581d1af6f | 243 | *+ 1K |
Antulius | 0:9f7581d1af6f | 244 | *+ |
Antulius | 0:9f7581d1af6f | 245 | *+ _________/\ /\ /\ _____ PIN (Digital Out) |
Antulius | 0:9f7581d1af6f | 246 | *+ | \/ \/ \/ |
Antulius | 0:9f7581d1af6f | 247 | *+ | |
Antulius | 0:9f7581d1af6f | 248 | *+ | |
Antulius | 0:9f7581d1af6f | 249 | *+ ___|___ |
Antulius | 0:9f7581d1af6f | 250 | *+ \ / |
Antulius | 0:9f7581d1af6f | 251 | *+ \ / |
Antulius | 0:9f7581d1af6f | 252 | *+ \ / UTILIZANDO LÓGICA POSITIVA |
Antulius | 0:9f7581d1af6f | 253 | *+ __\/__ |
Antulius | 0:9f7581d1af6f | 254 | *+ | |
Antulius | 0:9f7581d1af6f | 255 | *+ | |
Antulius | 0:9f7581d1af6f | 256 | *+ | |
Antulius | 0:9f7581d1af6f | 257 | *+ ___|___ |
Antulius | 0:9f7581d1af6f | 258 | *+ _____ |
Antulius | 0:9f7581d1af6f | 259 | *+ ___ |
Antulius | 0:9f7581d1af6f | 260 | *+ _ |
Antulius | 0:9f7581d1af6f | 261 | *+ |
Antulius | 0:9f7581d1af6f | 262 | *+ GND |
Antulius | 0:9f7581d1af6f | 263 | *+ |
Antulius | 0:9f7581d1af6f | 264 | *+----------------------------------------------------------------------------* |
Antulius | 0:9f7581d1af6f | 265 | *+ |
Antulius | 0:9f7581d1af6f | 266 | *+ Powered by |
Antulius | 0:9f7581d1af6f | 267 | *+ |
Antulius | 0:9f7581d1af6f | 268 | *+ T H E A N T U L I U ' S T E A M R&D Unltd |
Antulius | 0:9f7581d1af6f | 269 | *+ |
Antulius | 0:9f7581d1af6f | 270 | *+ Research, Development, Systems, Equipment, Support & Spare Parts. |
Antulius | 0:9f7581d1af6f | 271 | *+ (C) Copyright 1989-2019, All Rights Reserved |
Antulius | 0:9f7581d1af6f | 272 | *+ |
Antulius | 0:9f7581d1af6f | 273 | *+ Welcome to The Beaners Proyect Community! |
Antulius | 0:9f7581d1af6f | 274 | *+----------------------------------------------------------------------------*/ |
Antulius | 0:9f7581d1af6f | 275 | |
Antulius | 3:1ccbb37e3828 | 276 | /* END documentation */ |
Antulius | 3:1ccbb37e3828 | 277 | |
Antulius | 0:9f7581d1af6f | 278 | /* END Mbed */ |