ARM Embedded Tutorial - Entry FPC and STM32/de: Difference between revisions
Line 125: | Line 125: | ||
<syntaxhighlight> | <syntaxhighlight> | ||
program stm32Blink; | program stm32Blink; | ||
procedure Delay; | procedure Delay; | ||
var | var | ||
i: uint32; | i: uint32; | ||
begin | begin | ||
for i := 0 to | for i := 0 to 500000 do begin | ||
asm nop end; // Leerbefehl | |||
end; | |||
end; | end; | ||
begin | begin | ||
// | // PortC einschalten | ||
RCC.APB2ENR := RCC.APB2ENR or (% | RCC.APB2ENR := RCC.APB2ENR or (%1 shl 4); | ||
// Pin P13 von PortC aud Output. | |||
PortC.CRH := $00300000; | |||
// Hinweis: Die LED leuchtet bei LOW. | |||
while true do begin | |||
// Pin13 -- High | |||
PortC.BSRR := 1 shl 13; | |||
Delay; | |||
// Pin13 -- Low | |||
PortC.BRR := 1 shl 13; | |||
// | |||
PortC. | |||
Delay; | Delay; | ||
end; | end; | ||
end. | end. |
Revision as of 18:02, 13 April 2018
Einstieg STM32 und FPC
Dieses Tutorial wurde anhand von Linux Mint 64Bit getestet.
Treiber für ST-LINK V2
Linux
Das Paket als Zip mit clone or download downloaden:
Anleitung befolgen:
Folgende Pakete müssen installiert werden
- CMake (minimal v2.8.7)
- C compiler (gcc, clang, mingw)
- Libusb 1.0 (minimal v1.0.9)
sudo apt-get install cmake
sudo apt-get apt-get install gcc
sudo apt-get install libusb-1.0-0.dev
// sudo apt-get install libusb-dev // ???
stlink compiliern und installieren:
$ make release
$ make debug
$ mkdir build
$ cd build
$ cmake -DCMAKE_BUILD_TYPE=Debug ..
$ make
Im Home Verzeichniss:
$ cd build/Release
$ make install DESTDIR=$HOME
Im System global:
$ cd build/Release
$ sudo make install
Reboot oder:
$ udevadm control --reload-rules
$ udevadm trigger
Anschliessend muss eine Gerätedatei /dev/stlinkv2_3 oder ähnlich vorhanden sein.
Als Test mal folgendes aufrufen:
st-util
Wen dies mit folgendem Fehler abricht:
- st-util: error while loading shared libraries: libstlink.so.1: cannot open shared object file: No such file or directory
Ist vermutlich dies das Problem:
- https://github.com/texane/stlink/issues/700
Dann müssen die libstlink.* Dateien von /usr/local/lib/lib/ nach /usr/local/lib/ verschoben werden, dazu ist allerdings Root-recht nötig.
Anschliessend folgendes aufrufen:sudo ldconfig
- https://github.com/texane/stlink/issues/700
Windows/ MacOS
- https://github.com/texane/stlink/releases/tag/1.3.0 ( nicht getestet )
Hardware verbinden
ST-LINK V2 folgendmassen mit dem STM32F103C verbinden:
ST LINK V2 | --> | STM32F103C |
---|---|---|
SWDIO | --> | SWO |
GND | --> | GND |
SWCLK | --> | SWCLK |
3.3V | --> | 3.3V |
Arduino-IDE einrichten (optimal)
Dies ist nicht zwingend notwendig, hat aber den Vorteil, das man nachgucken kann, wie dort Probleme gelöst worden sind. ZB. einen I²C-Zugriff.
Folgende Seite beachten ( Funktioniert nicht mit Sloeber ( Eclipse für Arduino ) )
JSON-Link:
Folgende JSON geht auch mit Sloeber.
Dieser JSON-Link in der Arduino-IDE unter Datei/Voreinstellungen einfügen:
- http://dan.drown.org/stm32duino/package_STM32duino_index.json ( Version 2018.4.2 wurde getestet.)
Am besten auch die Ausführliche Ausgabe für Kompilierung und Hochladen aktivieren. Dann sieht man, wen es einen Fehler beim Hochladen gibt. Achtung: Es wird im grünen Balken Hochladen abgeschlossen. angezeigt, auch wen im detailierten Bericht ein Fehler auftrat.
In der Boardverwaltung folgendes installieren:
- stm32duino/STM32F1xx...
Unter Werkzeuge das Board konfigurieren:
- Board - Generic ST32F103 series
- Serial Interface - No Serial
- Upload method - STLINK
Erster Start
Den Arduino-Blink Sketch hochladen, dann sollte die LED PC13 blinken. Evtl. Ports auf PC13 setzen.
IDE für FPC einrichten
MSEide und MSEgui
Folgende Tools sind notwendig:
- https://developer.arm.com/open-source/gnu-toolchain/gnu-rm/downloads - GNU Arm Embedded Toolchain ( gcc für ARM )
- https://sourceforge.net/projects/mseide-msegui/files/fpccrossarmembedded/ - Cross-Compiler für ARM Embedded.
- https://sourceforge.net/projects/mseide-msegui/files/mseide-msegui/4.6/ - mseGUI ( Bin und Sourcen runterlanden )
- https://gitlab.com/mseide-msegui/mseuniverse/tree/master/samples/embedded/arm/stm32l100c - Demo-Project
Diese Archive in einen Ordner entpacken, zB. /home/tux/STM32-FPC
mseIDE unter /home/tux/STM32-FPC/msegui/bin starten.
- Settings/Configure MSEide - folgende Pfad anpassen:
- $ {MSEDIR} - /home/tux/STM32-FPC/msegui/
- Project/open - Das Demo-Project im entpackten Ordner öffnen. ( /home/tux/STM32-FPC/samples/embedded/arm/stm32l100c/stm32l100c.prj )
- Project/Options/Macros folgende Pfade anpassen:
- TOOLCHAINDIR - /home/tux/STM32-FPC/gcc-arm-none-eabi-7-2017-q4-major/
- CROSSFPCDIR - /home/tux/STM32-FPC/crossfpc-x86_64_linux_eabi_embedded_3_1_1/
Wen in der Linken Spalte noch ein roter Break-Point gesetzt ist, dieser mit einem Klick deaktivieren. Mit F9 das Programm starten. Wen alles richtig gelaufen ist, müsste dies ohne Fehler durchlaufen.
Wen man den Code im Editor durch folgenden ersetzt, sollte die LED an PC13 blinken.
program stm32Blink;
procedure Delay;
var
i: uint32;
begin
for i := 0 to 500000 do begin
asm nop end; // Leerbefehl
end;
end;
begin
// PortC einschalten
RCC.APB2ENR := RCC.APB2ENR or (%1 shl 4);
// Pin P13 von PortC aud Output.
PortC.CRH := $00300000;
// Hinweis: Die LED leuchtet bei LOW.
while true do begin
// Pin13 -- High
PortC.BSRR := 1 shl 13;
Delay;
// Pin13 -- Low
PortC.BRR := 1 shl 13;
Delay;
end;
end.
Lazarus
Läuft leider noch nicht.
Manuell mit Make
Nicht getestet.
make clean all OS_TARGET=embedded CPU_TARGET=arm SUBARCH=armv7m
Siehe auch
- Übersichtseite ARM Embedded Tutorial/de
Autor: Mathias