PG2 La salida GPIO en Nucleo-F767ZI no funciona

0

Hice una placa en la que conecto la placa del microcontrolador Nucleo-F767ZI. Hay un pin GPIO que no puedo usar como salida digital: PG2 .

Este es mi código en mbed-os:

static DigitalOut myPin_A(PG_2);
static DigitalOut myPin_B(PG_3);

...

static void someFunction()
{
    myPin_A.write(1);    // <- This one doesn't work :-(
    myPin_B.write(1);    // <- But this one works!
}

Pensé: "Quizás este problema tiene que ver con mbed-os". Así que he probado el ST HAL:

static void someFunction()
{
    GPIO_InitTypeDef GPIO_InitStruct;

    GPIO_InitStruct.Pin = GPIO_PIN_2;
    GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP;
    GPIO_InitStruct.Pull = GPIO_NOPULL;
    GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW;
    HAL_GPIO_Init(GPIOG, &GPIO_InitStruct);

    GPIO_InitStruct.Pin = GPIO_PIN_3;
    GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP;
    GPIO_InitStruct.Pull = GPIO_NOPULL;
    GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW;
    HAL_GPIO_Init(GPIOG, &GPIO_InitStruct);

    HAL_GPIO_WritePin(GPIOG, GPIO_PIN_2, GPIO_PIN_SET); // <- This one doesn't work :-(
    HAL_GPIO_WritePin(GPIOG, GPIO_PIN_3, GPIO_PIN_SET); // <- But this one works!
}

Como puedes ver, obtengo exactamente el mismo resultado. Probé con otra placa Nucleo-F767ZI independiente. No la conecto a mi placa personalizada para asegurarme de que el pin PG2 no se ve afectado por nada fuera de Nucleo, pero aún así obtuve el mismo resultado.

EDIT He generado un nuevo proyecto desde cero con CubeMX. Como saben, CubeMX no admite mbed-os, sino freeRTOS en su lugar. Cuando se usa freeRTOS, el pin PG_2 funciona, usando el código dado arriba.
¿Por qué no lo hago funcionar cuando mbed-os se está ejecutando? Esto es tan extraño :-(

    
pregunta K.Mulier

1 respuesta

0

No veo ninguna razón obvia. El tablero Nucleo no parece estar haciendo nada especial con esos pines.

Cada uno de estos pines específicos tiene un par de funciones alternativas. ¿Está utilizando el módulo FMC? ¿O podría tener PG2 configurado como una señal EVENTOUT ?

Otra idea es que el controlador de salida está frito para ese pin. Cuando usó el segundo Nucleo (sin adjuntar su tablero personalizado), ¿estaba "fresco" o podrían haber sido dañados de forma similar en el pasado?

    
respondido por el bitsmack

Lea otras preguntas en las etiquetas