Estoy tratando de usar PC14 y PC15 en la placa Nucleo F401RE, como entradas usando este simple código:
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, mientras que PC13 funciona como se espera, PC14 y PC15 siempre se mantienen altos en caso de configuración de pull-up o bajos en caso de pull-down.
El reference en la página 155 estados:
Los pines del oscilador LSE OSC32_IN y OSC32_OUT se pueden usar como E / S de PC14 y PC15 de propósito general, respectivamente, cuando el LSE El oscilador está apagado. Las E / S PC14 y PC15 solo están configuradas como LSE los pines del oscilador OSC32_IN y OSC32_OUT cuando el oscilador LSE está encendido. Esto se hace estableciendo el bit LSEON en el registro RCC_BDCR. los LSE tiene prioridad sobre la función GPIO.
Así que estoy desactivando LSE, pero aún no hay resultados. ¿Qué me estoy perdiendo?