Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
main.cpp
- Committer:
- franciscos
- Date:
- 2020-03-04
- Revision:
- 0:0b7bc4adc2a7
File content as of revision 0:0b7bc4adc2a7:
/* ############################################################################# ** Archivo : main.c ** Proyecto : STM32F103C8_Caratula ** Procesador : STM32F103C8T6 ** Plataforma : Blue Pill ** Herramienta : Mbed Compiler ** Version : Driver 01.01 ** Compilador : GNU C Compiler ** Fecha/Hora : 17-02-2020, 22:53, # CodeGen: 0 ** Descripción : ** Este proyecto hace una carátula para mostrar la presentación ** This module contains user's application code. ** Componentes : GPIO, Timer, etc . ** Configuraciones : Includes, Stacks y Drivers externos ** Autores : ** ATEAM Development Group: ** - Francisco Sarabia López, Antulio Morgado Valle(plantilla) ** ** Versión : Alpha ** Revisión : A ** Release : 0 ** Bugs & Fixes : ** Date : ** ** ###########################################################################*/ /* :::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: : Includes :::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: */ #include "stm32f103c8t6.h" #include "mbed.h" #include "Serial.h" //#include "LedRGB.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 Ticker (us) #define Baud_Rate 115200 // Velocidad de Transmisión de la Terminal /* +------------------------------------------------------------------------------- | Configuración de Puertos +------------------------------------------------------------------------------- */ Ticker TimerInt; // Inicializa la Interrupción por Timer DigitalOut led_monitor(LED1); // Inicializa el LED Monitor DigitalOut led_testigo(PB_1); // Inicializa el LED Testigo PwmOut led_pwm(PA_7); // Inicializa el LED PWM AnalogIn sensor1(PB_0); // Inicializa Canal Analógico para sensor 1 Serial terminal(PA_2, PA_3); // Inicializa la Comunicación Serial a la PC /* +------------------------------------------------------------------------------- | Variables Globales de Usuario +------------------------------------------------------------------------------- */ uint16_t Rate=Ticker_Rate/2; // Velocidad de barrido (500us = 0.5ms) uint16_t counter=250; // Cuenta inicial de 250us /* END variables */ /* ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ | Definición de Funciones Prototipo y Rutinas de los Vectores de Interrupción ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ */ // Las Definiciones de Funciones Prototipo // y Apuntadores a Vectores de Interrupciones van aquí ! void TimerInt_OnInterrupt(void); void Blinking_Led(void); void PideDatos(int *Dat, int *Ord,float Val[][10]); float Potencia(int n, float Num); void PreparaSistema(int Ord, int Dat, float Sist[][10], float Val[][10]); void ResuelveGauss(int Dim, float Sist[][10]); void ImprimeDatos(int Dim, float Sist[][10]); /* END prototypes */ /* END definitions */ /* #=============================================================================== | | P R O G R A M A P R I N C I P A L | #=============================================================================== */ int main() { // 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 led_pwm = sensor1.read(); // El Led se encenderá de acuerdo al valor del sensor terminal.printf("INSTITUTO POLITECNICO NACIONAL \r\n"); terminal.printf("\n EEEEEEE SSSS IIIIIII M M EEEEEEE \r\n"); terminal.printf( " E S I M M M M E \r\n"); terminal.printf( " EEEEEEE SSSS I M MM M EEEEEEE \r\n"); terminal.printf( " E S I M M E \r\n"); terminal.printf( " EEEEEEE SSSS IIIIIII M M EEEEEEE \r\n"); terminal.printf( "\n Francisco Sarabia Lopez\r\n"); terminal.printf( "\n Ingenieria en Comunicaciones y Electronica\r\n"); int Datos,Orden,i; float Valores[2][10]; float Sistema[10][10]; PideDatos(&Datos,&Orden,Valores); PreparaSistema(Orden,Datos,Sistema,Valores); printf("\n\n El sistema a resolver es el siguiente:"); ImprimeDatos(Orden,Sistema); ResuelveGauss(Orden,Sistema); printf("\n\n El sistema resuelto:"); ImprimeDatos(Orden,Sistema); printf("\n\n La Ecuacion del Polinomio ajustado por minimos Cuadrados\n\n:"); for(i=1;i<=Orden;i++) { printf(" + \t(%.2f)X^%d",Sistema[i][Orden+1],i-1); } return 0; } } /* END main */ /* ................................................................................ : Rutinas de los Vectores de Interrupción ................................................................................ */ // Las Rutinas de Atención a Interrupciones van aquí ! void TimerInt_OnInterrupt() // Rutina de Atención al Ticker { } /* END Events */ /* ________________________________________________________________________________ | | Funciones Prototipo |_______________________________________________________________________________ */ // Las Funciones Prototipo van aquí ! void Blinking_Led() // Software Blinking routine for LED { // The on-board LED is connected, via a resistor, to +3.3V (not to GND). // So to turn the LED on or off we have to set it to 0 or 1 respectively led_testigo = 1; // turn the LED on (using Positive Logic) wait_ms(200); // 200 millisecond led_testigo = 0; // turn the LED off (using Positive Logic) wait_ms(1000); // 1000 millisecond } void PideDatos(int *Dat, int *Ord,float Val[][10]) { int i,o; printf("\n Introduce el numero de datos o puntos: "); scanf("%d",&*Dat); printf("\n\n Introce los valores de cada punto\n"); for(i=0;i<*Dat;i++) { printf(" -Valores del Punto %d:\n",i+1); printf(" X%d: ",i+1); scanf("%f",&Val[0][i+1]); printf(" Y%d: ",i+1); scanf("%f",&Val[1][i+1]); } printf("\n\n Introduce el orden del polinomio: "); scanf("%d",&o); *Ord=o+1; } float Potencia(int n, float Num) { int i; float res; res=1; for(i=1;i<=n;i++) { res=res*Num; } return res; } void PreparaSistema(int Ord, int Dat, float Sist[][10], float Val[][10]) { int i,j,k,Exp; float suma,termino; for(i=1;i<=Ord;i++) { for(j=1;j<=Ord;j++) { suma=0; Exp=i+j-2; for(k=1;k<=Dat;k++) { termino=Val[0][k]; suma=suma+Potencia(Exp,termino); } Sist[i][j]=suma; } } for(i=1;i<=Ord;i++) { suma=0; Exp=i-1; for(k=1;k<=Dat;k++) { termino=Val[0][k]; suma=suma+Val[1][k]*Potencia(Exp,termino); } Sist[i][Ord+1]=suma; } } void ResuelveGauss(int Dim, float Sist[][10]) { int NoCero,Col,C1,C2,A; float Pivote,V1; for(Col=1;Col<=Dim;Col++) { NoCero=0;A=Col; while(NoCero==0) { if(Sist[A][Col]!=0) { NoCero=1; } else { A++; } Pivote=Sist[A][Col]; for(C1=1;C1<=(Dim+1);C1++) { V1=Sist[A][C1]; Sist[A][C1]=Sist[Col][C1]; Sist[Col][C1]=V1/Pivote; } for(C2=Col+1;C2<=Dim;C2++) { V1=Sist[C2][Col]; for(C1=Col;C1<=(Dim+1);C1++) { Sist[C2][C1]=Sist[C2][C1]-V1*Sist[Col][C1]; } } } } for(Col=Dim;Col>=1;Col--) { for(C1=(Col-1);C1>=1;C1--) { Sist[C1][Dim+1]=Sist[C1][Dim+1]-Sist[C1][Col]*Sist[Col][Dim+1]; Sist[C1][Col]=0; } } } void ImprimeDatos(int Dim, float Sist[][10]) { int i,j; printf("\n\n"); for(i=1;i<=Dim;i++) { for(j=1;j<=(Dim+1);j++) { printf("\t%.2f",Sist[i][j]); if(j==Dim) { printf(" |"); } } printf("\n"); } printf("\n\n"); } /* END functions */ /* END program */ /*+----------------------------------------------------------------------------- *+ La documentación va aquí!: *+----------------------------------------------------------------------------- *+ *+ *+----------------------------------------------------------------------------* *+ *+ Powered by *+ *+ T H E A N T U L I U ' S T E A M R&D Unltd *+ *+ Research, Development, Systems, Equipment, Support & Spare Parts. *+ (C) Copyright 1989-2019, All Rights Reserved *+ *+ Welcome to The Beaners Proyect Community! *+----------------------------------------------------------------------------*/ /* END documentation */ /* END Mbed */