
Bluepill_Plantilla Es la plantilla base (mejorada) para soporte y compatibilidad en Mbed para la tarjeta "BluePill" basada en el procesador ARM M3 STM32F103C8T6
Diff: main.cpp
- 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 */