I just started to learn how to program with Nucleo board and decided to do a simple task. When I press my User button I want my LED to turn on (Off at the start). I have the following issues and I am not quite sure of what is the answer. I am wondering if it is specific to STM32 or it is a subtlety that I do not understand.
I am running the following code. My interrogation is that currently my LED is always turned on and Only when I press the user button does it go off. It does not make sense to me that When I press my button the value of my PinState = 0. I thought it should be one.
Thank you in advance
#include "stm32f4xx.h"
#include "stm32f4xx_nucleo.h"
#include "system_stm32f4xx.h"
#include "stm32f4xx_hal_gpio.h"
#include "stm32f4xx_hal_rcc.h"
GPIO_InitTypeDef GPIO_InitStructure;
int main(void) {
HAL_Init();
__GPIOA_CLK_ENABLE();
GPIO_InitStructure.Pin = GPIO_PIN_5;
GPIO_InitStructure.Mode = GPIO_MODE_OUTPUT_PP;
GPIO_InitStructure.Pull = GPIO_PULLUP;
GPIO_InitStructure.Speed = GPIO_SPEED_HIGH;
HAL_GPIO_Init(GPIOA, &GPIO_InitStructure);
__GPIOC_CLK_ENABLE();
GPIO_InitStructure.Pin = GPIO_PIN_13;
GPIO_InitStructure.Mode = GPIO_MODE_INPUT;
GPIO_InitStructure.Pull = GPIO_PULLDOWN;
GPIO_InitStructure.Speed = GPIO_SPEED_FAST;
HAL_GPIO_Init(GPIOC, &GPIO_InitStructure);
int PinState;
while (1)
{
PinState = HAL_GPIO_ReadPin(GPIOC,GPIO_PIN_13);
if(PinState == 1){
HAL_GPIO_WritePin(GPIOA,GPIO_PIN_5, GPIO_PIN_SET);
}
else {
HAL_GPIO_WritePin(GPIOA,GPIO_PIN_5, GPIO_PIN_RESET);
}
}
}