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:f16f5fb2d1b9, committed 2020-03-04
- Comitter:
- franciscos
- Date:
- Wed Mar 04 00:51:01 2020 +0000
- Commit message:
- esime;
Changed in this revision
diff -r 000000000000 -r f16f5fb2d1b9 STM32F103C8T6/PinNames.h
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/STM32F103C8T6/PinNames.h Wed Mar 04 00:51:01 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
+
diff -r 000000000000 -r f16f5fb2d1b9 STM32F103C8T6/SysClockConf.cpp
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/STM32F103C8T6/SysClockConf.cpp Wed Mar 04 00:51:01 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();
+}
diff -r 000000000000 -r f16f5fb2d1b9 STM32F103C8T6/SysClockConf.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/STM32F103C8T6/SysClockConf.h Wed Mar 04 00:51:01 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);
diff -r 000000000000 -r f16f5fb2d1b9 STM32F103C8T6/stm32f103c8t6.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/STM32F103C8T6/stm32f103c8t6.h Wed Mar 04 00:51:01 2020 +0000 @@ -0,0 +1,4 @@ +#pragma once +#include "PinNames.h" +#include "SysClockConf.h" +
diff -r 000000000000 -r f16f5fb2d1b9 main.cpp
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/main.cpp Wed Mar 04 00:51:01 2020 +0000
@@ -0,0 +1,330 @@
+/* #############################################################################
+** Archivo : main.c
+** Proyecto : STM32F103C8_Matrizgauss
+** 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 programa resuelve un sistema de ecuaciones de 3x3 por el metodo de Gauss
+** 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 ImprimirMatriz(float Matriz[3][4]);
+void IntercambiaFilas(float Matriz[][4], int F, int C);
+void EliminacionDiag(float Matriz[][4], int C);
+
+/* 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");
+
+//----------------------------------------------------------------------------------------------
+// Funciones aparte
+//----------------------------------------------------------------------------------------------
+
+//Funcion imprimir
+
+//----------------------------------------------------------------------------------------------
+// Main de matriz por metodo de gauss
+//----------------------------------------------------------------------------------------------
+ float matriz[3][4];//matriz con los datos igualados de las ecuaciones incluidas
+ float X,Y,Z;
+ float FAux1[4];//Filas auxiliares
+ float FAux2[4];
+ int i,j,k,f,c;
+ //Valores de prueba
+ matriz[0][0]=0;
+ matriz[0][1]=2;
+ matriz[0][2]=0.5;
+ matriz[0][3]=7; //Igualdad primera ecuacion
+ matriz[1][0]=5;
+ matriz[1][1]=0.33;
+ matriz[1][2]=1;
+ matriz[1][3]=0; //Igualdad segunda ecuacion
+ matriz[2][0]=3;
+ matriz[2][1]=4;
+ matriz[2][2]=2;
+ matriz[2][3]=1; //Igualdad tercera ecuacion
+
+ ImprimirMatriz(matriz);
+
+ for (i=0;i<3;i++)
+ {
+ //Compriobacion de diagonales diferentes a cero
+ if(matriz[i][i]==0)
+ {
+ f=i;
+ c=i;
+ IntercambiaFilas(matriz,f,c);
+ ImprimirMatriz(matriz);
+ }
+ //Eliminacion de numeros
+ EliminacionDiag(matriz,i);
+ ImprimirMatriz(matriz);
+ }
+ //Formulas para las incógnitas
+ Z=matriz[2][3]/matriz[2][2];
+ Y=(matriz[1][3]-(Z*matriz[1][2]))/matriz[1][1];
+ X=(matriz[0][3]-(Z*matriz[0][2])-(Y*matriz[0][1]))/matriz[0][0];
+
+ terminal.printf("\n\n X= %.2f \t Y= %.2f \t Z= %.2f ", X, Y, Z);
+ return 0;
+
+//----------------------------------------------------------------------------------------------
+// Finaliza Main de Gauss
+//----------------------------------------------------------------------------------------------
+
+ }
+}
+/* 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 ImprimirMatriz(float Matriz[3][4])
+ {
+ int i,j;
+ for(i=0;i<3;i++)
+ {
+ for(j=0;j<3;j++)
+ {
+ printf(" %7.2f", Matriz[i][j]);
+ if(j==0)
+ {
+ printf("x");
+ }
+ else if(j==1)
+ {
+ printf("y");
+ }
+ else if(j==2)
+ {
+ printf("z");
+ }
+ }
+ printf("\t = %7.2f \n", Matriz[i][j]);
+ }
+ printf("\n\n");
+}
+
+void IntercambiaFilas(float Matriz[][4], int F, int C) //Intercambio de filas si el valor (F,C)=0;
+{
+ int i,j,k;
+ float FAux1[4];
+ float FAux2[4];
+
+ if (Matriz[F][C]==0)
+ {
+ j=0;
+ for(k=0;k<3;k++)
+ {
+ if (Matriz[k][C]!=0)
+ {
+ j=k;
+ }
+ if(j!=0)
+ {
+ k=3;
+ }
+ }
+ /*if (k==3 && j==0)
+ {
+ printf("\n\n Nmms esta no es una matriz 3x3, resuelvela solo >:c \n\n");
+ }*/
+
+ printf("\t Se intercambia la fila %d por la fila %d \n\n", F+1, j+1);
+ for(i=0;i<4;i++)
+ {
+ FAux1[i]=Matriz[F][i];
+ FAux2[i]=Matriz[j][i];
+ }
+ for(i=0;i<4;i++)
+ {
+ Matriz[F][i]=FAux2[i];
+ Matriz[j][i]=FAux1[i];
+ }
+ }
+}
+
+void EliminacionDiag(float Matriz[][4], int C)
+{
+ float coef,coef1;
+ float FAux1[4];
+ float FAux2[4];
+ int i,j,k;
+ coef=Matriz[C][C];
+
+ for (i=0;i<3;i++)
+ {
+
+ if(i!=C)
+ {
+ if(Matriz[i][C]!=0)
+ {
+ coef1=Matriz[i][C];
+
+ for (j=0; j<4; j++)
+ {
+ FAux1[j]=coef1*Matriz[C][j];
+ FAux2[j]=coef*Matriz[i][j];
+ }
+
+ for (k=0;k<4;k++)
+ {
+ FAux2[k]=FAux1[k]-FAux2[k];
+ }
+
+ for (k=0;k<4;k++)
+ {
+ Matriz[i][k]=FAux2[k];
+ }
+ }
+ else
+ {
+ printf("\n\n\t dato (%d,%d) es cero \n\n",i,C);
+ }
+ }
+ }
+}
+/* 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
diff -r 000000000000 -r f16f5fb2d1b9 mbed.bld --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/mbed.bld Wed Mar 04 00:51:01 2020 +0000 @@ -0,0 +1,1 @@ +https://os.mbed.com/users/mbed_official/code/mbed/builds/65be27845400 \ No newline at end of file