stm32_esimez / Mbed 2 deprecated STM32F103C8_Adivina

Dependencies:   mbed

Files at this revision

API Documentation at this revision

Comitter:
Antulius
Date:
Sun Jun 21 05:15:50 2020 +0000
Parent:
0:f680c41c1640
Commit message:
SSTM32F103C8T6_Adivina. Programa para probar la Terminal Serial de la Tarjeta "Blue Pill" e interactuar con el Usuario.

Changed in this revision

BluePill/PinNames.h Show annotated file Show diff for this revision Revisions of this file
BluePill/SysClockConf.cpp Show annotated file Show diff for this revision Revisions of this file
BluePill/SysClockConf.h Show annotated file Show diff for this revision Revisions of this file
BluePill/stm32f103c8t6.h Show annotated file Show diff for this revision Revisions of this file
PinNames.h Show diff for this revision Revisions of this file
SysClockConf.cpp Show diff for this revision Revisions of this file
SysClockConf.h Show diff for this revision Revisions of this file
main.cpp Show annotated file Show diff for this revision Revisions of this file
stm32f103c8t6.h Show diff for this revision Revisions of this file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/BluePill/PinNames.h	Sun Jun 21 05:15:50 2020 +0000
@@ -0,0 +1,201 @@
+/* mbed Microcontroller Library
+ *******************************************************************************
+ * Copyright (c) 2014, STMicroelectronics
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are met:
+ *
+ * 1. Redistributions of source code must retain the above copyright notice,
+ *    this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright notice,
+ *    this list of conditions and the following disclaimer in the documentation
+ *    and/or other materials provided with the distribution.
+ * 3. Neither the name of STMicroelectronics nor the names of its contributors
+ *    may be used to endorse or promote products derived from this software
+ *    without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+ * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+ * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
+ * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
+ * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+ * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+ * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ *******************************************************************************
+ 
+ */
+#ifndef MBED_PINNAMES_H
+#define MBED_PINNAMES_H
+
+#include "cmsis.h"
+#include "PinNamesTypes.h"
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+//UART to AMB8826
+#define TXD1      PA_9
+#define RXD1      PA_10
+#define CTS1      PA_11
+int baudRate = 115200;
+
+//UART to Silicon Labs CP210x
+#define TXD2      PA_2
+#define RXD2      PA_3
+
+//UART to FTDI
+#define TXD3      PB_10
+#define RXD3      PB_11
+
+//I2C
+#define I2C1_SCL  PB_6
+#define I2C1_SDA  PB_7
+
+#define I2C2_SCL  PB_10
+#define I2C2_SDA  PB_11
+
+//SPI
+#define SPI1_MOSI PA_7
+#define SPI1_MISO PA_6
+#define SPI1_SCLK PA_5
+#define SPI1_NSS1 PA_4
+#define SDsel     PA_4
+
+#define SPI2_MOSI PB_15
+#define SPI2_MISO PB_14
+#define SPI2_SCLK PB_13
+#define SPI2_NSS2 PB_12
+
+//CAN
+#define CAN1_RX   PA_11
+#define CAN1_TX   PA_12
+
+//USB   CDC
+#define USB_POS   PA_12
+#define USB_NEG   PA_11
+
+//ADC
+#define Uin       PA_1
+#define Ubatt     PA_0
+
+typedef enum {
+    // Not connected
+    NC = (int)0xFFFFFFFF,
+
+    // Ports
+    PA_0  = 0x00,
+    PA_1  = 0x01,
+    PA_2  = 0x02,
+    PA_3  = 0x03,
+    PA_4  = 0x04,
+    PA_5  = 0x05,
+    PA_6  = 0x06,
+    PA_7  = 0x07,
+    PA_8  = 0x08,
+    PA_9  = 0x09,
+    PA_10 = 0x0A,
+    PA_11 = 0x0B,
+    PA_12 = 0x0C,
+    PA_13 = NC,
+    PA_14 = NC,
+    PA_15 = 0x0F,
+
+    PB_0  = 0x10,
+    PB_1  = 0x11,
+    PB_2  = NC,
+    PB_3  = 0x13,
+    PB_4  = 0x14,
+    PB_5  = 0x15,
+    PB_6  = 0x16,
+    PB_7  = 0x17,
+    PB_8  = 0x18,
+    PB_9  = 0x19,
+    PB_10 = 0x1A,
+    PB_11 = 0x1B,
+    PB_12 = 0x1C,
+    PB_13 = 0x1D,
+    PB_14 = 0x1E,
+    PB_15 = 0x1F,
+
+    PC_0  = NC,
+    PC_1  = NC,
+    PC_2  = NC,
+    PC_3  = NC,
+    PC_4  = NC,
+    PC_5  = NC,
+    PC_6  = NC,
+    PC_7  = NC,
+    PC_8  = NC,
+    PC_9  = NC,
+    PC_10 = NC,
+    PC_11 = NC,
+    PC_12 = NC,
+    PC_13 = 0x2D,
+    PC_14 = 0x2E,
+    PC_15 = 0x2F,
+
+    PD_2  = NC,
+
+    // ADC internal channels
+    ADC_TEMP = 0xF0,
+    ADC_VREF = 0xF1,
+
+    // Arduino connector namings
+    A0          = PA_0,
+    A1          = PA_1,
+    A2          = PA_4,
+    A3          = PB_0,
+    A4          = NC,
+    A5          = NC,
+    D0          = PA_3,
+    D1          = PA_2,
+    D2          = PA_10,
+    D3          = PB_3,
+    D4          = PB_5,
+    D5          = PB_4,
+    D6          = PB_10,
+    D7          = PA_8,
+    D8          = PA_9,
+    D9          = NC,
+    D10         = PB_6,
+    D11         = PA_7,
+    D12         = PA_6,
+    D13         = PA_5,
+    D14         = PB_9,
+    D15         = PB_8,
+
+    // Generic signals namings
+    Red_Led     = NC,
+    Green_Led   = PC_13,
+    Blue_Led    = NC,
+    LED1        = PC_13,
+    LED2        = NC,
+    LED3        = NC,
+    LED4        = NC,
+    USER_BUTTON = NC,    
+    SERIAL_TX   = PA_2,
+    SERIAL_RX   = PA_3,
+    USBTX       = PA_12,
+    USBRX       = PA_11,
+    CANRX       = PB_8,    
+    CANTX       = PB_9,
+    I2C_SCL     = PB_6,
+    I2C_SDA     = PB_7,
+    SPI_MOSI    = PA_7,
+    SPI_MISO    = PA_6,
+    SPI_SCK     = PA_5,
+    SPI_CS      = PA_4,
+    TRACE_SWO   = PB_3,
+    SWO         = PB_3
+} PinName;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/BluePill/SysClockConf.cpp	Sun Jun 21 05:15:50 2020 +0000
@@ -0,0 +1,56 @@
+/*
+  ******************************************************************************
+  * @file    SysClockConf.c
+  * @version 
+  * @date    05-July-2016
+  * @brief   System Clock configuration for STM32F103C8T6
+  *****************************************************************************
+  *
+  * All rights reserved.
+
+ This program is free software: you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation, either version 3 of the License, or
+ (at your option) any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program.  If not, see <http://www.gnu.org/licenses/>.
+  */
+
+#include "SysClockConf.h"
+#include "mbed.h"
+
+void HSE_SystemClock_Config(void) {
+    RCC_OscInitTypeDef        RCC_OscInitStruct;
+    RCC_ClkInitTypeDef        RCC_ClkInitStruct;
+    RCC_PeriphCLKInitTypeDef  PeriphClkInit;
+
+    RCC_OscInitStruct.OscillatorType = RCC_OSCILLATORTYPE_HSE;
+    RCC_OscInitStruct.HSEState = RCC_HSE_ON;
+    RCC_OscInitStruct.HSEPredivValue = RCC_HSE_PREDIV_DIV1;
+    RCC_OscInitStruct.PLL.PLLState = RCC_PLL_ON;
+    RCC_OscInitStruct.PLL.PLLSource = RCC_PLLSOURCE_HSE;
+    RCC_OscInitStruct.PLL.PLLMUL = RCC_PLL_MUL9;
+    HAL_RCC_OscConfig(&RCC_OscInitStruct);
+    RCC_ClkInitStruct.ClockType = RCC_CLOCKTYPE_HCLK|RCC_CLOCKTYPE_SYSCLK|RCC_CLOCKTYPE_PCLK1|RCC_CLOCKTYPE_PCLK2;
+    RCC_ClkInitStruct.SYSCLKSource = RCC_SYSCLKSOURCE_PLLCLK;
+    RCC_ClkInitStruct.AHBCLKDivider = RCC_SYSCLK_DIV1;
+    RCC_ClkInitStruct.APB1CLKDivider = RCC_HCLK_DIV2;
+    RCC_ClkInitStruct.APB2CLKDivider = RCC_HCLK_DIV1;
+    HAL_RCC_ClockConfig(&RCC_ClkInitStruct, FLASH_LATENCY_2);
+    PeriphClkInit.PeriphClockSelection = RCC_PERIPHCLK_ADC|RCC_PERIPHCLK_USB;
+    PeriphClkInit.AdcClockSelection = RCC_ADCPCLK2_DIV6;
+    PeriphClkInit.UsbClockSelection = RCC_USBCLKSOURCE_PLL_DIV1_5;
+    HAL_RCCEx_PeriphCLKConfig(&PeriphClkInit);
+}
+
+void confSysClock(void) {
+    HAL_RCC_DeInit();
+    HSE_SystemClock_Config();
+    SystemCoreClockUpdate();
+}
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/BluePill/SysClockConf.h	Sun Jun 21 05:15:50 2020 +0000
@@ -0,0 +1,7 @@
+#ifndef CONFSYSCLOCK_H
+#define CONFSYSCLOCK_H
+
+#pragma once
+void confSysClock(void);
+
+#endif
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/BluePill/stm32f103c8t6.h	Sun Jun 21 05:15:50 2020 +0000
@@ -0,0 +1,4 @@
+#pragma once
+#include "PinNames.h"
+#include "SysClockConf.h"
+
--- a/PinNames.h	Thu Sep 05 23:29:04 2019 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,155 +0,0 @@
-/* mbed Microcontroller Library
- *******************************************************************************
- * Copyright (c) 2014, STMicroelectronics
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are met:
- *
- * 1. Redistributions of source code must retain the above copyright notice,
- *    this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright notice,
- *    this list of conditions and the following disclaimer in the documentation
- *    and/or other materials provided with the distribution.
- * 3. Neither the name of STMicroelectronics nor the names of its contributors
- *    may be used to endorse or promote products derived from this software
- *    without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
- * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
- * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
- * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
- * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
- * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
- * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *******************************************************************************
- 
- */
-#ifndef MBED_PINNAMES_H
-#define MBED_PINNAMES_H
-
-#include "cmsis.h"
-#include "PinNamesTypes.h"
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-typedef enum {
-    // Not connected
-    NC = (int)0xFFFFFFFF,
-
-    // Ports
-    PA_0  = 0x00,
-    PA_1  = 0x01,
-    PA_2  = 0x02,
-    PA_3  = 0x03,
-    PA_4  = 0x04,
-    PA_5  = 0x05,
-    PA_6  = 0x06,
-    PA_7  = 0x07,
-    PA_8  = 0x08,
-    PA_9  = 0x09,
-    PA_10 = 0x0A,
-    PA_11 = 0x0B,
-    PA_12 = 0x0C,
-    PA_13 = NC,
-    PA_14 = NC,
-    PA_15 = 0x0F,
-
-    PB_0  = 0x10,
-    PB_1  = 0x11,
-    PB_2  = NC,
-    PB_3  = 0x13,
-    PB_4  = 0x14,
-    PB_5  = 0x15,
-    PB_6  = 0x16,
-    PB_7  = 0x17,
-    PB_8  = 0x18,
-    PB_9  = 0x19,
-    PB_10 = 0x1A,
-    PB_11 = 0x1B,
-    PB_12 = 0x1C,
-    PB_13 = 0x1D,
-    PB_14 = 0x1E,
-    PB_15 = 0x1F,
-
-    PC_0  = NC,
-    PC_1  = NC,
-    PC_2  = NC,
-    PC_3  = NC,
-    PC_4  = NC,
-    PC_5  = NC,
-    PC_6  = NC,
-    PC_7  = NC,
-    PC_8  = NC,
-    PC_9  = NC,
-    PC_10 = NC,
-    PC_11 = NC,
-    PC_12 = NC,
-    PC_13 = 0x2D,
-    PC_14 = 0x2E,
-    PC_15 = 0x2F,
-
-    PD_2  = NC,
-
-    // ADC internal channels
-    ADC_TEMP = 0xF0,
-    ADC_VREF = 0xF1,
-
-    // Arduino connector namings
-    A0          = PA_0,
-    A1          = PA_1,
-    A2          = PA_4,
-    A3          = PB_0,
-    A4          = NC,
-    A5          = NC,
-    D0          = PA_3,
-    D1          = PA_2,
-    D2          = PA_10,
-    D3          = PB_3,
-    D4          = PB_5,
-    D5          = PB_4,
-    D6          = PB_10,
-    D7          = PA_8,
-    D8          = PA_9,
-    D9          = NC,
-    D10         = PB_6,
-    D11         = PA_7,
-    D12         = PA_6,
-    D13         = PA_5,
-    D14         = PB_9,
-    D15         = PB_8,
-
-    // Generic signals namings
-    Red_Led     = NC,
-    Green_Led   = PC_13,
-    Blue_Led    = NC,
-    LED1        = PC_13,
-    LED2        = NC,
-    LED3        = NC,
-    LED4        = NC,
-    USER_BUTTON = NC,
-    SERIAL_TX   = PA_2,
-    SERIAL_RX   = PA_3,
-    USBTX       = PA_2,
-    USBRX       = PB_3,
-    CANRX       = PB_8,    
-    CANTX       = PB_9,
-    I2C_SCL     = PB_8,
-    I2C_SDA     = PB_9,
-    SPI_MOSI    = PA_7,
-    SPI_MISO    = PA_6,
-    SPI_SCK     = PA_5,
-    SPI_CS      = PB_6,
-    PWM_OUT     = PB_3
-} PinName;
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif
--- a/SysClockConf.cpp	Thu Sep 05 23:29:04 2019 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,56 +0,0 @@
-/*
-  ******************************************************************************
-  * @file    SysClockConf.c
-  * @version 
-  * @date    05-July-2016
-  * @brief   System Clock configuration for STM32F103C8T6
-  *****************************************************************************
-  *
-  * All rights reserved.
-
- This program is free software: you can redistribute it and/or modify
- it under the terms of the GNU General Public License as published by
- the Free Software Foundation, either version 3 of the License, or
- (at your option) any later version.
-
- This program is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- GNU General Public License for more details.
-
- You should have received a copy of the GNU General Public License
- along with this program.  If not, see <http://www.gnu.org/licenses/>.
-  */
-
-#include "SysClockConf.h"
-#include "mbed.h"
-
-void HSE_SystemClock_Config(void) {
-    RCC_OscInitTypeDef        RCC_OscInitStruct;
-    RCC_ClkInitTypeDef        RCC_ClkInitStruct;
-    RCC_PeriphCLKInitTypeDef  PeriphClkInit;
-
-    RCC_OscInitStruct.OscillatorType = RCC_OSCILLATORTYPE_HSE;
-    RCC_OscInitStruct.HSEState = RCC_HSE_ON;
-    RCC_OscInitStruct.HSEPredivValue = RCC_HSE_PREDIV_DIV1;
-    RCC_OscInitStruct.PLL.PLLState = RCC_PLL_ON;
-    RCC_OscInitStruct.PLL.PLLSource = RCC_PLLSOURCE_HSE;
-    RCC_OscInitStruct.PLL.PLLMUL = RCC_PLL_MUL9;
-    HAL_RCC_OscConfig(&RCC_OscInitStruct);
-    RCC_ClkInitStruct.ClockType = RCC_CLOCKTYPE_HCLK|RCC_CLOCKTYPE_SYSCLK|RCC_CLOCKTYPE_PCLK1|RCC_CLOCKTYPE_PCLK2;
-    RCC_ClkInitStruct.SYSCLKSource = RCC_SYSCLKSOURCE_PLLCLK;
-    RCC_ClkInitStruct.AHBCLKDivider = RCC_SYSCLK_DIV1;
-    RCC_ClkInitStruct.APB1CLKDivider = RCC_HCLK_DIV2;
-    RCC_ClkInitStruct.APB2CLKDivider = RCC_HCLK_DIV1;
-    HAL_RCC_ClockConfig(&RCC_ClkInitStruct, FLASH_LATENCY_2);
-    PeriphClkInit.PeriphClockSelection = RCC_PERIPHCLK_ADC|RCC_PERIPHCLK_USB;
-    PeriphClkInit.AdcClockSelection = RCC_ADCPCLK2_DIV6;
-    PeriphClkInit.UsbClockSelection = RCC_USBCLKSOURCE_PLL_DIV1_5;
-    HAL_RCCEx_PeriphCLKConfig(&PeriphClkInit);
-}
-
-void confSysClock(void) {
-    HAL_RCC_DeInit();
-    HSE_SystemClock_Config();
-    SystemCoreClockUpdate();
-}
\ No newline at end of file
--- a/SysClockConf.h	Thu Sep 05 23:29:04 2019 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,2 +0,0 @@
-#pragma once
-void confSysClock(void);
\ No newline at end of file
--- a/main.cpp	Thu Sep 05 23:29:04 2019 +0000
+++ b/main.cpp	Sun Jun 21 05:15:50 2020 +0000
@@ -2,12 +2,14 @@
 **    Archivo        : main.c
 **    Proyecto       : STM32-103C8_Adivina
 **    Procesador     : STM32F103C8
+**    Plataforma     : Blue Pill
 **    Herramienta    : Mbed
-**    Version        : Driver 01.01
-**    Compilador     : GNU C Compiler
-**    Fecha/Hora     : 14-07-2015, 11:48, # CodeGen: 0
+**    Compilador     : Mbed Online C Compiler
+**    Version        : Mbed-OS 5.15.0
+**    Fecha/Hora     : 18-12-2019, 11:48, # CodeG
 **    Descripción    :
 **         Este proyecto muestra la configuración y uso de la Terminal Serial
+**         para intercurar con el usuar a traves del juego de "Adivina el Número" 
 **         This module contains user's application code.
 **   Componentes     : Timer, etc .
 **   Configuraciones : Se puede seleccionar entre diferentes velocodades de 
@@ -41,20 +43,39 @@
 :  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 LED_Type        0           // Tipo de LED RGB: 0=Cátodo Común, 1=Ánodo Común
+#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 Buzz_Off        0           // Estado del Buzzer Apagado
+#define Buzz_On         1           // Estado del Buzzer Encendido
+#define Baud_Rate       115200      // Velocidad de Transmisión (Bauds)
+                                    // Velocidades Permitidas:
+                                    // 300, 600, 1200, 2400, 4800, 9600,
+                                    // 14400, 19600, 28800, 38400, 57600
+                                    // 115200, 230400
+#if Display_Type == 0               // Si el Led RGB es Cátodo Común
+#define led_on          1           // Estado para el Led encendido
+#define led_off         0           // Estado para el Led encendido
+#endif
+
+#if Display_Type == 1               // Si el Led RGB es Ánodo Común
+#define led_on          0           // Estado para el Led encendido
+#define led_off         1           // Estado para el Led encendido
+#endif
 /*
 +-------------------------------------------------------------------------------
 |  Configuración de Puertos 
 +-------------------------------------------------------------------------------
 */
-DigitalOut verde (LED1);    // PC_13    (Green_Led)
-DigitalOut rojo  (PB_1);    // NC       (Red_Led)
-
+DigitalOut  led_monitor(LED1);      // Inicializa el LED Monitor (Interno)
+DigitalOut  led_azul(PB_0);         // Inicializa el PWM1 (PB0_TIM3_CH3) Led AZUL
+DigitalOut  led_verde(PA_7);        // Inicializa el PWM2 (PA7_TIM3_CH2) Led VERDE
+DigitalOut  led_rojo(PA_6);         // Inicializa el PWM3 (PA6_TIM3_CH1) Led ROJO
+PwmOut      buzzer(PB_1);           // PB1_TIM3_CH4N
 // *****    Host PC Terminal Communication channels
 Serial      terminal (PA_2, PA_3);          // Inicializa la comunicación serial a la PC (Tx,Rx)
 //Serial      terminal(USBTX, USBRX,115200);// Tx, Rx  Baud Rate - Terminal Serial por USB @ 115,200 Bauds
@@ -64,13 +85,15 @@
 |  Variables Globales de Usuario 
 +-------------------------------------------------------------------------------
 */
-//uint32_t Baud_Rate = 9600;                // Velocidad de Transmisión (Bauds)
+uint8_t  Seleccion;                 // Seleccion de opción para el menú
 /*
 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
 |  Definición de Funciones Prototipo y Rutinas de los Vectores de Interrupción
-++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
 */
-void Setup(void);  
+void setup(void);
+void buzzer_test(void);
+void clear_screen(void);
 /* END definitions */ 
 
 /*
@@ -82,53 +105,77 @@
 */
 int main()          
 {                   // Inicialización de variables, puertos e interrupciones
-confSysClock();     // Configure system clock (72MHz HSE clock, 48MHz USB clock)
-Setup();            // Inicialización del sistema
-    terminal.printf ("ADIVINA\n\r");
-    rojo  = off;
-    verde = off;
-
-    while(TRUE) 
-    {
-Inicio:     terminal.printf(" DIGITE UN NUMERO SECRETO DE 0 A 9 \r\n");
+  confSysClock();     // Configure system clock (72MHz HSE clock, 48MHz USB clock)
+  setup();            // Inicialización del sistema
+  terminal.printf ("ADIVINA\n\r");
+  led_rojo  = led_off;
+  led_verde = led_off;
+  led_azul  = led_off; 
+  terminal.printf(" System is Wake Up!.\n\r");    // e inicia la  comunicación serial
+  terminal.printf ("\t\e[1;37;41mInstituto Politecnico Nacional\e[0m\n\r");
+  terminal.printf ("\e[1;37;42mESCUELA SUPERIOR DE INGENIERIA MECANICA Y ELECTRICA\e[0m\n\r\v");
+  terminal.printf ("\t\e[1;34;40mAdivina \e[1;37;40mel \e[1;32;40mNumero \e[1;33;40mSecreto \e[0m\n\r\v\v\e[0m");
+  terminal.printf("Pulse Cualquier Tecla para continuar..."); // Pausa 
+  Seleccion=getchar();
+  while(TRUE) 
+    {   
+Inicio:     clear_screen();                 // Limpia la Pantalla de la Terminal
+            terminal.printf(" DIGITE UN NUMERO SECRETO DE 0 A 9 \r\n");
             char secreto = terminal.getc();
-            rojo = on;
-            verde = on;          
- Intenta:   terminal.printf(" ADIVINA EL NUMERO: \r\n");
+            led_rojo  = led_on ;
+            led_verde = led_on ;
+            led_azul  = led_on ;
+            clear_screen();                 // Limpia la Pantalla de la Terminal
+Intenta:   terminal.printf(" ADIVINA EL NUMERO: \r\n");
             char respuesta = terminal.getc();
             if( secreto < respuesta  ) 
             {
                 terminal.printf(" Es mas Bajo  \r\n");
-                rojo = on;
-                verde = off;               
+                led_rojo  = led_on ;
+                led_verde = led_off;
+                led_azul  = led_off;             
                 goto Intenta;
             }
             if( secreto > respuesta  ) 
             {
                 terminal.printf(" Es mas Alto  \r\n");
-                rojo  = off;
-                verde = on;
+                led_rojo  = led_off;
+                led_verde = led_off;
+                led_azul  = led_on ;
                 goto Intenta;
             }
             if( secreto == respuesta ) 
             {
                 terminal.printf(" CORRECTO!, Es igual a: %c \r\n",secreto);
-                rojo  = off;
-                verde = on;
+                led_rojo  = led_off;
+                led_verde = led_on ;
+                led_azul  = led_off;
                 wait(1.0);
-                rojo  = off;
-                verde = off;
+                led_rojo  = led_off;
+                led_verde = led_off;
+                led_azul  = led_off;
                 wait(1.0);
-                rojo  = off;
-                verde = on;
+                led_rojo  = led_off;
+                led_verde = led_on ;
+                led_azul  = led_off;
                 wait(1.0);
                 terminal.printf(" Eres un Genio !!!  \r\n");
                 wait(1.0);
-                rojo  = on;
-                verde = off;
+                led_rojo  = led_on ;
+                led_verde = led_off;
+                led_azul  = led_on ;
+                wait(1.0);
+                led_rojo  = led_on ;
+                led_verde = led_on ;
+                led_azul  = led_off;
                 wait(1.0);
-                rojo  = off;
-                verde = on;
+                led_rojo  = led_off;
+                led_verde = led_on ;
+                led_azul  = led_on ;
+                wait(1.0);
+                led_rojo  = led_on ;
+                led_verde = led_on ;
+                led_azul  = led_on ;
             }
         terminal.printf(" Quieres intentarlo de nuevo?  \r\n");
         terminal.printf(" 0 = No \r\n 1 = Si  \r\n");
@@ -136,6 +183,9 @@
             if( opcion == '1' ) goto Inicio;
             else if( opcion == '0' )
             {
+                led_rojo  = led_off;
+                led_verde = led_off;
+                led_azul  = led_off;
                 terminal.printf(" Eso es todo Amigos!  \r\n");
                 break;
             }
@@ -158,17 +208,124 @@
 |_______________________________________________________________________________
 */
                 // Las Funciones Prototipo van aquí !
-void Setup()
+void setup()
+{   
+  terminal.baud(Baud_Rate);         // Se configura la velocidad de transmisión  
+  terminal.printf("\r System is Wake Up!.\n\r"); //e inicia la comunicación a la Terminal.
+  buzzer_test();
+  clear_screen();
+}
+              
+void buzzer_test()             // Software Blinking routine for LED 
 {
-//  terminal.baud(Baud_Rate);         // Se configura la velocidad de transmisión e inicia la comunicación serial.    
-  terminal.baud(115200);         // Se configura la velocidad de transmisión e inicia la comunicación serial.  
-  terminal.printf(" System is Wake Up!.\n\r");
-}              
+    /* Prueba del Buzzer */
+    terminal.printf("Testing Buzzer... \n\r");
+    buzzer = Buzz_On;
+    wait_ms(750);
+    buzzer = Buzz_Off;
+    wait_ms(125);
+    buzzer = Buzz_On;
+    wait_ms(250);
+    buzzer = Buzz_Off;
+    wait_ms(125);
+    buzzer = Buzz_On;
+    wait_ms(500);
+    buzzer = Buzz_Off;
+    terminal.printf("Buzzer OK ! \n\r");
+}
+
+void clear_screen() 
+{
+//ANSI Terminal Commands
+    terminal.printf("\x1B[2J");
+    terminal.printf("\x1B[H");
+}
 
 /* END routines */   
  
 /* END program */                
-
+/*+-----------------------------------------------------------------------------       
+*+ La documentación va aquí!:
+*+-----------------------------------------------------------------------------       
+*+  Conexión al Led RGB:
+*+------------------------------------------------------------------------------
+*+ 
+*+  Los leds se pueden conectar a cualquier pin que se declare como DigitalOut. 
+*+  El dispositivo puede drenar hasta 20ma por todas sus salidas a un voltaje de 
+*+  3.3V, pero se recomienda no exceder de 1mA por salida.
+*+  Esto se logra poniendo una resistencia limitadora de mínimo 330 Ohms.
+*+   
+*+ 
+*+            PIN (Digital Out)  
+*+
+*+     Led ROJO      Led VERDE   Led AZUL
+*+
+*+       R       GND      G        B
+*+       O        O       O        O
+*+       |        |       |        |
+*+       |        |       |        |
+*+       /        |       /        /
+*+       \   1K   |       \   2K   \   2.2K  
+*+       /        |       /        /
+*+       \        |       \        \         UTILIZANDO LED RGB DE CÁTODO COMÚN
+*+       |        |       |        |
+*+       |        |       |        |
+*+    ___|___     |    ___|___  ___|___     
+*+    \      /    |    \      / \      /
+*+     \    /     |     \    /   \    /
+*+      \  /      |      \  /     \  /
+*+     __\/__     |     __\/__   __\/__
+*+       |        |       |        |
+**       |        |       |        |
+*+       |________|_______|________|   
+*+
+*+      
+*+      
+*+            PIN (Digital Out)  
+*+
+*+     Led ROJO      Led VERDE   Led AZUL
+*+       
+*+       R       VCC      G        B
+*+       O        O       O        O
+*+       |        |       |        |
+*+       |        |       |        |
+*+       /        |       /        /
+*+       \   2K   |       \   1K   \   1K  
+*+       /        |       /        /
+*+       \        |       \        \         UTILIZANDO LED RGB DE ÁNODO COMÚN
+*+       |        |       |        |
+*+       |        |       |        |
+*+    ___|___     |    ___|___  ___|___
+*+      /\        |      /\       /\
+*+     /  \       |     /  \     /  \
+*+    /    \      |    /    \   /    \
+*+   /______\     |   /______\ /______\
+*+       |        |       |        |
+**       |        |       |        |
+*+       |________|_______|________|   
+*+
+*+    
+*+
+*+------------------------------------------------------------------------------
+*+ Descripción del Coexionado del Buzzer
+*+------------------------------------------------------------------------------
+*+
+*+                  150
+*+  PWM Pin  -----/\/\/\/-------|
+*+                              | 
+*+                              |  +
+*+                              |  
+*+                            ( o ) BUZZER
+*+                              |
+*+                              |
+*+                              |
+*+                              |
+*+                            -----
+*+                             ---
+*+                              -
+*+
+*+------------------------------------------------------------------------------
+*/
 /* END documentation */ 
 /*
 +--------------------------------------------------------------------------------
@@ -183,13 +340,13 @@
 |
 |                               EXAMEN
 |
-| 1.-   Modificar el programa para que despliegue el número de intentos para 
-|       adivinar el número secreto.
-| 2.-   Modificar el programa para haga eco con la respuesta que le introducimos.
-|
-| 3.-   Modificar el programa para que el número secreto sea generado aleatoriamente.
-|       a) Generar un Número Pseudo Aleatorio Mediante el Ticker
-|       b) Utilizando la función RANDOMIZE
+| 1.-  Modificar el programa para que despliegue el número de intentos para 
+|      adivinar el número secreto.
+| 2.-  Modificar el programa para haga eco con la respuesta que le introducimos.
+| 3.-  Bloquear el programa despues de cierto número de intentos
+| 4.-  Modificar el programa para que el número secreto sea generado aleatoriamente.
+|      a) Generar un Número Pseudo Aleatorio Mediante el Ticker
+|      b) Utilizando la función RANDOMIZE
 | Suerte!
 +--------------------------------------------------------------------------------
 |
--- a/stm32f103c8t6.h	Thu Sep 05 23:29:04 2019 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,4 +0,0 @@
-#pragma once
-#include "PinNames.h"
-#include "SysClockConf.h"
-