PC14 y PC15 en STM32F401 no funcionan como entradas

Estoy tratando de usar PC14 y PC15 en la placa Nucleo F401RE, como entradas usando este código simple:

  RCC_LSEConfig(RCC_LSE_OFF);


  RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOC, ENABLE);

  // initialize ID pins as inputs
  GPIO_InitTypeDef gpio_init_struct;
  GPIO_StructInit(&gpio_init_struct);
  gpio_init_struct.GPIO_Mode = GPIO_Mode_IN;
  gpio_init_struct.GPIO_PuPd = GPIO_PuPd_UP;
  gpio_init_struct.GPIO_Pin = GPIO_Pin_13 | GPIO_Pin_14 | GPIO_Pin_15;
  GPIO_Init(GPIOC, &gpio_init_struct);


  // read ID pins
  uint8_t inputs_state = 0;
  inputs_state |= GPIO_ReadInputDataBit(GPIOC, GPIO_Pin_13);
  inputs_state |= GPIO_ReadInputDataBit(GPIOC, GPIO_Pin_14) << 1;
  inputs_state |= GPIO_ReadInputDataBit(GPIOC, GPIO_Pin_15) << 2;

Desafortunadamente, aunque PC13 funciona como se esperaba, PC14 y PC15 siempre se mantienen altos en caso de configuración pull-up o bajos en caso de pull-down.

La referencia en la página 155 dice:

Los pines del oscilador LSE OSC32_IN y OSC32_OUT se pueden usar como E/S PC14 y PC15 de propósito general, respectivamente, cuando el oscilador LSE está apagado. Las E/S de PC14 y PC15 solo se configuran como pines del oscilador LSE OSC32_IN y OSC32_OUT cuando el oscilador LSE está activado. Esto se hace configurando el bit LSEON en el registro RCC_BDCR. La LSE tiene prioridad sobre la función GPIO.

Así que estoy desactivando LSE, pero todavía no tengo resultados. ¿Qué me estoy perdiendo?

Respuestas (1)

Uno de los problemas que encuentro es la configuración del puente.

Por defecto, ambos puentes SB48 y SB49 están abiertos.

ingrese la descripción de la imagen aquí

Referencia: Esquemas del Núcleo F401RE

La segunda forma es medir más tarde la resistencia de las resistencias resaltadas y los pines 25 y 27
del conector CN7 . Si la configuración del hardware está bien, debería leer cero ohmios aproximadamente.
ingrese la descripción de la imagen aquí

Maldición, olvidé por completo revisar el esquema de Nucleo. ¡Gracias!