Hallo, ich bin neu in der Cortex M4 Welt. Ich habe mir Keil uVision5 installiert und mir das Beispielprojekt "Blinky" für das Discovery board mit dem STM32F407VG runtergeladen. Ich kann das Beispiel bauen aber beim flashen gibt es Probleme. Ich bekomme folgende Fehlermeldung: Full Chip Erase Done. No Algorithm found for: 08000000H - 080008D7H Programming skipped! Error: Flash Download failed - "Cortex-M4" kann mir jemand weiterhelfen? Gruß
Hallo Du musst in den Keil Settings den richtigen UC auswählen und zu den Programming Algorithm hinzufügen. Keil: Options for Target —> Utilities -> Programming Algorithm ->Add Flash Programming Algorithm Falls dein STM dort nicht auftaucht kann du einen anderen STM32F4XXX nehmen und ggf. die ROM und RAM-Grösse anpassen. Gruss Steff
ok, habs hinbekommen und ich kann der uC erfolgreich flashen, jedoch funktioniert mein Code nicht...vielleicht weis einer warum:
1 | #include <stdio.h> |
2 | #include "STM32F4xx.h" |
3 | #include "GPIO_STM32F4xx.h" |
4 | |
5 | volatile uint32_t msTicks; /* counts 1ms timeTicks */ |
6 | |
7 | /*----------------------------------------------------------------------------
|
8 | SysTick_Handler
|
9 | *----------------------------------------------------------------------------*/
|
10 | void SysTick_Handler(void) { |
11 | msTicks++; |
12 | }
|
13 | |
14 | /*----------------------------------------------------------------------------
|
15 | delays number of tick Systicks (happens every 1 ms)
|
16 | *----------------------------------------------------------------------------*/
|
17 | void Delay (uint32_t dlyTicks) { |
18 | uint32_t curTicks; |
19 | |
20 | curTicks = msTicks; |
21 | while ((msTicks - curTicks) < dlyTicks); |
22 | }
|
23 | |
24 | |
25 | /*----------------------------------------------------------------------------
|
26 | Main function
|
27 | *----------------------------------------------------------------------------*/
|
28 | int main (void) { |
29 | |
30 | SystemCoreClockUpdate(); /* Get Core Clock Frequency */ |
31 | if (SysTick_Config(SystemCoreClock / 1000)) { /* SysTick 1 msec interrupts */ |
32 | while (1); /* Capture error */ |
33 | }
|
34 | GPIO_PortClock (GPIOD, true); |
35 | GPIO_PinWrite (GPIOD, 12, 0); |
36 | GPIO_PinConfigure(GPIOD, 12, |
37 | GPIO_MODE_OUTPUT, |
38 | GPIO_OUTPUT_PUSH_PULL, |
39 | GPIO_OUTPUT_SPEED_50MHz, |
40 | GPIO_PULL_DOWN); |
41 | GPIO_PinWrite(GPIOD, 12, 1); |
42 | |
43 | |
44 | while(1) { |
45 | |
46 | }
|
47 | }
|
Dominik K. schrieb: > vielleicht weis einer warum Wenn Sie uns sagen, was das Programm tun soll, bestimmt. Parallel dazu könnten Sie sich schon mal anschauen, wie das mit den Clocks und den Peripheriemodulen funktioniert.
ich will einfach einen Pin ( PD12 ) auf High Pegel bringen, aber nicht einmal das funktioniert. Mir ist klar, dass ich für jeden Port die Clock aktivieren muss, aber das mache ich im Code meines erachtens nach.
Läuft das Programm im Simulator? Mit welcher Hardware flashst du den Controller? Geht die eventuell auch zum Debuggen?
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.