STM32F4 Discovery und Keil uVision5 example Probleme

Gast #3803209
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ß
#3803228
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
Gast #3803234
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
}
Gast #3803247
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.

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren