5 years, 6 months ago.

STM32F401RE-Nucleo LED and BUTTON's problem

Hi,

I am trying to run a simple program on my new Nucleo board,

I made this program in order to turn on and off the green led when i press the user's button (the blue one), http://pastebin.com/9Q7KxsVA

STM32F401RE-Nucleo LED and BUTTON's problem

#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);
	
	while (1) {
		if (HAL_GPIO_ReadPin(GPIOC, GPIO_PIN_13)) {			
			HAL_GPIO_WritePin(GPIOA, GPIO_PIN_5, GPIO_PIN_RESET); 
		} else {
			HAL_GPIO_WritePin(GPIOA, GPIO_PIN_5, GPIO_PIN_SET);
		}
	}
}

But i am getting wrong result:

  • when i press the user's button, nothing happen,
  • when i keep pressing the user's button and i restart (by pressing the black button), i get good result,

It seems like the program checks the state of the blue button only at the first run, i don't know why,

Please help me if you have any ideas of what the problem comes from, or if you have a running program that switch the led on button press.

Thank you,

2 Answers

5 years, 6 months ago.

Works fine for me! The compiler cannot find stm32f4xx_nucleo.h. You do not need all the stm header files, all you need is mbed.h. Have you updated the stlink firmware?

5 years, 6 months ago.

Hi,

This mbed example do this in a simple way:

http://developer.mbed.org/teams/ST/code/Nucleo_read_button/

Regards.