Interrupciones externas en stm32f10x

0

No estoy seguro de cómo funcionarán las interrupciones externas con varios periféricos en la misma línea EXTI.

Por ejemplo, si configuré la interrupción en la línea X y en la misma línea (por supuesto, otro puerto GPIO) Tengo SPI MOSI o SCK, o quizás ADC funcionando, ¿recibiría una interrupción cada vez que se activara uno de estos pines? Y si lo hago, ¿es posible obtener información sobre qué pin se activó realmente?

Gracias.

    
pregunta Long Smith

2 respuestas

1

Cuando utilice un pin GPIO para interrupciones externas (sin configurar la función alternativa para el pin), puede tener exactamente una interrupción por línea . Por lo tanto, nunca puede tener una interrupción externa para PA6 y PB6 ya que están ubicadas en la misma línea .

Sin embargo, cuando esté activando la función alternativa para un pin como lo haría para SPI y otros periféricos, obtendrá la interrupción del mismo periférico (es decir, otro vector de interrupción).

No puede configurar un pin como función alternativa y como pin GPIO (con interrupción externa).

    
respondido por el staringlizard
2

Los puertos de E / S en el STM32F10x están organizados en 7 grupos de 16, designados como PA0, PA1, ... PA15, PB0, ... hasta PG15. Normalmente, solo un subconjunto de estos se lleva a los pines.

Para desencadenar una interrupción, se debe configurar un puerto en el modo de entrada.

PAx, PBx, ... PGx (x = 0..15) se mezclan en la línea de interrupción externa x, por lo que solo uno de estos puertos controla la línea x. Ese puerto se selecciona mediante el campo de bit EXTIx en el registro AFIO_EXTICRy (y = 1..4). Los otros puertos en la línea x se ignoran en lo que respecta a las interrupciones externas.

La línea x se desenmascara al escribir un '1' en el bit apropiado en el registro EXTI_IMR, y se selecciona el activador de flanco ascendente y / o descendente en los registros EXTI_RTSR y EXTI_FTSR.

Por ejemplo, para que haya una interrupción externa en PC4 en aumento, configure los bits EXTI4 en el registro AFIO_EXTICR2 en (binario) 0010 para seleccionar el puerto PC4. Escriba un '1' en el bit MR4 en EXTI_IMR para habilitar la Línea 4, y en TR4 en EXTI_RTSR para seleccionar el flanco ascendente. (En este caso, PA4, PB4 y PD4-PG4 no están disponibles como fuentes de interrupción externas).

El registro EXTI_PR se puede leer para determinar qué líneas tienen interrupciones pendientes.

El NVIC debe estar configurado para aceptar y procesar la solicitud de interrupción. Las interrupciones externas de 0 a 4 tienen vectores de interrupción individuales, pero de 5 a 9 comparten un vector, al igual que de 10 a 15.

    
respondido por el user28910

Lea otras preguntas en las etiquetas