Forum: Mikrocontroller und Digitale Elektronik stm32f429 discovery board - Anfängerfragen


von Holger W. (hwe)


Lesenswert?

Hallo liebe Forumsmitglieder,
ich habe jetzt auch den Schritt vom AVR zum STM32 gewagt und zwar mit 
folgender Hardware und Toolchain:

-stm32F429 discovery board
-unter Debian-Linux: Eclipse + GnuArmPlugin + STM32Cube_FW_F4_V1.1.0 + 
st-flash + openocd

Ich versuche in meinem ersten Eclipse-Projekt (C-Projekt für STM32F4xx) 
per Tastendruck eine LED auszuschalten. Das klappt aber leider nur im 
Debug-Modus, wenn ich im Einzelschritt durch meine main.c hüpfe. Ohne 
Debug-Mode, wenn das Progrmam mit dem Systemtakt läuft (sind im Moment 
180MHz), funktioniert das nicht, bzw. scheint es so als würde der 
Tastendruck nicht erkannt.

EDIT: Anscheinend läuft die While-Schleife nur einmal durch und wird 
nicht widerholt, denn wenn ich mit gedrückter Taste die Resettaste 
drücke, wird die LED ausgeschaltet.

1) Warum wir der Tastendruck nicht erkannt und die LED ausgeschaltet ?
1
#include "stm32f4xx_hal.h"
2
#include "stm32f429i_discovery.h"
3
int main(void)
4
{
5
  HAL_Init();
6
  /* -1- Initialize LEDs mounted on Discovery board */
7
  BSP_LED_Init(LED3);
8
  BSP_LED_Init(LED4);
9
  /* -2-2 Initilize PushButton on Diso Board */
10
  BSP_PB_Init(BUTTON_KEY, BUTTON_MODE_GPIO);
11
  // Turn on LED3 and LD4 off to see that it is working
12
  BSP_LED_On(LED3);
13
  BSP_LED_On(LED4);
14
  uint32_t PB_state;
15
  /* Infinite loop */
16
  while (1)
17
  {
18
  PB_state=BSP_PB_GetState(BUTTON_KEY);
19
  if(PB_state != 0) BSP_LED_Off(LED4);
20
  }
21
}

Desweiteren macht mir die Toolchain (wie sie im Moment eingerichtet ist) 
Verständnissprobleme. Es wird anscheinend vor  "main.c" der Code in 
"_initialize_hardware.c" ausgeführt (Systemtakt etc.). Wenn ich dann 
Besipielcode aus Tutorials übernehmen möchte, in denen der Systemtakt in 
der "main.c" eingestellt wird, funktioniert das nicht und die Abfrage 
"...=HAL_OK..." bringt einen Fehler.

2) Wo wird denn das mit der "_initialize_hardware.c" eingestellt (muss 
doch mit dem Linker zusammenhängen) und ist das etwas "arm_non_eabi" 
spezifisches oder kommt das vom Eclipse-Gnu-Arm-Plugin ?

3) Wie kann man denn dafür Sorgen, dass die Beispiele ,welche alle 
Einstellungen (Takt, etc.) in der "main.c" einrichten auch mit meiner 
o.g. Toolchain verwendet werden können ?

4) Gibts zu der "_initialize_hardware.c" Default-Einstellung ein 
Tutorial oder eine Doku ?

Bitte helft mir meine Anlaufschwierigkeiten zu überwinden.

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.