STM32-F103C8_Plantilla Es la plantilla base para compatibilidad con Mbed para la tarjeta "Blue Pill" basada en el STM32-F103C8T6

Dependencies:   mbed

Embed: (wiki syntax)

« Back to documentation index

Show/hide line numbers main.cpp Source File

main.cpp

00001 /* ###########################################################################
00002 **    Archivo        : main.c
00003 **    Proyecto       : STM32-F103C8_Plantilla
00004 **    Procesador     : STM32F103C8
00005 **    Herramienta    : Mbed
00006 **    Version        : Driver 01.01
00007 **    Compilador     : GNU C Compiler
00008 **    Fecha/Hora     : 14-07-2015, 11:48, # CodeGen: 0
00009 **    Descripción    :
00010 **         Este proyecto hace...
00011 **         This module contains user's application code.
00012 **   Componentes     : GPIO, Timer, etc .
00013 **   Configuraciones : Includes, Stacks y Drivers externos
00014 **   Autores         :
00015 **         ATEAM Development Group:
00016 **          - Antulio Morgado Valle
00017 **
00018 **   Versión        : Beta
00019 **   Revisión       : A
00020 **   Release        : 0
00021 **   Bugs & Fixes   :
00022 **   Date           : 20/10/2019
00023 **                    Added support for Led_RGB
00024 **                    22/09/2018 
00025 **                    Added LCD Menu, Beta version (with bugs)
00026 **
00027 ** ###########################################################################*/
00028 /*
00029 ::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
00030 :  Includes
00031 ::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
00032 */
00033 #include "stm32f103c8t6.h"
00034 #include "mbed.h"
00035 //#include "AnalogIn.h"
00036 //#include "Led_RGB.h"
00037 #include "Serial.h"
00038 //#include "stdio.h"
00039 
00040 /*
00041 :...............................................................................
00042 :  Definiciones
00043 :...............................................................................
00044 */
00045 #define  on             0               // Estado para boton presionado
00046 #define off             1               // Estado para boton sin presionar
00047 #define hold            2               // Estado para boton mantenido
00048 #define release         3               // Estado para boton liberado
00049 #define FALSE           0               // Estado FALSO
00050 #define TRUE            1               // Estado VERDADERO
00051 #define Ticker_Rate     1000            // Periodo de interrupción (us)
00052 /*
00053 +-------------------------------------------------------------------------------
00054 |  Configuración de Puertos 
00055 +-------------------------------------------------------------------------------
00056 */
00057 //confSysClock();     // Configure system clock (72MHz HSE clock, 48MHz USB clock)
00058 Ticker      TimerInt;               // Inicializa la Interrupción por Timer
00059 DigitalOut  led_monitor(LED1);      // Inicializa el LED Monitor
00060 DigitalOut  led_testigo(PB_1);      // Inicializa el LED Testigo
00061 Serial      terminal(PA_2, PA_3);   // Inicializa la Comunicación Serial a la PC
00062 PwmOut      servo(PA_7);            // Inicializa el PWM
00063 AnalogIn    sensor1 (PB_0);         // Inicializa Canal Analógico para sensor 1
00064 /*
00065 +-------------------------------------------------------------------------------
00066 |  Variables Globales de Usuario 
00067 +-------------------------------------------------------------------------------
00068 */
00069 uint16_t Rate=Ticker_Rate/2;        // Velocidad de barrido (500us = 0.5ms)
00070 uint16_t counter=250;               // Cuenta inicial de 250us
00071 /* END variables */
00072 
00073 /*
00074 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
00075 |  Definición de Funciones Prototipo y Rutinas de los Vectores de Interrupción
00076 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
00077 */
00078         // Las Definiciones de Funciones Prototipo 
00079         // y Apuntadores a Vectores de Interrupciones van aquí !
00080 void TimerInt_OnInterrupt(void);  
00081 void Blinking_Led(void);
00082 /* END prototypes */
00083 
00084 /* END definitions */  
00085 /*
00086 #===============================================================================
00087 |
00088 |               P R O G R A M A     P R I N C I P A L
00089 |
00090 #=============================================================================== 
00091 */
00092 int main()          
00093 {                           // Inicialización de variables, puertos e interrupciones
00094 confSysClock();             // Inicialización del Sistema, Configure system clock (72MHz HSE clock, 48MHz USB clock)
00095 TimerInt.attach_us(&TimerInt_OnInterrupt, Ticker_Rate);   // Le asigna el periodo de interrupción de 1ms (Ticker_Rate=1000)
00096 
00097 terminal.baud(115200);      // Se configura la velocidad de transmisión e inicia la comunicación serial.    
00098 terminal.printf(" System is Wake Up!.\n\r"); 
00099 
00100     while (true)                // El Lazo del Programa principal está aquí !!!
00101     {
00102         Blinking_Led();             // Parapadeo del LED por Software
00103         servo = sensor1.read();       // 
00104         terminal.printf("Blink \r\n");                           
00105     }
00106 }
00107 /* END main */
00108 
00109 /*
00110 ................................................................................
00111 :  Rutinas de los Vectores de Interrupción
00112 ................................................................................
00113 */
00114                 // Las Rutinas de Atención a Interrupciones van aquí !
00115 void TimerInt_OnInterrupt()          // Rutina de Atención al Ticker
00116 {
00117     counter--;                      // Aquí va la Rutina de Servicio !
00118     if (!counter)
00119     {
00120         terminal.printf("Counter Finish! \r\n");
00121         led_monitor = !led_monitor; // Parapadeo del LED por Interrupción (LED Toggled)
00122         counter = Rate;           // Restablece el contador, Le asigna el periodo de 0.5ms (Rate=500)
00123     } 
00124 }
00125 /* END Events */   
00126 /*
00127 ________________________________________________________________________________
00128 |
00129 |  Funciones Prototipo
00130 |_______________________________________________________________________________
00131 */
00132                 // Las Funciones Prototipo van aquí !
00133 void Blinking_Led()             // Software Blinking routine for LED 
00134 {
00135         // The on-board LED is connected, via a resistor, to +3.3V (not to GND). 
00136         // So to turn the LED on or off we have to set it to 0 or 1 respectively
00137     led_testigo = 1;        // turn the LED on (using Positive Logic)
00138     wait_ms(200);           // 200 millisecond
00139     led_testigo = 0;        // turn the LED off (using Positive Logic)
00140     wait_ms(1000);          // 1000 millisecond
00141 }
00142 /* END functions */    
00143                 
00144 /* END program */
00145 
00146 /*+-----------------------------------------------------------------------------       
00147 *+ La documentación va aquí!:
00148 *+-----------------------------------------------------------------------------       
00149 *+  Conexión al Led Testigo:
00150 *+ 
00151 *+  Los leds se pueden conectar a cualquier pin que se declare como DigitalOut. 
00152 *+  El dispositivo puede drenar hasta 20ma por todas sus salidas a un voltaje de 
00153 *+  3.3V, pero se recomienda no exceder de 1mA por salida.
00154 *+  Esto se logra poniendo una resistencia limitadora de mínimo 330 Ohms.
00155 *+  
00156 *+    3.3V o 5V
00157 *+       O
00158 *+       |
00159 *+       |
00160 *+       /
00161 *+       \   1K
00162 *+       /
00163 *+       \                         UTILIZANDO LÓGICA NEGATIVA
00164 *+       |
00165 *+    ___|___
00166 *+    \      /
00167 *+     \    /
00168 *+      \  /
00169 *+     __\/__
00170 *+       |
00171 *+       |__________________________  PIN (Digital Out)
00172 *+
00173 *+      
00174 *+      
00175 *+       
00176 *+                    1K
00177 *+                   
00178 *+        _________/\  /\  /\  _____    PIN (Digital Out)
00179 *+       |           \/  \/  \/
00180 *+       |      
00181 *+       |
00182 *+    ___|___
00183 *+    \      /
00184 *+     \    /
00185 *+      \  /                       UTILIZANDO LÓGICA POSITIVA
00186 *+     __\/__
00187 *+       |
00188 *+       |
00189 *+       |
00190 *+    ___|___
00191 *+     _____
00192 *+      ___
00193 *+       _
00194 *+
00195 *+      GND
00196 *+
00197 *+----------------------------------------------------------------------------*
00198 *+
00199 *+   Powered by
00200 *+
00201 *+          T H E     A N T U L I U ' S   T E A M   R&D  Unltd 
00202 *+
00203 *+  Research, Development, Systems, Equipment, Support & Spare Parts.
00204 *+  (C) Copyright 1989-2019, All Rights Reserved            
00205 *+
00206 *+  Welcome to The Beaners Proyect Community!                   
00207 *+----------------------------------------------------------------------------*/
00208 
00209 /* END documentation */ 
00210 
00211 /* END Mbed */