Вы находитесь на странице: 1из 10

PROYECTO 2 ACTIVIDAD 3 MANEJO DE INTERRUPCIONES

EDUARDO RAMÍREZ ALAN


SANTIAGO CRUZ FERNANDO

1. INTRODUCCIÓN

En la práctica se busca que el equipo sea capaz de implementar la comunicación entre el


procesador de señales STM32f446re y una computadora tipo PC. Aunque el código para
programar la tarjeta ya se es dado por el profesor, la práctica incluye actividades que el alumno
debe de realizar por su cuenta para poder asegurar que se entendió completamente lo que se está
realizando.

2. METODOS
2.1. Equipo utilizado
1. Tarjeta de procesamiento: Nucleo-64 STM32F446RE
2. Computadora
3. Cable USB tipo A a Mini-B
4. Cables jump wire
2.2 Software utilizado
1. Entorno integrado de desarrollo (IDE, por sus siglas en inglés) Embitz [1]
2. Utilería de programación STM32-STLINK [2]
3. Repositorio digital del curso [3]
4. Aplicación de terminal PuTTY
3. RESULTADOS

Las actividades que el estudiante debe de realizar por su cuenta cumplen con el objetivo de
afianzar el conocimiento, por la razón de que, incluso cuando se cree que ya se entendió
completamente el funcionamiento del programa, al momento de realizar las actividades se puede
caer en cuenta de que tal vez es necesario dar un segundo vistazo a lo que se está haciendo y decidir
qué método conviene seguir pues hay más de una manera de llegar al propósito de cada actividad.

A continuación, se presenta el código modificado para cada una de las actividades


autónomas.
#include "mbed.h"
const float SAMPLING_PERIOD = 3.0;
Serial serial(USBTX, USBRX);
InterruptIn button(USER_BUTTON);

volatile unsigned short interruptCount;

void
count()
{
interruptCount++;
}

void
setup()
{
button.fall(&count);

interruptCount = 0;

serial.baud(9600);
serial.format(8, SerialBase::None, 1);
}

void
loop()
{
serial.printf("Frequency = %f\r\n",
interruptCount/SAMPLING_PERIOD);
interruptCount = 0;
wait(SAMPLING_PERIOD);
}

int
main()
{
setup();
while(1)
loop();
}

Código 1 Actividad 1
#include "mbed.h"
const float SAMPLING_PERIOD = 3.0;
Serial serial(USBTX, USBRX);
InterruptIn button(USER_BUTTON);
DigitalOut led(LED1);

volatile unsigned short interruptCount;

void
count()
{
interruptCount++;
led=!led;
}

void
setup()
{
button.rise(&count);

interruptCount = 0;

serial.baud(9600);
serial.format(8, SerialBase::None, 1);
}

void
loop()
{
serial.printf("Frequency = %f\r\n",
interruptCount/SAMPLING_PERIOD);
interruptCount = 0;
wait(SAMPLING_PERIOD);
}

int
main()
{
setup();
while(1)
loop(); Código 2 Actividad 2
}
#include "mbed.h"
const float SAMPLING_PERIOD = 1.0;
Serial serial(USBTX, USBRX);
InterruptIn button(USER_BUTTON);
InterruptIn button2(PA_0);

volatile unsigned short interruptCount;

void
count()
{
interruptCount++;
}
void count2()
{
interruptCount--;
}
void
setup()
{
button.fall(&count);
button2.fall(&count2);
interruptCount = 0;

serial.baud(9600);
serial.format(8, SerialBase::None, 1);
}

void
loop()
{
serial.printf("Numero de interrupciones = %f\r\n",
interruptCount/SAMPLING_PERIOD);
}

int
main()
{
setup();
while(1)
loop();
}

Código 3 Actividad 3
A continuación, se muestran las fotos de la tarjeta programada y comunicación con la PC.
La figura 1 muestra la configuración de la aplicación para la comunicación.

Figura 1 Configuración de la comunicación

En la figura 2 muestra la frecuencia del botón en un tiempo de muestreo de 3 segundos,


correspondiente a la actividad 1.

Figura 2 Actividad 1

La figura 3, muestra la frecuencia para la actividad 2, las figuras 4 y 5 muestran como


conmuta el led de usuario.
Figura 3 Actividad 2
Figura 4 Led de usuario apagado

Figura 5 Led de usuario encendido


La figura 6 muestra la actividad 3 y la figura 7 muestra la conexión entre la tarjeta y un botón
externo.

Figura 6 Número de interrupciones

Figura 7 Tarjeta programada con botón externo


A continuación, se presenta un link con los videos de las actividades funcionando.
https://drive.google.com/folderview?id=1CNyB7RzGGPEi3mpb8qNDlkwSjHjqKsJ2

4. CONCLUSIONES

La comunicación entre la tarjeta de desarrollo y la PC es fácil de comprender con este tipo


de programación y es en verdad muy útil cuando se necesiten enviar y recibir datos en sistemas
más complejos.

5. REFERENCIAS
[1] Informer Technologies, inc. «Embitz 1.11». Software.informer. 7 jun. 2019. Web 3 sep.
2019. < https://embitz.software.informer.com >
[2] STMicroelectronics. «STSW-LINK004». STMicroelectronics. 2019. Web 3 sep. 2019. <
https://www.st.com/content/st_com/en/products/development-tools/software-development-
tools/stm32-software-development-tools/stm32-programmers/stsw-link004.html >
[3] Gastón Hugo Salazar Silva. «STM32F4». GitHub, inc. 22 ago. 2019. Web 3 sep. 2019 <
https://github.com/ghsalazar/stm32f4 >