EXTI STM32F746ZGVT
SISTEMAS EMBEBIDOS
Ing. Germán Leandro Vargas Fonseca Esp
INTERRUPCIONES
Señal o instrucción recibida por un procesador
para indicarle que debe interrumpir la
ejecución normal del programa, y debe pasar a
ejecutar el código especifico, y por ultimo
regresa al programa actual.
El código se conoce como ISR (Interrupt Service
Routine).
INTERRUPCIONES-NVIC
INTERRUPCIONES-NVIC
El NVIC es una parte integral de todos los procesadores Cortex-M y proporciona las capacidades de
procesamiento de interrupciones excepcionales de los procesadores.
Las interrupciones son controladas por el controlador de interrupción de vector anidado (NVIC).
El NVIC está diseñado para un manejo rápido y eficiente de las interrupciones
En una Cortex-M llegará a la primera línea de código C, a su rutina de interrupción ISR después de 12
ciclos de reloj.
Las instrucciones de varios ciclos pueden detenerse sin sobrecarga y luego reanudarse una vez que la
interrupción ha finalizado
Configuración 16 Niveles de Prioridad para las Interrupciones
NVIC_EnableIRQ(EXTIX_IRQn) Habilita en vector de interrupción
*RM0385 PÁG. 285
*PM0253 PÁG 184
INTERRUPCIONES-NVIC
INTERRUPCIONES-NVIC
INTERRUPCIONES
16 EXTI (Interrupciones Externa) EXTI0 a EXTI15 - GPIO
*RM0385 PÁG. 292
INTERRUPCIONES
8 EXTI – EXTI16 a EXTI23, conectadas de la siguiente manera:
*RM0385 PÁG. 293
INTERRUPCIONES
REGISTROS -INTERRUPCIONES
SYSCFG external interrupt configuration register 1
SYSCFG_EXTICR1
REGISTROS -INTERRUPCIONES
SYSCFG external interrupt configuration register 2
SYSCFG_EXTICR2
REGISTROS -INTERRUPCIONES
SYSCFG external interrupt configuration register
SYSCFG_EXTICR1 : EXTI0[0:3] – EXTI3[0:3]
SYSCFG_EXTICR2 : EXTI4[0:3] – EXTI7[0:3]
SYSCFG_EXTICR3 : EXTI8[0:3] – EXTI11[0:3]
SYSCFG_EXTICR4 : EXTI12[0:3] – EXTI15[0:3]
*RM0385 PÁG. 214-216
REGISTROS -INTERRUPCIONES
RCC APB2
peripheral clock enable register
(RCC_APB2ENR)
*RM0385 PÁG. 166
EXTI REGISTROS -INTERRUPCIONES
Interrupt mask register (EXTI_IMR)
*RM0385 PÁG. 293
EXTI REGISTROS -INTERRUPCIONES
Event mask register (EXTI_EMR)
*RM0385 PÁG. 293
EXTI REGISTROS -INTERRUPCIONES
Rising trigger selection register (EXTI_RTSR)
*RM0385 PÁG. 294
EXTI REGISTROS -INTERRUPCIONES
Falling trigger selection register (EXTI_FTSR)
*RM0385 PÁG. 294
EXTI REGISTROS -INTERRUPCIONES
Pending register (EXTI_PR)
*RM0385 PÁG. 295
#include <stdio.h>
#include <STM32F7xx.h> EJEMPLO -INTERRUPCIONES
int main(void){
RCC->APB2ENR |=
RCC->AHB1ENR =
GPIOD->MODER=
GPIOD->OTYPER=
GPIOD->OSPEEDR=
GPIOD->PUPDR=
SYSCFG->EXTICR[0]=
EXTI->IMR =
EXTI->EMR =
EXTI->FTSR =
//EXTI->RTSR =
NVIC_EnableIRQ(EXTI0_IRQn); // Permite habilitar la interrupción vector
while(true){ }
}
EJEMPLO -INTERRUPCIONES
#include <stdio.h>
#include <STM32F7xx.h>
extern "C" {
void EXTI0_IRQHandler(void) {
//función de interrupción
EXTI->PR |= 0; //baja bandera
}
}
int main(void){
//configuración interrupción
//configuración GPIO
// while(true){}
}
}
SYSTICK
Temporizador de 24 bits.
Cuenta de forma descendente.
Genera una interrupción cuando el registro interno
llega a cero desde el valor de recarga inicial
*RM0385 PÁG. 285
*PM0253 PÁG 212
EJEMPLO -SYSTICK
INTERRUPCIONES
*RM0385 PÁG. 285
INTERRUPCIONES
*RM0385 PÁG. 285