Forum: Mikrocontroller und Digitale Elektronik STM32F103C8 - Keil MDK 5.31.0 - Kein automatischer Reset


von Max M. (maxmicr)


Lesenswert?

Ich verwende die Keil MDK IDE Version 5.31.0 und schaffe es anhand der 
Einstellungen leider nicht, dass mein STM32F103C8 einen automatischen 
Reset nach dem Downloaden per SWDIO/SWCLK erhält.

Nach kurzem googlen hat anscheinend jemand ein sehr ähnliches Problem: 
https://community.arm.com/developer/tools-software/tools/f/keil-forum/44063/mdk-arm-5-28-problem-with-reset-and-run

Ich verwende einen ST-Link V2 (Klon) mit Firmware V2J35S7 (die mir Keil 
angeboten hat).

Hmm, kann doch nicht sein, dass dieser Fehler (falls es denn ein Bug 
ist) bei Keil noch niemandem aufgefallen ist? Oder hängt das mit dem 
ST-Link Klon zusammen?

Mein Beispielprogramm:
1
#include "stm32f10x.h"
2
#include <stdbool.h>
3
#include <stdint.h>
4
5
void wait(volatile uint32_t cnt);
6
7
void wait(volatile uint32_t cnt) {
8
    while(cnt > 0) {
9
      __ASM("nop");
10
      cnt--;
11
    }
12
}
13
14
int main(void) {
15
  
16
  /* Enable Clock for GPIO Port C */
17
  RCC->APB2ENR |= RCC_APB2ENR_IOPCEN;
18
  
19
  /* GPIO Port C Pin 13 Push-Pull */
20
  GPIOC->CRH &= ~( GPIO_CRH_CNF13_0 | GPIO_CRH_CNF13_1 );
21
  
22
  /* GPIO Port C Pin 13 50MHz Output Mode */
23
  GPIOC->CRH |= ( GPIO_CRH_MODE13_0 | GPIO_CRH_MODE13_1 );
24
  
25
  while(true) {
26
    GPIOC->ODR |= GPIO_ODR_ODR13;
27
    wait(1000000);
28
    GPIOC->ODR &= (uint16_t)( ~GPIO_ODR_ODR13 );
29
    wait(1000000);
30
  }
31
}

Sobald ich auf dem "Blue-Pill"-Board den Reset-Schalter betätige bzw. in 
Keil in den Debug-Modus wechsle (und dann gleich wieder rausgehe), 
blinkt die LED einwandfrei.

Nur wenn ich auf "Download (F8)" in Keil klicke, wird das Programm zwar 
geladen:
1
*** Using Compiler 'V6.14', folder: 'C:\Keil_v5\ARM\ARMCLANG\Bin'
2
Rebuild target 'Target 1'
3
compiling main.c...
4
assembling startup_stm32f10x_md.s...
5
compiling system_stm32f10x.c...
6
linking...
7
Program Size: Code=712 RO-data=252 RW-data=0 ZI-data=1632  
8
FromELF: creating hex file...
9
".\Objects\ProjectFile.axf" - 0 Error(s), 0 Warning(s).
10
Build Time Elapsed:  00:00:01
11
Load "C:\\Users\\test\\Documents\\STM32TestProject\\Objects\\ProjectFile.axf" 
12
Full Chip Erase Done.
13
Programming Done.
14
Verify OK.
15
Application running ...
16
Flash Load finished at 20:15:28

aber es tut sich nichts.

Ich verwende von Keil die Startup-Datei sowie "CMSIS CORE" für die 
Registerdefinitionen.

In "Flash -> Configure Flash Tools -> Settings -> Flash Download" ist 
"Program", "Verify" und "Reset and Run" aktiviert.

Jemand eine Idee?

: Bearbeitet durch User
von Thomas (kosmos)


Lesenswert?

schreib das doch dem Hersteller von Keil, anscheinend wird nach dem 
Programmieren der Resetpin nicht losgelassen.

von Max M. (maxmicr)


Lesenswert?

Thomas O. schrieb:
> schreib das doch dem Hersteller von Keil, anscheinend wird nach dem
> Programmieren der Resetpin nicht losgelassen.

Der Reset-Pin ist nicht angeschlossen, sondern nur SWDIO/SWCLK. Aber ich 
vermute stark, dass sich damit auch ein Reset erzeugen lässt. Vllt. 
denkt die Keil-IDE, dass der Reset-Pin verwendet wird und erzeugt daher 
darüber den Reset. Eventuell kann man irgendwo einstellen, dass 
statdessen eben SWDIO verwendet werden soll?

Thomas O. schrieb:
> schreib das doch dem Hersteller von Keil

Nachdem das schon fast ein Jahr in ihrem Community-Forum steht bin ich 
skeptisch. Aber ich probiers, danke.

Edit: Okay, hier wird von Keil gefordert, dass man den RESET-Pin mit 
anschließt: 
https://www.keil.com/support/man/docs/ulinkplus/ulinkplus_jtagswd_interface.htm

Schade, das klappt dann wohl mit dem Blue-Pill Board nicht.

Edit: Klappt doch, hier sieht man rechts oben den RESET-Pin: 
https://www.heise.de/developer/imgs/06/2/3/9/9/2/8/7/Bluepillpinout-4974006ee90b729a.gif

: Bearbeitet durch User
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.