I'm trying to use PC14 and PC15 on Nucleo F401RE board, as inputs using this simple code:
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;
Unfortunately, while PC13 works as expected, PC14 and PC15 always stay high in case of pull-up configuration or low in case of pull-down.
The reference on page 155 states:
The LSE oscillator pins OSC32_IN and OSC32_OUT can be used as
general-purpose PC14 and PC15 I/Os, respectively, when the LSE
oscillator is off. The PC14 and PC15 I/Os are only configured as LSE
oscillator pins OSC32_IN and OSC32_OUT when the LSE oscillator is ON.
This is done by setting the LSEON bit in the RCC_BDCR register. The
LSE has priority over the GPIO function.
So I'm setting LSE off, but still no result. What am I missing?
Best Answer
One of the issue I find is the jumper settings
By default, both jumpers SB48 and SB49 are open.
Reference: Schematics of Nucleo F401RE
Second way is to later measure the resistance from the resistors highlighted and
![enter image description here](https://i.stack.imgur.com/HZnXL.png)
connector CN7 pin numbers 25 and 27.
If the hardware settings is fine, you should read zero ohms approximately.