Quellcode |
1. Verwendung des Demoprojekts von STM
Als Entwicklungsumgebung wird die auf Eclipse basierende IDE "System Workbench for STM32" V1.8 für Linux genutzt. Die Verbindung zum STM32 wird über einen Webserver hergestellt. Zur Implementierung wird das Projekt "LwIP_HTTP_Server_Netconn_RTOS" von STM aus dem "STM32CubeF7" verwendet.
Zum Download und Datenblatt des STM32CubeF7
Dokumentation zur Entwicklung mit RTOS
Dokumentation eines Vorgängerprojekts zur Bestellung per App (mit intel Edison)
Wesentliche Ausschnitte des Projekts
In der main.c werden verschiedene Header-Dateien eingebunden:
int main(void)
In der int main(void), siehe Abbildung, werden MPU konfiguriert, der CPU Cache aktiviert sowie die HAL initalisiert. Die Systemclock wird konfiguriert und die Funktion "StartThread" in einem Thread aufgerufen. Dann wird per "osKernelStart()" der Scheduler gestartet.
StartThread(void const * argument)
In der Funktion "StartThread(void const * argument)" wird der TCP/IP-Stack erstellt und der lwIP-Stack initialisiert. Danach wird die Webserver-Demo initialisiert über die Funktion "http_server_netconn_init()". Diese ist in der Datei "httpserver_netconn.c" definiert.
Anschließend wird der Nutzer über das Display des STM-Boards über den Status der Netzwerkverbindung informiert. Danach wird DHCP (Dynamic Host Configuration Protocol) in einem eigenen Thread gestartet.
http_server_netconn_init()
In der Funktion "http_server_netconn_init()" in der Datei "httpserver_netconn.c" werden die Bilder, die auf der html-Seite dargestellt werden sollen ("STM32F7xx_files/ST.gif", "stm32.jpeg", "STM32F7xx_files/logo.jpg"), in einen Buffer geladen. Anschließend werden die html-Seiten STM32F7xxTASKS.html und STM32F7xx.html bzw. die Error page aufgerufen.
Der Befehl „LCD_UsrLog ((char*)“buf:\n %s\nENDE\n“,buf);“ zeigt den Inhalt des
Buffers auf dem Display des STM32F7. Nach dem Start des Programms wird dem Board
eine IP-Adresse im vorgegebenen Adressbereich zugewiesen. Ruft man nun die Seite
auf, so erscheint der Inhalt des Buffers auf dem Display mit Informationen zum
aufrufenden Browser und der geladenen Datei. Die Art der Beschreibung lässt
vermuten, dass zunächst sämtliche Grafikelemente und zum Ende die gesamte
html-Seite geladen wird, wie es auch durch die if/else if abfragen im Code
sichtbar ist. Bei jedem neuen Aufruf wird der gesamte Seiteninhalt komplett neu
geladen. Auch bei dem Projekt, das mit Visual GDB erstellt wurde ist eine
ähnliche Bufferkonstruktion („netbuf“) vorhanden. Allerdings wurde es hier noch
nicht ausgewählt, da das Display bei dem vorhandenen Projekt noch nicht in
Betrieb genommen wurde.
...
2. Verwendung von VisualGDB für Visual Studio
Legt man das Projekt entsprechend der Beschreibung von VisualGDB an, wird eine .cpp-Datei mit dem Projektnamen (also Projektname.cpp) angelegt. Hier wird die Internetseite aufgerufen und kann auch verändert werden, siehe Abbildung.
Der weitere Aufbau des Quellcodes entspricht im Wesentlichen dem Projekt für die SW4STM32 und wird bei der Erstellung des Projekts von VisualGDB automatisch generiert, siehe Abbildung.