STM32F103C8 - Keil MDK 5.31.0 - Kein automatischer Reset

OP #6357278
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?
OP #6357299
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

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