stm32_esimez / Mbed 2 deprecated STM32F103C8_Hola_Mundo

Dependencies:   mbed

Revision:
3:ab98286e7d09
Parent:
2:e89eada3e6eb
--- a/main.cpp	Sun Jun 21 02:48:32 2020 +0000
+++ b/main.cpp	Sun Feb 27 20:54:12 2022 +0000
@@ -9,6 +9,7 @@
 **    Fecha/Hora     : 18-12-2019, 11:48, # CodeGen: 0
 **    Descripción    :
 **         Este proyecto muestra la configuración y uso de la Terminal Serial
+**         utilizando las secuencias de ESCape
 **         This module contains user's application code.
 **   Componentes     : Serial, etc .
 **   Configuraciones : Se puede seleccionar entre diferentes velocidades de 
@@ -43,17 +44,21 @@
 :  Definiciones
 :...............................................................................
 */
-#define on              0               // Estado para boton presionado
-#define off             1               // Estado para boton sin presionar
-#define hold            2               // Estado para boton mantenido
-#define release         3               // Estado para boton liberado
-#define FALSE           0               // Estado FALSO
-#define TRUE            1               // Estado VERDADERO
-#define Baud_Rate       115200          // Velocidad de Transmisión (Bauds)
-                                        // Velocidades Permitidas:
-                                        // 300, 600, 1200, 2400, 4800, 9600,
-                                        // 14400, 19600, 28800, 38400, 57600
-                                        // 115200, 230400
+#define LED_ON          0           // Estado para el Led Encendido
+#define LED_OFF         1           // Estado para el Led Apagado
+#define BUZZ_ON         1           // Estado para Buzzer Encendido
+#define BUZZ_OFF        0           // Estado para Buzzer Apagado
+#define ON              0           // Estado para boton presionado
+#define OFF             1           // Estado para boton sin presionar
+#define HOLD            2           // Estado para boton mantenido
+#define RELEASE         3           // Estado para boton liberado
+#define FALSE           0           // Estado FALSO
+#define TRUE            1           // Estado VERDADERO
+#define BAUD_RATE       115200      // Velocidad de Transmisión (Bauds)
+                                    // Velocidades Permitidas:
+                                    // 300, 600, 1200, 2400, 4800, 9600,
+                                    // 14400, 19600, 28800, 38400, 57600
+                                    // 115200, 230400
 /*
 +-------------------------------------------------------------------------------
 |  Configuración de Puertos 
@@ -61,17 +66,20 @@
 */
 
 // *****    Host PC Terminal Communication channels
-Serial      terminal (PA_2, PA_3);          // Tx, Rx - Terminal Serial (TTL Level) (Default Rate: 9600)
+Serial      terminal (PA_2, PA_3);          // Tx2, Rx2 - Terminal Serial (TTL Level) (Default Rate: 9600)
 //Serial      terminal(USBTX, USBRX,115200);  // Tx, Rx, Baud Rate - Terminal Serial por USB @ 115,200 Bauds
-//Serial      terminal(PA_9, PA_10);          // Tx, Rx  Using MAX3232 or BlueTooth
+//Serial      terminal(PA_9, PA_10);          // Tx, Rx  Using MAX3232
+// *****    Bluetooth to Host Cell Phone Communication channels
+//Serial      Bluetooth   (PB_10, PB_11); // Inicializa la Comunicación Serial UART_3 sobre Bluetooth (Tx, Rx)
+//DigitalOut  Key_pin     (PB_1,HIGH);    // Inicializa el KEY pin o STATE pin (AT Commnands)
 /*
 +-------------------------------------------------------------------------------
 |  Variables Globales de Usuario 
 +-------------------------------------------------------------------------------
 */
-uint8_t  ch;
-uint16_t uni;
-uint16_t wchar;
+uint8_t  v_ch;
+uint16_t v_uni;
+uint16_t v_wchar;
 /*
 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
 |  Definición de Funciones Prototipo y Rutinas de los Vectores de Interrupción
@@ -89,12 +97,11 @@
 */
 int main()          
 {                   // Inicialización de variables, puertos e interrupciones
- confSysClock();     // Configure system clock (72MHz HSE clock, 48MHz USB clock)
  Setup();  
-terminal.printf ("\tInstituto Politecnico Nacional\n\r");
+ terminal.printf ("\tInstituto Politecnico Nacional\n\r");
  terminal.printf ("ESCUELA SUPERIOR DE INGENIERIA MECANICA Y ELECTRICA\n\r");
  printf ("\vHola Mundo!\r");
-  printf ("\v\t\vH\ne\nl\nl\no\n \nW\no\nr\nl\nd\n!\r");
+ printf ("\v\t\vH\ne\nl\nl\no\n \nW\no\nr\nl\nd\n!\r");
  printf ("\n\nPresiona cualquier tecla para continuar...");    
  char opcion = terminal.getc();
      
@@ -110,17 +117,17 @@
     printf ("\n\r Pulse cualquier tecla para continuar!\r");   
     opcion = terminal.getc();
     terminal.putc(opcion);
-    uint8_t attr;
-    uint8_t bg;
-    uint8_t fg;
+    uint8_t v_attr;
+    uint8_t v_bg;
+    uint8_t v_fg;
     printf("\n\v\t\t\"ATRIBUTOS DE COLORES\"\r\n");    
-    for (attr=0;attr<2;attr++)
+    for (v_attr=0;v_attr<2;v_attr++)
     {
-        for (bg=30;bg<38;bg++)
+        for (v_bg=30;v_bg<38;v_bg++)
         { 
-            for (fg=40;fg<48;fg++)
+            for (v_fg=40;v_fg<48;v_fg++)
             {
-                printf ("\e[%d;%d;%dm%d,%d,%d\e[0m ",attr,bg,fg,attr,bg,fg);
+                printf ("\e[%d;%d;%dm%d,%d,%d\e[0m ",v_attr,v_bg,v_fg,v_attr,v_bg,v_fg);
             }
             printf("\r\n");
         }   
@@ -134,27 +141,29 @@
     printf("\r\n");
 
         /* Imprime los caracteres ASCII */
-    for (ch = 0; ch < UCHAR_MAX; ch++)
+    for (v_ch = 0; v_ch < UCHAR_MAX; v_ch++)
     {
-        /* ch == ASCII */
-        printf("\e[1;37;42mHex:\e[1;33;42m %02X \e[1;37;46mASCII:\e[1;33;46m%3d \e[1;37;47mCaracter:\e[1;33;44m %c \033[0m\r\n", ch, ch, ch);
+        /* v_ch == ASCII */
+        printf("\e[1;37;42mHex:\e[1;33;42m %02X \e[1;37;46mASCII:\e[1;33;46m%3d \e[1;37;47mCaracter:\e[1;33;44m %c \033[0m\r\n", v_ch, v_ch, v_ch);
         wait(0.5);
     }
+
+    terminal.printf("\a\f\n\r");      //\e[033c
+        
         /* Imprime los caracteres Unicode */
-//    wchar_t star = 0x2605;
+//    v_wchar_t star = 0x2605;
 //    wprintf(L"%c\n", star);
 /*
-    for (uni = 0400; uni < 2000; uni++)
+    for (v_uni = 0400; v_uni < 2000; v_uni++)
     {
-        wprintf(L"%c\n", uni);
-        for (ch = 0; ch < UCHAR_MAX; ch++)
-        /* ch == Unicode */
-//        printf("%c ==> \\%u\n\r", ch, ch);
-//        printf ("\e[1;37;41mCaracter: %c Unicode %d ===> \e[1;33;41m\\%lc \033[0m\n\r",ch, uni, uni );
+        wprintf(L"%c\n", v_uni);
+        for (v_uni = 0; v_uni < UCHAR_MAX; v_uni++)
+        v_uni == Unicode;
+//        printf("%c ==> \\%u\n\r", v_uni, v_uni);
+//        printf ("\e[1;37;41mCaracter: %c Unicode %d ===> \e[1;33;41m\\%lc \033[0m\n\r",v_uni, v_uni, v_uni );
 //        wait(0.5);
 //    }
-    
-    terminal.printf("\a\f\n\r");      //\e[033c    
+*/    
  }
 }
 /* END main */
@@ -175,18 +184,61 @@
                 // Las Funciones Prototipo van aquí !
 void Setup()
 {
-  terminal.baud(Baud_Rate);         // Se configura la velocidad de transmisión 
+  confSysClock();     // Configure system clock (72MHz HSE clock, 48MHz USB clock)
+  terminal.baud(BAUD_RATE);     // Se configura la velocidad de transmisión 
   terminal.printf("System is Wake Up!.\n\r"); // e inicia la comunicación serial.
-}                
+}                                             // con la Terminal (PC)
 
 /* END routines */ 
- 
+
 /* END program */                
 
-/*+-----------------------------------------------------------------------------  
-*+ La documentación va aquí!:
-+-------------------------------------------------------------------------------
-|                SECUENCIAS DE ESCAPE PARA LA TERMINAL SERIAL
+/*
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+********************************************************************************
+*+
+*+                  D O C U M E N T A C I Ó N
+*+
+********************************************************************************
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+|
+|                  La documentación va aquí!:
+|
+|------------------------------------------------------------------------------- 
+|                   IDENTIFICADORES
+|------------------------------------------------------------------------------- 
+|
+|  prefijo      signifcado              uso                  
+|   v_          variable  (var)         v_nombre_variable   
+|   c_          constante (const)       c_nombre_constante
+|   i_          indice    (index)       i_nombre_indice 
+|   p_          apuntador (pointer)     p_nombre_apuntador
+|   l_          etiqueta  (label)       l_nombre_etiqueta
+|   f_          función   (function)    f_nombre_funcion
+|      
+|-------------------------------------------------------------------------------      
+|                   CONEXIÓN A LA TERMINAL SERIAL
+|------------------------------------------------------------------------------- 
+| 
+|   Los Transeptores recomedados para se pueden conectar a los siguientes pines
+|   de las UART's que posee la Bluepill por medio del siguiente conexionado.
+| 
+|   UART1   UART2   UART3      CABLE        CP2102  PL2303  CH340G  FT232RL  
+|   PA_9    PA_2    PB_10   Tx  ------> Rx    3       2       2        3 
+|   PA_10   PA_3    PB_11   Rx  <------ Tx    4       3       3        2
+|                           3V  ------  3V    5       5       4        1
+|                           GND ------  GND   2       1       1        4
+|
+|-------------------------------------------------------------------------------
+|
+................................................................................ 
+:    
+:               S E C U E N C I A S     D E      E S C A P E
+:
+................................................................................
+|
+|
+|                SECUENCIAS DE ESCAPE EN "C" PARA LA TERMINAL SERIAL
 |
 | SECUENCIA         VALOR                       DESCRIPCIÓN
 |
@@ -224,6 +276,9 @@
 | – \e[start-ANSI-code\e]
 | – \e[end-ANSI-code\e]
 |
+|
+|      SECUENCIAS DE ESCAPE PARA MODIFICAR LOS COLORES DE LA TERMINAL SERIAL
+|
 |  tipo de secuencia de color:
 |
 |    3/4 bit
@@ -231,98 +286,115 @@
 |    24 bits
 |
 | Antes de sumergirte en estos colores, debes conocer 4 modos con estos códigos:
-| 1. modo de color
+|
+| 1. modo de color  (lighting)
 |
-| Modifica el estilo del color NO el texto. Por ejemplo, haz que el color sea más claro o más oscuro.
+| Modifica el estilo del color, NO el texto. 
+| Por ejemplo, haz que el color sea más claro o más oscuro.
 |
 |    0 reinicio
 |    1; Más ligero de lo normal
 |    2; más oscuro de lo normal
 |
 | Este modo no es compatible ampliamente. Es totalmente compatible con Gnome-Terminal.
+|
 | 2. modo de texto
 |
 | Este modo es para modificar el estilo del texto NO el color.
 |
-|    3; itálico
-|    4; subrayar
-|    5; parpadeando (lento)
-|    6; parpadeando (rápido) 
-|    7; marcha atrás
-|    8; esconder
-|    9; tachar
+|   3; itálico
+|   4; subrayar
+|   5; parpadeando (lento)
+|   6; parpadeando (rápido) 
+|   7; marcha atrás
+|   8; esconder
+|   9; tachar
 |
 | y son casi compatibles.
 | Por ejemplo, KDE-Konsole admite 5; pero Gnome-Terminal no lo hace y 
 | Gnome es compatible con 8; pero KDE no.
-| 3. modo de primer plano
+|
+| 3. modo de primer plano (Foreground)
 | 
 | Este modo es para colorear el primer plano.
-| 4. modo de fondo
+|
+| 4. modo de fondo  (Background)
 |
 | Este modo es para colorear el fondo. 
 |
-ECMA-48 Pone modo Gráfico
-       La secuencia ECMA-48 SGR  ESC [ <parámetros> m establece los atributos de
-       la pantalla.  Se pueden poner varios atributos en la misma secuencia.
-
-       par   resultado
-       0     restablece todos los atributos a sus valores predeterminados
-       1     pone negrillas
-       2     pone medio brillo (simulado con color en una pantalla a color)
-       4     pone subrayado (simulado con color en una pantalla a color)
-             (los colores para simular disminución o subrayado se ponen con
-             ESC ] ...)
-       5     pone intermitencia
-       7     pone vídeo inverso
-       10    restaura asociación seleccionada, indicador de control de
-             pantalla y cambia el indicador meta
-       11    selecciona no asociación, pone indicador de control de
-             pantalla, restaura indicador de cambio meta
-       12    selecciona no asociación, pone indicador de control de
-             pantalla, pone indicador de cambio meta (que hace que el bit
-             más alto de un byte cambie antes de que se haga la traducción
-             de la tabla de asociación.)
-       21    pone intensidad normal (esto no es compatible con ECMA-48)
-
-       22    pone intensidad normal
-       24    quita subrayado
-       25    quita intermitencia
-       27    quita vídeo inverso
-       30    pone negro
-       31    pone rojo
-       32    pone verde
-       33    pone marrón
-       34    pone azul
-       35    pone rosa
-       36    pone celeste
-       37    pone blanco
-       38    pone subrayado, color predeterminado
-       39    quita subrayado, pone color predeterminado
-       40    pone negro de fondo
-       41    pone rojo de fondo
-       42    pone verde de fondo
-       43    pone marrón de fondo
-       44    pone azul de fondo
-       45    pone rosa de fondo
-       46    pone celeste de fondo
-       47    pone blanco de fondo
-       49    pone el color de fondo predeterminado
-
+|
+|                SECUENCIAS DE ESCAPE ECMA-48
+|
+| ECMA-48 Pone modo Gráfico
+|       La secuencia ECMA-48 SGR  ESC [ <parámetros> m establece los atributos de
+|       la pantalla.  Se pueden poner varios atributos en la misma secuencia.
+|
+|     param   Resultado
+|       0     restablece todos los atributos a sus valores predeterminados
+|       1     pone negrillas
+|       2     pone medio brillo (simulado con color en una pantalla a color)
+|       4     pone subrayado (simulado con color en una pantalla a color)
+|             (los colores para simular disminución o subrayado se ponen con
+|             ESC ] ...)
+|       5     pone intermitencia
+|       7     pone vídeo inverso
+|       10    restaura asociación seleccionada, indicador de control de
+|             pantalla y cambia el indicador meta
+|       11    selecciona no asociación, pone indicador de control de
+|             pantalla, restaura indicador de cambio meta
+|       12    selecciona no asociación, pone indicador de control de
+|             pantalla, pone indicador de cambio meta (que hace que el bit
+|             más alto de un byte cambie antes de que se haga la traducción
+|             de la tabla de asociación.)
+|       21    pone intensidad normal (esto no es compatible con ECMA-48)
+|
+|       22    pone intensidad normal
+|       24    quita subrayado
+|       25    quita intermitencia
+|       27    quita vídeo inverso
+|       30    pone negro
+|       31    pone rojo
+|       32    pone verde
+|       33    pone marrón
+|       34    pone azul
+|       35    pone rosa
+|       36    pone celeste
+|       37    pone blanco
+|       38    pone subrayado, color predeterminado
+|       39    quita subrayado, pone color predeterminado
+|       40    pone negro de fondo
+|       41    pone rojo de fondo
+|       42    pone verde de fondo
+|       43    pone marrón de fondo
+|       44    pone azul de fondo
+|       45    pone rosa de fondo
+|       46    pone celeste de fondo
+|       47    pone blanco de fondo
+|       49    pone el color de fondo predeterminado
+|
 | Tambien consultar:
 | https://en.wikipedia.org/wiki/ANSI_escape_code
 | https://es.wikipedia.org/wiki/C%C3%B3digo_escape_ANSI
 | http://www.braun-home.net/michael/info/misc/VT100_commands.htm
 | https://www.enmimaquinafunciona.com/pregunta/170760/secuencias-de-escape-terminales-en-la-pantalla-gnu
 | http://softwarelivre.org/terceiro/blog/a-visual-cheat-sheet-for-ansi-color-codes
-+--------------------------------------------------------------------------------
+| https://unicode-table.com/es/alphabets/spanish/
++-------------------------------------------------------------------------------
+|
+|                               EJERCICIO
+|
+| 1.-   Crear la función: 
+|       void Caratula()     y
+| 2.-   Utilizando printf y las secuencias de escape, crear una Carátula de 
+|       presentación con los datos personales y escolares para ser ejecutada al 
+|       inicio del programa. 
 |
 |                               EXAMEN
 |
-| 1.-   Utilizando printf y las secuencias de escape, crear una Carátula de 
-|       prentación con los datos personales y escolares. 
+| 1.-   Crear la Rutina para desplegar los caracteres UNICODE correspondientes 
+|       al idioma Español  
 |
-+--------------------------------------------------------------------------------
++-------------------------------------------------------------------------------
 |
 |                     T H E     A N T U L I U S   T E A M
 |  Research, Development, Systems Equipment, Support & Spare Parts    I n c.