Forum: Mikrocontroller und Digitale Elektronik STM32F4 Discovery und Keil uVision5 example Probleme


von Dominik K. (Gast)


Lesenswert?

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ß

von Stefan K. (oxid)


Lesenswert?

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

von Dominik K. (Gast)


Lesenswert?

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
}

von ghh (Gast)


Lesenswert?

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.

von Dominik K. (Gast)


Lesenswert?

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.

von Lukian (Gast)


Lesenswert?

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
Noch kein Account? Hier anmelden.