Hallo Stefan, ich habe mir die System Workbench für STM32 auf Windows installiert. Das ST-LINK Utility funktioniert, aber ich möchte das Blue Pill Dev Board über die SW4STM32 flashen. Als Remote Target kann ich aber nur ein JTAG Device eintragen. Keine der Auswahlmöglichkeiten funktioniert. Wie bekomme ich den ST-LINK ausgewählt?
:
Bearbeitet durch User
Alexander schrieb: > Wie bekomme ich den ST-LINK ausgewählt? Zunächst muss der Treiber für ST-Link installiert sein sonst wird die IDE dein Teil nicht finden. Schau in den Hardware- Manager ob der ST-Link dort gelistet ist.
Mit dem ST-LINK Utility kann ich flashen. Welche anderen Treiber benötige ich?
Gibt es einen Grund, warum Du die alte Version von AC6 benutzt und nicht das schoenste, groesste und voll unterstuetzte STM32CubeIDE benutzt?
STM32CubeMX ist doch ein graphisches Tool oder? Ich will nur etwas compilieren, nichts programmieren. Außerdem ist es nur ein Bedienfehler, ich bin sicher dass es mit der System Workbench auch geht.
:
Bearbeitet durch User
Alexander schrieb: > STM32CubeMX ist doch ein graphisches Tool oder? Ich will nur etwas > compilieren, nichts programmieren. STM32CubeIDE ist die aktuelle, von STM unterstuetzte Entwicklungsunterstuetzung, Eclipse basierend. AC6 ist, in a nutshell, ein Vorlaeufer. Vorteile sind: Graphische Code-Generation fuer den Startup, Compile und Debugger. https://www.st.com/en/development-tools/stm32cubeide.html P.S.: Compilieren ohne Programmieren? Oder willst Du ein vorhandenes HEX nur flashen? STM32CubeProgrammer https://www.st.com/en/development-tools/stm32cubeprog.html
Was es sonst noch so gibt schau ich mir irgendwann vielleicht an. Zum compilieren benötige ich nur etwas minimalistisches. Ich bin so schon überfordert mit dem STM32, automatisch genierter Code, wer soll da noch den Code verstehen? Auf openstm32.org wurde auf System Workbench verwiesen, und um die geht's in diesem Thread.
Okay jetzt ging es, irgendwas habe ich anders gemacht. Dank einer Anleitung "Eine LED zum Blinken bringen in 78 einfachen Schritten" Allerdings steht dort STM32F103C6Tx aber auf dem Blue Pill ist doch ein STM32F103C8T6 drauf. Wo kann ich das ändern?
1 | Info : The selected transport took over low-level target control. The results might differ compared to plain JTAG/SWD |
2 | adapter speed: 4000 kHz |
3 | adapter_nsrst_delay: 100 |
4 | Info : clock speed 4000 kHz |
5 | Info : STLINK v2 JTAG v37 API v2 SWIM v7 VID 0x0483 PID 0x3748 |
6 | Info : using stlink api v2 |
7 | Info : Target voltage: 3.232490 |
8 | Info : Stlink adapter speed set to 4000 kHz |
9 | Info : STM32F103C6Tx.cpu: hardware has 6 breakpoints, 4 watchpoints |
10 | Info : Listening on port 3333 for gdb connections |
11 | target halted due to debug-request, current mode: Thread |
12 | xPSR: 0x01000000 pc: 0x08005edc msp: 0x20002800 |
13 | Info : Stlink adapter speed set to 4000 kHz |
14 | adapter speed: 4000 kHz |
15 | ** Programming Started ** |
16 | auto erase enabled |
17 | Info : device id = 0x20036410 |
18 | Info : flash size = 64kbytes |
19 | target halted due to breakpoint, current mode: Thread |
20 | xPSR: 0x61000000 pc: 0x2000003a msp: 0x20002800 |
21 | wrote 29696 bytes from file Debug/LishuiFOC_01.elf in 2.547146s (11.385 KiB/s) |
22 | ** Programming Finished ** |
23 | ** Verify Started ** |
24 | target halted due to breakpoint, current mode: Thread |
25 | xPSR: 0x61000000 pc: 0x2000002e msp: 0x20002800 |
26 | target halted due to breakpoint, current mode: Thread |
27 | xPSR: 0x61000000 pc: 0x2000002e msp: 0x20002800 |
28 | verified 28848 bytes in 0.682039s (41.305 KiB/s) |
29 | ** Verified OK ** |
30 | ** Resetting Target ** |
31 | shutdown command invoked |
:
Bearbeitet durch User
Es scheint keiner zu wissen wie man das ändert, also muss ich ein neues Projekt anlegen. Dafür brauche ich dann aber die STM32CubeIDE?
Der ST-Link erkennt den STM, da kann man nichts ändern. Die müssen aber nicht eindeutig erkannt werden, oft gibt es mehrere Mögliche Bestellnummern. z.B. wegen unterschiedlichem Gehäuse. Flash-Größe sollte halt stimmen. Für ein Projekt reicht es auch wenn im Linkerscript Flash und RAM korrekt sind. Core-Architektur natürlich noch. Mehr muss man aber über den STM nicht wissen für eine Minimalentwicklung. Und tu dir einen gefallen und nimm aktuelle Tools. Der Workbench ist uralt. ST-Link Utility auch. STM32CubeIDE und STM32CubeProgrammer sind aktuell. Die Wahl der IDE schränkt dich nicht ein komplett ohne HAL zu entwicklen. Ich entwickle z.B. ausschließlich auf den HAL Low-Level Treibern. Aber auch ganz ohne geht natürlich.
:
Bearbeitet durch User
Ich entwickle nichts, das ist fertiger Code bzw. ein fertiges Projekt. Allerdings für ein anderes Board. Es blinkt nicht mal die LED auf PC13, da die Register anscheinend nicht identisch sind.
Alexander schrieb: > Es scheint keiner zu wissen wie man das ändert, also muss ich ein neues > Projekt anlegen. Dafür brauche ich dann aber die STM32CubeIDE? Du brauchst nicht die STM32CubeIDE um in der System Workbench etwas zu ändern. Wie kommt man auf so eine Idee? Du musst ein neues Projekt anlegen und dabei die richtige MCU angeben. Danach kannst du deine Quelltexte hinein kopieren. Ich würde dir auch raten, die STM32Cube IDE zu verwenden (nicht zu Verwechseln mit STM32 Cube MX). Denn die alte System Workbench wird nicht mehr gepflegt. Das könnte dir helfen: http://stefanfrings.de/stm32/cube_ide.html Alexander schrieb: > Es blinkt nicht mal die LED auf PC13, > da die Register anscheinend nicht identisch sind. Könnte daran liegen, dass dein Board einen gefälschten Mikrocontroller hat. Insbesondere wenn es nach 2020 gekauft wurde. Alexander schrieb: > da die Register anscheinend nicht identisch sind. Nicht vermuten, sondern vergewissern. Die relevanten Dateien habe ich mal angehängt. Vergleichen musst du sie selbst. (die xb Datei gilt auch für x8)
Ja gut, bis auf den größeren Speicher 0x0801FFFFUL und zusätzlich TIM4 I2C2 SPI2 USART3 GPIOE sind die identisch.
1 | #define PERIPH_BASE 0x40000000UL
|
2 | #define APB2PERIPH_BASE (PERIPH_BASE + 0x00010000UL)
|
3 | #define GPIOC_BASE (APB2PERIPH_BASE + 0x00001000UL)
|
Das stimmt auch überein mit dem Zeiger aus dem Debugger.
1 | Name : LED_GPIO_Port |
2 | Details:0x40011000 |
3 | Default:0x40011000 |
4 | Decimal:1073811456 |
5 | Hex:0x40011000 |
6 | Binary:1000000000000010001000000000000 |
7 | Octal:010000210000 |
8 | Name : LED_Pin |
9 | Details:8192 |
10 | Default:8192 |
11 | Decimal:8192 |
12 | Hex:0x2000 |
13 | Binary:10000000000000 |
14 | Octal:020000 |
In Arduino blinkt die LED. Unter SW4STM32 habe ich es noch nicht hinbekommen, habe auch schon an eine Fälschung gedacht. Den Link habe ich schon entdeckt, danke. Ist halt alles sehr ausführlich, da muß ich in Ruhe noch mal lesen. Ich hatte schon versucht das Projekt neu zu importieren, kam dann auch zur Auswahl des Boards, aber dann war ein Fehler und ein Abbruch, da wurde der Quellcode nicht übernommen. Ich würd's ja händisch machen, aber schlauerweise ist der User Code und der generierte Code in ein- und derselben Datei main.c
Alexander schrieb: > Ja gut, bis auf den größeren Speicher 0x0801FFFFUL und zusätzlich TIM4 > I2C2 SPI2 USART3 GPIOE sind die identisch. So ungefähr habe ich das auch in Erinnerung. Der größere hat zusätzliche Features, aber das was beide haben ist identisch.
PC13 kann jetzt auch blinken, GPIOC war nicht aktiviert.
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.