GPIO control de pin de función alternativa

0

Tengo un STM32F4discovery y uso un pin como SPI CLK. Pero también quiero poder controlar el pin como GPIO para generar CUALQUIER frecuencia que deseo (STM32 solo te permite precalificar el reloj APB).

¿Cómo puedo simplemente usar GPIO_Toggle () en ese pin alternativo?

    
pregunta Dr. Sahib

1 respuesta

1

Debe reinicializar el pin como una salida controlada por software. Por ejemplo, si está utilizando la biblioteca periférica estándar STM32, y suponiendo que el pin en cuestión es PA5, tendría que hacer algo como:

GPIO_InitTypeDef GPIO_InitStructure;

GPIO_StructInit(&GPIO_InitStructure);
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_OUT;
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_5;
GPIO_Init(GPIOA, &GPIO_InitStructure);

Posiblemente también necesitarías establecer el campo GPIO_InitStructure.GPIO_Speed si la señal de tu reloj es más rápida que 2 MHz (la configuración predeterminada).

De ahora en adelante, puede hacer GPIO_Toggle(GPIOA, GPIO_Pin_5) y funcionaría, ya que el pin ahora está bajo el control del software. Por supuesto, al estar bajo el control del software, el periférico que alterna el reloj SPI ya no tendrá efecto en el pin. Si alguna vez desea delegar el control del pin de nuevo en el periférico, ejecutará el código nuevamente, pero establecerá el campo GPIO_Mode en GPIO_Mode_AF .

    
respondido por el swineone

Lea otras preguntas en las etiquetas