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.