70-STemWin-Library (STM32F4)

Diese Library bindet die STemWin (in Version 5.22) ein (ohne OS).

“emWin” ist von SEGGER (www.segger.com) und ST hat für seine STM-Familie eine kostenlose vorkompilierte Library dazu veröffenlicht “STemWin”

Mit “STemWin” kann eine Windows ähnliche GUI programmiert werden mit Buttons, Fenstern usw.

Das ganze ist sehr Umfangreich und ich kann hier nicht jede Funktion erklären. Dazu gibt es viele Dokus im Internet u.a. auch von Segger und ST (einfach mal suchen).
Auf der Internet Seite von Segger gibt es auch viele Beispiel-Programme als “C-Files” für die einzelnen Funktionen die man direkt benutzen kann.

In meinem Beispiel sieht man die Init-Funktion (das ist nur eine Zeile) und danach wird ein Text und ein Button gezeichnet. Wenn man auf dem Button drückt, wird er gelöscht.

Ich habe alle notwendigen Librarys (LCD, TOUCH) in den emWIN-Ordner kopiert, weil ohne diese Files das ganze eh nicht läuft.

Im Moment funktioniert das umschalten auf “Landscape” nicht…aber die restlichen Sachen müssten laufen. Ich hab auch ein “Show-Projekt” hochgeladen, mit dem original Demo von ST in dem man ziemlich viele Funktionen zu sehen bekommt.

Beispielbild :

stemwin1

Funktionen :

1
ErrorStatus UB_STemWIN_init(void); // zum init und start von STemWin

Beispiel :

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
//--------------------------------------------------------------
// File     : main.c
// Datum    : 14.12.2013
// Version  : 1.0
// Autor    : UB
// EMail    : mc-4u(@)t-online.de
// Web      : www.mikrocontroller-4u.de
// CPU      : STM32F4
// IDE      : CooCox CoIDE 1.7.4
// GCC      : 4.7 2012q4
// Module   : CMSIS_BOOT, M4_CMSIS_CORE
// Funktion : Demo der STemWin-Library
// Hinweis  : Diese zwei Files muessen auf 8MHz stehen
//              "cmsis_boot/stm32f4xx.h"
//              "cmsis_boot/system_stm32f4xx.c"
//--------------------------------------------------------------
 
#include "main.h"
#include "stm32_ub_stemwin.h"
 
int main(void)
{
  BUTTON_Handle hButton;
 
  SystemInit(); // Quarz Einstellungen aktivieren
 
  // init und start von STemWin
  UB_STemWIN_init();
 
  // Font einstellen
  GUI_SetFont(GUI_FONT_20F_ASCII);
  // Text ausgeben
  GUI_DispStringHCenterAt("Hello world!", 80, 20);
 
  // Button-Demo
  while(1)
  {
    GUI_SetFont(&GUI_Font8x16);
    GUI_DispStringHCenterAt("Click on button...", 160, 90);
    // Create the button
    hButton = BUTTON_Create(110, 110, 100, 40, GUI_ID_OK, WM_CF_SHOW);
    // Set the button text
    BUTTON_SetText(hButton, "Click me...");
    // Let window manager handle the button
    while (GUI_WaitKey() != GUI_ID_OK);
    // Delete the button
    BUTTON_Delete(hButton);
    GUI_ClearRect(0, 50, 319, 239);
    GUI_Delay(1000);
  }
}

Hier die Library zum Download :

ub_stm32f4_stemwin_v100

Hier der komplette CooCox-Projektordner zum Download :

Demo_70_STemWin


22 Antworten auf 70-STemWin-Library (STM32F4)

  1. Joerg sagt:

    Ich habe gegen ssd1289 die libs getauscht.

    Die 1289 demo läuft ohne probleme aber mit der gui habe ich nur bunten schnee auf dem display.

    • Cortex-Einsteiger sagt:

      Hallo Jörg,
      das Problem haben wir auch (siehe Kommentare zum STemWin-Show Projekt)
      Leider habe ich noch nicht die richtigen Treibereinstellungen gefunden.

    • Mohamed elshenawy sagt:

      A small question plz :
      I want to make the uploaded project works with ssd1289
      you said you have exchanged the libs , would you tell me briefely what do you mean by this ?
      Have you added your own driver files like :stm32_ub_lcd_st7783.c
      and stm32_ub_lcd_st7783.h
      plz I need help and I can pay you.

  2. Marc sagt:

    Hallo;
    habe beim compilieren die Folgenden Fehlermeldung:
    error: Demo_70.elf uses VFP register arguments, ……

    Verwende dein CooCox Beispielprojekt
    Was ist bei mir falsch eingestellt.

    Gruß

  3. MO sagt:

    Are you able to use the emWin GUI functions involving the touch screen? I could not find in your source code where the touchscreen APIs for emWin are. But I note you have your own touchscreen drivers in stm_ub_touch_ADS7843.c. In my case I am using XPT2046. I am also using SSD1963 with the stm32f4discovery board so I am very grateful that you made your code available, and I have adapted your source code to my system with only a few changes.

    • admin_ub sagt:

      Yes, touch is running. You need two functions. First a “Touch_init”, called before emwin is started. And second a cyclic “Touch_read”
      The function call for the first one is in :
      “stm32_ub_stemwin.c” => “UB_Touch_Init()”
      The “Touch_read” function is called by a Timer (every 50ms) :
      “stm32_ub_touch_ads7843.c” => “P_Touch_Read()”
      The Touch values are stored in the structur “Touch_Data”
      In the file “stm32_ub_stemwin.c” these data are copied in structur
      “TS_State” that emWIN uses.

      • MO sagt:

        Thanks for the clarification. I’m happy to report that I have now got the modified LCD demo Show_08 program to work with a 7 inch SSD1963 LCD module! Haven’t checked the touchscreen part yet.

    • tom sagt:

      Hi MO,

      could you please share your 7″SSD1963 Display init/driver config with us ?
      I’ve got one of this display modules recently and would like to get it up and running with the discovery board.

      Thx in advance, Tom ;o).

      • Joerg B. sagt:

        Hello Tom,
        to make emWin work with Your Display isn’t so difficult.
        First You need to setup the bus and the hardware settings for it. You could use a driver you find in the net…
        Second You must change the display in the emWin driver and make the settings for resolution… Thats all ;)
        Thats for SSD1963 : pDevice = GUI_DEVICE_CreateAndLink(GUIDRV_FLEXCOLOR, GUICC_565, 0, 0);

        • Gerhard, DD4DA sagt:

          It’s important to take care about the initial code if the used Display. Even the display driver chip, like the SSD1963 is similar on the Display module. The part of the Timing, resolution and Geometrie should be fit to the driven TFT-Display. A good source for the init code are the examples thats often ships with the Display.

  4. phu sagt:

    I have a proplem with your code:

    .\Out\KT_Blink.axf: Error: L6218E: Undefined symbol BUTTON_Create (referred from main.o).
    .\Out\KT_Blink.axf: Error: L6218E: Undefined symbol BUTTON_SetText (referred from main.o).
    .\Out\KT_Blink.axf: Error: L6218E: Undefined symbol GUI_ClearRect (referred from main.o).
    .\Out\KT_Blink.axf: Error: L6218E: Undefined symbol GUI_Delay (referred from main.o).
    .\Out\KT_Blink.axf: Error: L6218E: Undefined symbol GUI_DispStringHCenterAt (referred from main.o).
    .\Out\KT_Blink.axf: Error: L6218E: Undefined symbol GUI_Font20F_ASCII (referred from main.o).
    .\Out\KT_Blink.axf: Error: L6218E: Undefined symbol GUI_Font8x16 (referred from main.o).
    .\Out\KT_Blink.axf: Error: L6218E: Undefined symbol GUI_SetFont (referred from main.o).
    .\Out\KT_Blink.axf: Error: L6218E: Undefined symbol GUI_WaitKey (referred from main.o).
    .\Out\KT_Blink.axf: Error: L6218E: Undefined symbol UB_STemWIN_init (referred from main.o).
    .\Out\KT_Blink.axf: Error: L6218E: Undefined symbol WM_DeleteWindow (referred from main.o).

    Could you help me explain it ?

    • admin_ub sagt:

      my example is running in CoIDE without a compiler warning or an error. So you must have changed the code or the IDE. Without knowledge about your modification i can’t help.

  5. Benedikt sagt:

    Hallo Uwe,

    an welcher Stelle im Code sagst du der StemWin Lib das du die SPI Schnittstelle verwendest? Ich kann es nicht finden, es muss doch auch möglich sein das FSMC Modul zu nutzen. In einer früheren Version der Lib gab es den Hardware Abstraction Layer (HAL) mit dem man die LLD Schnittstelle definieren konnte. Ich finde es nirgends, kannst du mir einen Hinweis geben? Danke
    Benedikt

    • admin_ub sagt:

      es wird die FSMC-Schnittstelle für das Display benutzt.

    • Gerhard, DD4DA sagt:

      Direkt , gar nicht. Der SPI wird nicht von der LIb bedient, sondern die Routine, die den SPi abfragt und das Ergebnis des Lesens zurück gibt, wird beim Init in eine Struktur übergeben. Dies macht die Anschlussart und den verwendeten Chip transparent. Es könnte statt des Touchpanels ja auch ein Joystick oder gar eine Tastatur oder Maus benutzt werden. Die zwei Klassiker für Touchpanel-Controller werden jedoch teilweise unterstützt. Der SPI muss aber genauso wie der FSMC zunächst mit einer INit Routine Initialisiert werden. Diese kann man in einer Konfig-Dateien des GUI-Lib beim Start ausführen lassen oder man macht es eben selber – ganz nach Belieben.

  6. DerTFTanfänger sagt:

    Hallo,
    ich möchte den Displaytreiber RA8875 von der Firma RAIO einsetzen und suche hierfür die passenden Funktionen um diesen mit der STemWin-Library zu betreiben. Könnt ihr mir weiterhelfen?

    Danke

  7. Hjalmar sagt:

    Hi
    I am newbie to the stm32f4
    I want to use the ssd1963 but need to know how to set the wires between the board and the display…find something in the driver but do not understand…
    Can someone help me to understand where to set D0 to D15 and the RS RW etc….
    Please
    Hjalmar

  8. Ivelina sagt:

    I’m sorry for the possibly really stupid question but I didn’t understand how to configure the emWin for the LCD I am using. I use the DM-LCD35RT that comes with the stm32f4dis-bb kit. I changed the things you pointed out to MO and I get a black screen with a dotted white space where the text and button should be probably.

    • admin_ub sagt:

      sorry, i cant help. is the display working without emwin ?

  9. Manuel sagt:

    Hello,
    I have not worked with this LCD, but perhaps they can use GUIDRV_Template.
    Check the manual EMWIN on page 1092.

    • Ivelina sagt:

      yes it is working without the emWin and i will check if i would manage to do something with the GUIDRV_Template, thanks.


Wie hat Dir dieser Artikel gefallen?

1 Stern2 Sterne3 Sterne4 Sterne5 Sterne (Noch keine Bewertungen)
Loading...

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.