STM32F401RE-Nucleo LED-und BUTTON-Beispiel

Ich versuche zu laufen, ein einfaches Programm auf meinem neuen Nucleo board,

Ich habe dieses Programm entwickelt, um ein-und ausschalten der grünen led, wenn ich drücken Sie die Benutzer-Taste (die Blaue),

#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);
        }
    }
}

Aber ich bin immer falsche Ergebnis:

  • wenn ich drücken Sie die user-Taste, nichts passiert,
  • wenn ich drücken Sie die Benutzer-Taste, und ich neu starten (durch drücken der schwarzen Taste), bekomme ich gute Ergebnis,

Scheint es, wie das Programm überprüft den Zustand der blauen Taste nur bei der ersten Ausführung, ich weiß nicht, warum,

Bitte helfen Sie mir, wenn Sie irgendwelche Ideen, was das problem kommt, oder wenn Sie ein Programm, schalten Sie die led-Taste drücken.

InformationsquelleAutor Samy Toubal | 2015-04-07
Schreibe einen Kommentar