STM32F4 Discovery und Keil uVision5 example Probleme

Gast #3803209
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
Gast
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
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

Eine eigene Frage? Dieser Thread ist über 12 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.