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.
Revision 0:0b7bc4adc2a7, committed 2020-03-04
- Comitter:
- franciscos
- Date:
- Wed Mar 04 00:51:52 2020 +0000
- Commit message:
- esime;
Changed in this revision
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/STM32F103C8T6/PinNames.h Wed Mar 04 00:51:52 2020 +0000 @@ -0,0 +1,217 @@ +/* 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: + * 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; + +/* +*+----------------------------------------------------------------------------* +*+ +*+ 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! +*+----------------------------------------------------------------------------* +*/ + +#ifdef __cplusplus +} +#endif + +#endif +
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/STM32F103C8T6/SysClockConf.cpp Wed Mar 04 00:51:52 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(); +}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/STM32F103C8T6/SysClockConf.h Wed Mar 04 00:51:52 2020 +0000 @@ -0,0 +1,17 @@ +/* + ****************************************************************************** + * @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. +*/ +#pragma once +void confSysClock(void);
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/STM32F103C8T6/stm32f103c8t6.h Wed Mar 04 00:51:52 2020 +0000 @@ -0,0 +1,4 @@ +#pragma once +#include "PinNames.h" +#include "SysClockConf.h" +
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/main.cpp Wed Mar 04 00:51:52 2020 +0000 @@ -0,0 +1,322 @@ +/* ############################################################################# +** 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 */ \ No newline at end of file
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/mbed.bld Wed Mar 04 00:51:52 2020 +0000 @@ -0,0 +1,1 @@ +https://os.mbed.com/users/mbed_official/code/mbed/builds/65be27845400 \ No newline at end of file