Bluepill_Plantilla Es la plantilla base (mejorada) para soporte y compatibilidad en Mbed para la tarjeta "BluePill" basada en el procesador ARM M3 STM32F103C8T6

Dependencies:   mbed

Revision:
5:e2fe0990d8ad
Parent:
4:e1e547c34929
Child:
6:f47832fe0b07
--- a/main.cpp	Wed Jun 17 20:25:52 2020 +0000
+++ b/main.cpp	Sun Jun 21 02:31:47 2020 +0000
@@ -1,6 +1,6 @@
 /* #############################################################################
 **    Archivo        : main.c
-**    Proyecto       : STM32F103C8_Plantilla
+**    Proyecto       : STM32F103C8_Plantilla_Enhenced
 **    Procesador     : STM32F103C8T6
 **    Plataforma     : Blue Pill
 **    Herramienta    : Mbed
@@ -33,24 +33,32 @@
 */
 #include "stm32f103c8t6.h"
 #include "mbed.h"
+#include "Serial.h"
 //#include "AnalogIn.h"
 //#include "Led_RGB.h"
-#include "Serial.h"
-//#include "stdio.h"
+//#include <stdio.h>
 
 /*
 :...............................................................................
 :  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 Ticker_Rate     1000            // Periodo de interrupción (us)
-#define Baud_Rate       115200          // Velocidad de Transmisión (Bauds)
+#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 Ticker_Rate     1000        // Periodo de interrupción (us)
+#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 
@@ -60,8 +68,9 @@
 Ticker      TimerInt;               // Inicializa la Interrupción por Timer
 DigitalOut  led_monitor(LED1);      // Inicializa el LED Monitor (Interno)
 DigitalOut  led_testigo(PB_1);      // Inicializa el LED Testigo (Externo)
-PwmOut      servo(PA_7);            // Inicializa el PWM
-AnalogIn    sensor1 (PB_0);         // Inicializa Canal Analógico para sensor 1
+PwmOut      pwm1(PA_7);             // Inicializa el PWM para el LED Externo
+PwmOut      buzzer(PB_1);           // Inicializa el PWM para el Buzzer Externo
+AnalogIn    pot1(PB_0);             // Inicializa Canal Analógico para Potenciometro 1
 Serial      terminal(PA_2, PA_3);   // Inicializa la Comunicación Serial a la PC
 /*
 +-------------------------------------------------------------------------------
@@ -81,6 +90,8 @@
         // y Apuntadores a Vectores de Interrupciones van aquí !
 void TimerInt_OnInterrupt(void);  
 void Blinking_Led(void);
+void Clear_Screen(void);
+void Buzzer_Beep(void); 
 /* END prototypes */
 
 /* END definitions */  
@@ -95,16 +106,17 @@
 {                           // Inicialización de variables, puertos e interrupciones
 confSysClock();             // Inicialización del Sistema, Configure system clock (72MHz HSE clock, 48MHz USB clock)
 TimerInt.attach_us(&TimerInt_OnInterrupt, Ticker_Rate);   // Le asigna el periodo de interrupción de 1ms (Ticker_Rate=1000)
-
 terminal.baud(Baud_Rate);   // Se configura la velocidad de transmisión e inicia la comunicación serial.    
-terminal.printf(" System is Wake Up!.\n\r"); 
-
-    while (true)                // El Lazo del Programa principal está aquí !!!
-    {
-        Blinking_Led();         // Parapadeo del LED por Software
-        servo = sensor1.read(); // Lee el Potenciometro y mueve el Servo 
-        terminal.printf("Blink \r\n");                           
-    }
+Clear_Screen();             // Limpia la pantalla de la Terminal
+terminal.printf("The System is Wake Up!.\n\r"); 
+Buzzer_Beep();              // Prueba el Buzzer
+    
+  while (true)              // El Lazo del Programa principal está aquí !!!
+  {
+    Blinking_Led();         // Parapadeo del LED por Software
+    pwm1 = pot1.read();     // Lee el Potenciometro y mueve el Servo 
+    terminal.printf("Blink \r\n");                           
+  }
 }
 /* END main */
 
@@ -114,6 +126,22 @@
 ................................................................................
 */
                 // Las Rutinas de Atención a Interrupciones van aquí !
+/*
+** ===================================================================
+**     Vector      :  TimerInt_OnInterrupt()
+*/
+/*!
+**     @brief
+**         Called after Ticker is done, [Interrupt service/event]
+**         and it is enabled: 
+**         TimerInt.attach_us(&TimerInt_OnInterrupt, Ticker_Rate);
+**         the event is enabled and will be executed every  [Ticker_Rate]
+**     @param
+**         UserDataPtr     - Pointer to the user or
+**                           RTOS specific data. The pointer is passed
+**                           as the parameter of Init method.
+*/
+/* ===================================================================*/
 void TimerInt_OnInterrupt()          // Rutina de Atención al Ticker
 {
     counter--;                      // Aquí va la Rutina de Servicio !
@@ -132,6 +160,11 @@
 |_______________________________________________________________________________
 */
                 // Las Funciones Prototipo van aquí !
+/*
+|--------------------------------------------------
+|    Función Blinking_Led()
+|--------------------------------------------------
+*/
 void Blinking_Led()             // Software Blinking routine for LED 
 {
         // The on-board LED is connected, via a resistor, to +3.3V (not to GND). 
@@ -141,6 +174,38 @@
     led_testigo = 0;        // turn the LED off (using Positive Logic)
     wait_ms(1000);          // 1000 millisecond
 }
+/*
+|--------------------------------------------------
+|    Función clear_screen()
+|--------------------------------------------------
+*/
+void Clear_Screen() 
+{
+    // ANSI Terminal Commands
+    terminal.printf("\x1B[2J");     // secuencia de Escape  \e1B[2J
+    terminal.printf("\x1B[H");      // secuencia de Escape  \e1B[H
+}
+/*
+|--------------------------------------------------
+|    Función Buzzer_Beep()
+|--------------------------------------------------
+*/
+void Buzzer_Beep()                      // Software routine for Buzzer Beep
+{ 
+  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");
+}
 /* END functions */    
                 
 /* END program */