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.
Dependencies: mbed
Revision 1:d5005327bdc4, committed 2020-06-21
- Comitter:
- Antulius
- Date:
- Sun Jun 21 05:15:50 2020 +0000
- Parent:
- 0:f680c41c1640
- Commit message:
- SSTM32F103C8T6_Adivina. Programa para probar la Terminal Serial de la Tarjeta "Blue Pill" e interactuar con el Usuario.
Changed in this revision
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/BluePill/PinNames.h Sun Jun 21 05:15:50 2020 +0000
@@ -0,0 +1,201 @@
+/* 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:
+ *
+ * 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;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/BluePill/SysClockConf.cpp Sun Jun 21 05:15:50 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();
+}
\ No newline at end of file
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/BluePill/SysClockConf.h Sun Jun 21 05:15:50 2020 +0000 @@ -0,0 +1,7 @@ +#ifndef CONFSYSCLOCK_H +#define CONFSYSCLOCK_H + +#pragma once +void confSysClock(void); + +#endif \ No newline at end of file
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/BluePill/stm32f103c8t6.h Sun Jun 21 05:15:50 2020 +0000 @@ -0,0 +1,4 @@ +#pragma once +#include "PinNames.h" +#include "SysClockConf.h" +
--- a/PinNames.h Thu Sep 05 23:29:04 2019 +0000
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,155 +0,0 @@
-/* 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:
- *
- * 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
-
-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_2,
- USBRX = PB_3,
- CANRX = PB_8,
- CANTX = PB_9,
- I2C_SCL = PB_8,
- I2C_SDA = PB_9,
- SPI_MOSI = PA_7,
- SPI_MISO = PA_6,
- SPI_SCK = PA_5,
- SPI_CS = PB_6,
- PWM_OUT = PB_3
-} PinName;
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif
--- a/SysClockConf.cpp Thu Sep 05 23:29:04 2019 +0000
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,56 +0,0 @@
-/*
- ******************************************************************************
- * @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();
-}
\ No newline at end of file
--- a/SysClockConf.h Thu Sep 05 23:29:04 2019 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,2 +0,0 @@ -#pragma once -void confSysClock(void); \ No newline at end of file
--- a/main.cpp Thu Sep 05 23:29:04 2019 +0000
+++ b/main.cpp Sun Jun 21 05:15:50 2020 +0000
@@ -2,12 +2,14 @@
** Archivo : main.c
** Proyecto : STM32-103C8_Adivina
** Procesador : STM32F103C8
+** Plataforma : Blue Pill
** Herramienta : Mbed
-** Version : Driver 01.01
-** Compilador : GNU C Compiler
-** Fecha/Hora : 14-07-2015, 11:48, # CodeGen: 0
+** Compilador : Mbed Online C Compiler
+** Version : Mbed-OS 5.15.0
+** Fecha/Hora : 18-12-2019, 11:48, # CodeG
** Descripción :
** Este proyecto muestra la configuración y uso de la Terminal Serial
+** para intercurar con el usuar a traves del juego de "Adivina el Número"
** This module contains user's application code.
** Componentes : Timer, etc .
** Configuraciones : Se puede seleccionar entre diferentes velocodades de
@@ -41,20 +43,39 @@
: 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 LED_Type 0 // Tipo de LED RGB: 0=Cátodo Común, 1=Ánodo Común
+#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 Buzz_Off 0 // Estado del Buzzer Apagado
+#define Buzz_On 1 // Estado del Buzzer Encendido
+#define Baud_Rate 115200 // Velocidad de Transmisión (Bauds)
+ // Velocidades Permitidas:
+ // 300, 600, 1200, 2400, 4800, 9600,
+ // 14400, 19600, 28800, 38400, 57600
+ // 115200, 230400
+#if Display_Type == 0 // Si el Led RGB es Cátodo Común
+#define led_on 1 // Estado para el Led encendido
+#define led_off 0 // Estado para el Led encendido
+#endif
+
+#if Display_Type == 1 // Si el Led RGB es Ánodo Común
+#define led_on 0 // Estado para el Led encendido
+#define led_off 1 // Estado para el Led encendido
+#endif
/*
+-------------------------------------------------------------------------------
| Configuración de Puertos
+-------------------------------------------------------------------------------
*/
-DigitalOut verde (LED1); // PC_13 (Green_Led)
-DigitalOut rojo (PB_1); // NC (Red_Led)
-
+DigitalOut led_monitor(LED1); // Inicializa el LED Monitor (Interno)
+DigitalOut led_azul(PB_0); // Inicializa el PWM1 (PB0_TIM3_CH3) Led AZUL
+DigitalOut led_verde(PA_7); // Inicializa el PWM2 (PA7_TIM3_CH2) Led VERDE
+DigitalOut led_rojo(PA_6); // Inicializa el PWM3 (PA6_TIM3_CH1) Led ROJO
+PwmOut buzzer(PB_1); // PB1_TIM3_CH4N
// ***** Host PC Terminal Communication channels
Serial terminal (PA_2, PA_3); // Inicializa la comunicación serial a la PC (Tx,Rx)
//Serial terminal(USBTX, USBRX,115200);// Tx, Rx Baud Rate - Terminal Serial por USB @ 115,200 Bauds
@@ -64,13 +85,15 @@
| Variables Globales de Usuario
+-------------------------------------------------------------------------------
*/
-//uint32_t Baud_Rate = 9600; // Velocidad de Transmisión (Bauds)
+uint8_t Seleccion; // Seleccion de opción para el menú
/*
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
| Definición de Funciones Prototipo y Rutinas de los Vectores de Interrupción
-++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
*/
-void Setup(void);
+void setup(void);
+void buzzer_test(void);
+void clear_screen(void);
/* END definitions */
/*
@@ -82,53 +105,77 @@
*/
int main()
{ // Inicialización de variables, puertos e interrupciones
-confSysClock(); // Configure system clock (72MHz HSE clock, 48MHz USB clock)
-Setup(); // Inicialización del sistema
- terminal.printf ("ADIVINA\n\r");
- rojo = off;
- verde = off;
-
- while(TRUE)
- {
-Inicio: terminal.printf(" DIGITE UN NUMERO SECRETO DE 0 A 9 \r\n");
+ confSysClock(); // Configure system clock (72MHz HSE clock, 48MHz USB clock)
+ setup(); // Inicialización del sistema
+ terminal.printf ("ADIVINA\n\r");
+ led_rojo = led_off;
+ led_verde = led_off;
+ led_azul = led_off;
+ terminal.printf(" System is Wake Up!.\n\r"); // e inicia la comunicación serial
+ terminal.printf ("\t\e[1;37;41mInstituto Politecnico Nacional\e[0m\n\r");
+ terminal.printf ("\e[1;37;42mESCUELA SUPERIOR DE INGENIERIA MECANICA Y ELECTRICA\e[0m\n\r\v");
+ terminal.printf ("\t\e[1;34;40mAdivina \e[1;37;40mel \e[1;32;40mNumero \e[1;33;40mSecreto \e[0m\n\r\v\v\e[0m");
+ terminal.printf("Pulse Cualquier Tecla para continuar..."); // Pausa
+ Seleccion=getchar();
+ while(TRUE)
+ {
+Inicio: clear_screen(); // Limpia la Pantalla de la Terminal
+ terminal.printf(" DIGITE UN NUMERO SECRETO DE 0 A 9 \r\n");
char secreto = terminal.getc();
- rojo = on;
- verde = on;
- Intenta: terminal.printf(" ADIVINA EL NUMERO: \r\n");
+ led_rojo = led_on ;
+ led_verde = led_on ;
+ led_azul = led_on ;
+ clear_screen(); // Limpia la Pantalla de la Terminal
+Intenta: terminal.printf(" ADIVINA EL NUMERO: \r\n");
char respuesta = terminal.getc();
if( secreto < respuesta )
{
terminal.printf(" Es mas Bajo \r\n");
- rojo = on;
- verde = off;
+ led_rojo = led_on ;
+ led_verde = led_off;
+ led_azul = led_off;
goto Intenta;
}
if( secreto > respuesta )
{
terminal.printf(" Es mas Alto \r\n");
- rojo = off;
- verde = on;
+ led_rojo = led_off;
+ led_verde = led_off;
+ led_azul = led_on ;
goto Intenta;
}
if( secreto == respuesta )
{
terminal.printf(" CORRECTO!, Es igual a: %c \r\n",secreto);
- rojo = off;
- verde = on;
+ led_rojo = led_off;
+ led_verde = led_on ;
+ led_azul = led_off;
wait(1.0);
- rojo = off;
- verde = off;
+ led_rojo = led_off;
+ led_verde = led_off;
+ led_azul = led_off;
wait(1.0);
- rojo = off;
- verde = on;
+ led_rojo = led_off;
+ led_verde = led_on ;
+ led_azul = led_off;
wait(1.0);
terminal.printf(" Eres un Genio !!! \r\n");
wait(1.0);
- rojo = on;
- verde = off;
+ led_rojo = led_on ;
+ led_verde = led_off;
+ led_azul = led_on ;
+ wait(1.0);
+ led_rojo = led_on ;
+ led_verde = led_on ;
+ led_azul = led_off;
wait(1.0);
- rojo = off;
- verde = on;
+ led_rojo = led_off;
+ led_verde = led_on ;
+ led_azul = led_on ;
+ wait(1.0);
+ led_rojo = led_on ;
+ led_verde = led_on ;
+ led_azul = led_on ;
}
terminal.printf(" Quieres intentarlo de nuevo? \r\n");
terminal.printf(" 0 = No \r\n 1 = Si \r\n");
@@ -136,6 +183,9 @@
if( opcion == '1' ) goto Inicio;
else if( opcion == '0' )
{
+ led_rojo = led_off;
+ led_verde = led_off;
+ led_azul = led_off;
terminal.printf(" Eso es todo Amigos! \r\n");
break;
}
@@ -158,17 +208,124 @@
|_______________________________________________________________________________
*/
// Las Funciones Prototipo van aquí !
-void Setup()
+void setup()
+{
+ terminal.baud(Baud_Rate); // Se configura la velocidad de transmisión
+ terminal.printf("\r System is Wake Up!.\n\r"); //e inicia la comunicación a la Terminal.
+ buzzer_test();
+ clear_screen();
+}
+
+void buzzer_test() // Software Blinking routine for LED
{
-// terminal.baud(Baud_Rate); // Se configura la velocidad de transmisión e inicia la comunicación serial.
- terminal.baud(115200); // Se configura la velocidad de transmisión e inicia la comunicación serial.
- terminal.printf(" System is Wake Up!.\n\r");
-}
+ /* Prueba del Buzzer */
+ 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");
+}
+
+void clear_screen()
+{
+//ANSI Terminal Commands
+ terminal.printf("\x1B[2J");
+ terminal.printf("\x1B[H");
+}
/* END routines */
/* END program */
-
+/*+-----------------------------------------------------------------------------
+*+ La documentación va aquí!:
+*+-----------------------------------------------------------------------------
+*+ Conexión al Led RGB:
+*+------------------------------------------------------------------------------
+*+
+*+ Los leds se pueden conectar a cualquier pin que se declare como DigitalOut.
+*+ El dispositivo puede drenar hasta 20ma por todas sus salidas a un voltaje de
+*+ 3.3V, pero se recomienda no exceder de 1mA por salida.
+*+ Esto se logra poniendo una resistencia limitadora de mínimo 330 Ohms.
+*+
+*+
+*+ PIN (Digital Out)
+*+
+*+ Led ROJO Led VERDE Led AZUL
+*+
+*+ R GND G B
+*+ O O O O
+*+ | | | |
+*+ | | | |
+*+ / | / /
+*+ \ 1K | \ 2K \ 2.2K
+*+ / | / /
+*+ \ | \ \ UTILIZANDO LED RGB DE CÁTODO COMÚN
+*+ | | | |
+*+ | | | |
+*+ ___|___ | ___|___ ___|___
+*+ \ / | \ / \ /
+*+ \ / | \ / \ /
+*+ \ / | \ / \ /
+*+ __\/__ | __\/__ __\/__
+*+ | | | |
+** | | | |
+*+ |________|_______|________|
+*+
+*+
+*+
+*+ PIN (Digital Out)
+*+
+*+ Led ROJO Led VERDE Led AZUL
+*+
+*+ R VCC G B
+*+ O O O O
+*+ | | | |
+*+ | | | |
+*+ / | / /
+*+ \ 2K | \ 1K \ 1K
+*+ / | / /
+*+ \ | \ \ UTILIZANDO LED RGB DE ÁNODO COMÚN
+*+ | | | |
+*+ | | | |
+*+ ___|___ | ___|___ ___|___
+*+ /\ | /\ /\
+*+ / \ | / \ / \
+*+ / \ | / \ / \
+*+ /______\ | /______\ /______\
+*+ | | | |
+** | | | |
+*+ |________|_______|________|
+*+
+*+
+*+
+*+------------------------------------------------------------------------------
+*+ Descripción del Coexionado del Buzzer
+*+------------------------------------------------------------------------------
+*+
+*+ 150
+*+ PWM Pin -----/\/\/\/-------|
+*+ |
+*+ | +
+*+ |
+*+ ( o ) BUZZER
+*+ |
+*+ |
+*+ |
+*+ |
+*+ -----
+*+ ---
+*+ -
+*+
+*+------------------------------------------------------------------------------
+*/
/* END documentation */
/*
+--------------------------------------------------------------------------------
@@ -183,13 +340,13 @@
|
| EXAMEN
|
-| 1.- Modificar el programa para que despliegue el número de intentos para
-| adivinar el número secreto.
-| 2.- Modificar el programa para haga eco con la respuesta que le introducimos.
-|
-| 3.- Modificar el programa para que el número secreto sea generado aleatoriamente.
-| a) Generar un Número Pseudo Aleatorio Mediante el Ticker
-| b) Utilizando la función RANDOMIZE
+| 1.- Modificar el programa para que despliegue el número de intentos para
+| adivinar el número secreto.
+| 2.- Modificar el programa para haga eco con la respuesta que le introducimos.
+| 3.- Bloquear el programa despues de cierto número de intentos
+| 4.- Modificar el programa para que el número secreto sea generado aleatoriamente.
+| a) Generar un Número Pseudo Aleatorio Mediante el Ticker
+| b) Utilizando la función RANDOMIZE
| Suerte!
+--------------------------------------------------------------------------------
|
--- a/stm32f103c8t6.h Thu Sep 05 23:29:04 2019 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,4 +0,0 @@ -#pragma once -#include "PinNames.h" -#include "SysClockConf.h" -