{"id":533,"date":"2017-11-25T15:08:03","date_gmt":"2017-11-25T14:08:03","guid":{"rendered":"http:\/\/mikrocontroller.bplaced.net\/wordpress\/?page_id=533"},"modified":"2017-12-30T19:42:19","modified_gmt":"2017-12-30T18:42:19","slug":"94-simple_gui-library-stm32f4","status":"publish","type":"page","link":"https:\/\/mikrocontroller.bplaced.net\/wordpress\/stm32f4\/komplette-library-liste-stm32f4\/94-simple_gui-library-stm32f4\/","title":{"rendered":"94-Simple_GUI-Library (STM32F4)"},"content":{"rendered":"<p><div id=\"nav-below\" class=\"navigation\"><div class=\"nav-previous\"><a href=\"https:\/\/mikrocontroller.bplaced.net\/wordpress\/stm32f4\/komplette-library-liste-stm32f4\/93-otp-library-stm32f4\/\" title=\"93-OTP-Library (STM32F4)\"><span class=\"meta-nav\">\u2190<\/span> 93-OTP-Library (STM32F4)<\/a><\/div><\/div><!-- #nav-below --><div id=\"nav-below\" class=\"navigation\"><div class=\"nav-next\"><a href=\"https:\/\/mikrocontroller.bplaced.net\/wordpress\/stm32f4\/komplette-library-liste-stm32f4\/95-ubasic-library-stm32f4\/\" title=\"95-uBasic-Library (STM32F4)\">95-uBasic-Library (STM32F4) <span class=\"meta-nav\">&rarr;<\/span><\/a><\/div><\/div><!-- #nav-below --><\/p>\n<p>Diese Library erm\u00f6glicht es eine \u201ceinfache\u201d Graphische Benutzeroberfl\u00e4che<br \/>\nmit dem STM32F407 und einem Grafik-Display (mit Touch) zu realisieren.<\/p>\n<p>Hier ein Demo-Bild :<\/p>\n<div id=\"attachment_4853\" class=\"wp-caption alignnone\" style=\"width: 235px;\">\n<p><a href=\"http:\/\/mikrocontroller.bplaced.net\/wordpress\/wp-content\/uploads\/2015\/02\/sgui_v1001.jpg\"><img loading=\"lazy\" decoding=\"async\" class=\"size-medium wp-image-4853\" src=\"http:\/\/mikrocontroller.bplaced.net\/wordpress\/wp-content\/uploads\/2015\/02\/sgui_v1001-225x300.jpg\" alt=\"Simple GUI\" width=\"225\" height=\"300\" \/><\/a><\/p>\n<p class=\"wp-caption-text\">Simple GUI<\/p>\n<\/div>\n<p>Es ist die gleiche Library wie f\u00fcr den STM32F429 (<a href=\"http:\/\/mikrocontroller.bplaced.net\/wordpress\/?page_id=337\">LIB-27<\/a>) nur wird hier ein Display<br \/>\nmit ST7783-Chip und ein Touch mit ADS7843-Chip benutzt.<\/p>\n<p>Zur Beschreibung bitte die Version vom F429 durchlesen, die ist identisch.<br \/>\nhier der Link : <a title=\"27-Simple_GUI-Library (STM32F429)\" href=\"http:\/\/mikrocontroller.bplaced.net\/wordpress\/?page_id=337\">SGUI_F429<\/a><\/p>\n<p>Die Demo-Files sind auch identisch zur F429-Version, einmal ein Hello-World<br \/>\nmit nur einem Button und einmal eine komplette Demo von allen Objekten.<\/p>\n<p>Hier die Library zum\u00a0<strong>Download :<\/strong><\/p>\n<p><a href=\"http:\/\/mikrocontroller.bplaced.net\/wordpress\/wp-content\/uploads\/2015\/05\/ub_stm32f4_sgui_v103.zip\">ub_stm32f4_sgui_v103<\/a><\/p>\n<p>Hier der komplette CooCox-Projektordner zum\u00a0<strong>Download : (Hello-World)<\/strong><\/p>\n<p><a href=\"http:\/\/mikrocontroller.bplaced.net\/wordpress\/wp-content\/uploads\/2015\/05\/Demo_94_SGUI.zip\">Demo_94_SGUI<\/a><\/p>\n<p>Hier der komplette CooCox-Projektordner zum\u00a0<strong>Download : (Demo aller Objekte)<\/strong><\/p>\n<p><a href=\"http:\/\/mikrocontroller.bplaced.net\/wordpress\/wp-content\/uploads\/2015\/05\/Demo_94b_SGUI.zip\">Demo_94b_SGUI<\/a><\/p>\n<hr \/>\n<h3 id=\"comments-title\">18 Antworten auf <em>94-Simple_GUI-Library (STM32F4)<\/em><\/h3>\n<ol class=\"commentlist\">\n<li id=\"li-comment-2966\" class=\"comment even thread-even depth-1\">\n<div id=\"comment-2966\">\n<div class=\"comment-author vcard\"><img loading=\"lazy\" decoding=\"async\" class=\"avatar avatar-40 photo\" src=\"http:\/\/1.gravatar.com\/avatar\/5da3fd1e432e7af78847cb37e2a32d6b?s=40&amp;d=http%3A%2F%2F1.gravatar.com%2Favatar%2Fad516503a11cd5ca435acc9bb6523536%3Fs%3D40&amp;r=G\" alt=\"\" width=\"40\" height=\"40\" \/><cite class=\"fn\">Axel R. (DG1RTO)<\/cite> <span class=\"says\">sagt:<\/span><\/div>\n<p><!-- .comment-author .vcard --><\/p>\n<div class=\"comment-meta commentmetadata\">13. M\u00e4rz 2015 um 11:16<\/div>\n<p><!-- .comment-meta .commentmetadata --><\/p>\n<div class=\"comment-body\">\n<p>Hallo Uwe,<br \/>\nvielen Dank f\u00fcr die nette GUI. Eine Menge Arbeit\u2026<br \/>\nDie Eintr\u00e4ge in der Scroll-Listbox lassen sich mit dem dicken Finger schlecht treffen.<br \/>\nIn \u201cub_sgui_listbox.c\u201d habe ich beim Zeichnen der Items mit font-&gt;height(+5) etwas Luft geschaffen. Den ersten Eintrag in der Liste habe ich etwas herab gesetzt( y-Rahmendicke-5). Leider trifft der touch nicht mehr\u2026<br \/>\nK\u00f6nntest Du bitte ein <code>\"#define Item_distance\" <\/code> einf\u00fchren, dass man die Eintr\u00e4ge der Listbox etwas \u201cluftiger\u201d gestalten kann.<br \/>\nIch steige leider so ganz nicht dahinter, wie alles bis ins kleinste Detail verwoben ist\u2026<br \/>\nDer Touch ist kalibriert (STMPE811) und funktioniert hervorragend.<br \/>\nDanke auch daf\u00fcr!<br \/>\nDas Bord ist das Farnell-B\u00fcndle STM32F407\/DM-STF4BB\/DM-LCD35RT.<br \/>\nGru\u00df<br \/>\nAxel<\/p>\n<\/div>\n<\/div>\n<p><!-- #comment-## --><\/p>\n<ul class=\"children\">\n<li id=\"li-comment-2976\" class=\"comment byuser comment-author-admin_ub bypostauthor odd alt depth-2\">\n<div id=\"comment-2976\">\n<div class=\"comment-author vcard\"><img loading=\"lazy\" decoding=\"async\" class=\"avatar avatar-40 photo\" src=\"http:\/\/0.gravatar.com\/avatar\/67426419ead44d5afa132e92685bb460?s=40&amp;d=http%3A%2F%2F0.gravatar.com%2Favatar%2Fad516503a11cd5ca435acc9bb6523536%3Fs%3D40&amp;r=G\" alt=\"\" width=\"40\" height=\"40\" \/><cite class=\"fn\">admin_ub<\/cite> <span class=\"says\">sagt:<\/span><\/div>\n<p><!-- .comment-author .vcard --><\/p>\n<div class=\"comment-meta commentmetadata\">14. M\u00e4rz 2015 um 11:59<\/div>\n<p><!-- .comment-meta .commentmetadata --><\/p>\n<div class=\"comment-body\">\n<p>da lohnt ein update nicht es sind nur zwei Zeilen zu \u00e4ndern<br \/>\nin der Funktion : \u201cSGUI_ListboxTouch\u201d die Zeile :<br \/>\n<code><br \/>\nzeile=yd\/SGUI_LISTBOX.ptr[n]-&gt;font-&gt;height;<br \/>\nin<br \/>\nzeile=yd\/(SGUI_LISTBOX.ptr[n]-&gt;font-&gt;height+Item_distance);<br \/>\n<\/code><br \/>\nund in der Funktion \u201cP_SGUI_ListboxDraw\u201d die Zeile :<br \/>\n<code><br \/>\nfh=ptr-&gt;font-&gt;height;<br \/>\nin<br \/>\nfh=ptr-&gt;font-&gt;height+Item_distance;<br \/>\n<\/code><\/p>\n<\/div>\n<\/div>\n<p><!-- #comment-## --><\/li>\n<\/ul>\n<\/li>\n<li id=\"li-comment-2980\" class=\"comment even thread-odd thread-alt depth-1\">\n<div id=\"comment-2980\">\n<div class=\"comment-author vcard\"><img loading=\"lazy\" decoding=\"async\" class=\"avatar avatar-40 photo\" src=\"http:\/\/1.gravatar.com\/avatar\/9ba17c34f0b67bc712930a34b6a1f620?s=40&amp;d=http%3A%2F%2F1.gravatar.com%2Favatar%2Fad516503a11cd5ca435acc9bb6523536%3Fs%3D40&amp;r=G\" alt=\"\" width=\"40\" height=\"40\" \/><cite class=\"fn\">Axel R. (DG1RTO)<\/cite> <span class=\"says\">sagt:<\/span><\/div>\n<p><!-- .comment-author .vcard --><\/p>\n<div class=\"comment-meta commentmetadata\">14. M\u00e4rz 2015 um 13:28<\/div>\n<p><!-- .comment-meta .commentmetadata --><\/p>\n<div class=\"comment-body\">\n<p>Das ist <b> GENAU<\/b> das, was ich gestern abend gemacht habe <img decoding=\"async\" class=\"wp-smiley\" src=\"wp-includes\/images\/smilies\/icon_smile.gif\" alt=\":)\" \/><br \/>\n(Da hate mich der Ergeiz gepackt, ich wollte die L\u00f6sung vor dir posten)<br \/>\nIch gebe den Text noch um die halbe \u201cItem_distance\u201d erh\u00f6ht aus, damit er vertikal zentriert steht. Damits sch\u00f6n aussieht, noch ein 3D-RoundedRect drumrum. LOWERED und RAISED \u2013 immer im Wechsel.<br \/>\nVielen lieben Dank! Es macht gro\u00dfen Spa\u00df, damit rumzuspielen \u2026<br \/>\nAxel R.<\/p>\n<\/div>\n<\/div>\n<p><!-- #comment-## --><\/p>\n<ul class=\"children\">\n<li id=\"li-comment-2991\" class=\"comment byuser comment-author-admin_ub bypostauthor odd alt depth-2\">\n<div id=\"comment-2991\">\n<div class=\"comment-author vcard\"><img loading=\"lazy\" decoding=\"async\" class=\"avatar avatar-40 photo\" src=\"http:\/\/0.gravatar.com\/avatar\/67426419ead44d5afa132e92685bb460?s=40&amp;d=http%3A%2F%2F0.gravatar.com%2Favatar%2Fad516503a11cd5ca435acc9bb6523536%3Fs%3D40&amp;r=G\" alt=\"\" width=\"40\" height=\"40\" \/><cite class=\"fn\">admin_ub<\/cite> <span class=\"says\">sagt:<\/span><\/div>\n<p><!-- .comment-author .vcard --><\/p>\n<div class=\"comment-meta commentmetadata\">16. M\u00e4rz 2015 um 19:20<\/div>\n<p><!-- .comment-meta .commentmetadata --><\/p>\n<div class=\"comment-body\">\n<p>Ja, man k\u00f6nnte noch soviel einbauen. Buttons mit Bilder, Hintergrundgrafik usw. Wenn man sich an das \u201cGrundger\u00fcst\u201d h\u00e4lt ist das meiste nur copy&amp;paste. Die Bedienung mit dem Touch gef\u00e4llt mit nicht so sehr. Die Slider sollten z.B. mit einem Wisch bewegt werden k\u00f6nnen, w\u00e4re auch machbar, aber im Moment habe ich gar keinen Trieb mehr. Nach dem Echo hier braucht das ganze aber scheinbar keiner wirklich.<\/p>\n<\/div>\n<\/div>\n<p><!-- #comment-## --><\/p>\n<ul class=\"children\">\n<li id=\"li-comment-3198\" class=\"comment even depth-3\">\n<div id=\"comment-3198\">\n<div class=\"comment-author vcard\"><img loading=\"lazy\" decoding=\"async\" class=\"avatar avatar-40 photo\" src=\"http:\/\/0.gravatar.com\/avatar\/cfe5a02294159faf55c25c652d9436c6?s=40&amp;d=http%3A%2F%2F0.gravatar.com%2Favatar%2Fad516503a11cd5ca435acc9bb6523536%3Fs%3D40&amp;r=G\" alt=\"\" width=\"40\" height=\"40\" \/><cite class=\"fn\">Stefan F.<\/cite> <span class=\"says\">sagt:<\/span><\/div>\n<p><!-- .comment-author .vcard --><\/p>\n<div class=\"comment-meta commentmetadata\">30. April 2015 um 09:24<\/div>\n<p><!-- .comment-meta .commentmetadata --><\/p>\n<div class=\"comment-body\">\n<p>Gerade \u00fcber die Realisierung so einer \u201cWischfunktion\u201d f\u00fcr Slider bin ich am gr\u00fcbeln. Problematisch hierbei ist ja der Refresh vom Slider auf dem Display. Wie k\u00f6nnte man sowas denn elegant l\u00f6sen ? Ist da der Weg \u00fcber den Slider als eigenes grafisches Objekt von dem nur ein Teil neu gezeichnet wird der richtige Schritt ? Und wenn ja wie w\u00fcrde man dann den Hintergrund erhalten wenn nicht alles neu gezeichnet wird ?<br \/>\n(Grafik Chip hat nur ein Layer)<br \/>\nBzw geht der Refresh der Grafik dann noch schnell genug das das Bewegen des Sliders wie eine fl\u00fcssige Bewegung aussieht ?<br \/>\nBin f\u00fcr jeden Tip dankbar <img decoding=\"async\" class=\"wp-smiley\" src=\"wp-includes\/images\/smilies\/icon_smile.gif\" alt=\":)\" \/><\/p>\n<\/div>\n<\/div>\n<p><!-- #comment-## --><\/p>\n<ul class=\"children\">\n<li id=\"li-comment-3200\" class=\"comment byuser comment-author-admin_ub bypostauthor odd alt depth-4\">\n<div id=\"comment-3200\">\n<div class=\"comment-author vcard\"><img loading=\"lazy\" decoding=\"async\" class=\"avatar avatar-40 photo\" src=\"http:\/\/0.gravatar.com\/avatar\/67426419ead44d5afa132e92685bb460?s=40&amp;d=http%3A%2F%2F0.gravatar.com%2Favatar%2Fad516503a11cd5ca435acc9bb6523536%3Fs%3D40&amp;r=G\" alt=\"\" width=\"40\" height=\"40\" \/><cite class=\"fn\">admin_ub<\/cite> <span class=\"says\">sagt:<\/span><\/div>\n<p><!-- .comment-author .vcard --><\/p>\n<div class=\"comment-meta commentmetadata\">30. April 2015 um 19:21<\/div>\n<p><!-- .comment-meta .commentmetadata --><\/p>\n<div class=\"comment-body\">\n<p>mit nur einem Layer wirst du wahrscheinlich ein \u201cflackern\u201d sehen. Ich w\u00fcrde den Slider aus zwei Graphischen Objekten machen. Ein gef\u00fclltes Rechteck als \u201cHintergrund\u201d und darauf ein kleineres gef\u00fclltes Rechteck als \u201cPositionsanzeige\u201d. Dann im Programm<\/p>\n<pre lang=\"c\" line=\"1\">if(act_value!=old_value) {\r\n  drawSliderBody();\r\n  drawSliderKnob(act_value);\r\n}\r\n<\/pre>\n<\/div>\n<\/div>\n<p><!-- #comment-## --><\/li>\n<\/ul>\n<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n<\/li>\n<li id=\"li-comment-3060\" class=\"comment even thread-even depth-1\">\n<div id=\"comment-3060\">\n<div class=\"comment-author vcard\"><img loading=\"lazy\" decoding=\"async\" class=\"avatar avatar-40 photo\" src=\"http:\/\/1.gravatar.com\/avatar\/5da3fd1e432e7af78847cb37e2a32d6b?s=40&amp;d=http%3A%2F%2F1.gravatar.com%2Favatar%2Fad516503a11cd5ca435acc9bb6523536%3Fs%3D40&amp;r=G\" alt=\"\" width=\"40\" height=\"40\" \/><cite class=\"fn\">Axel R. (DG1RTO)<\/cite> <span class=\"says\">sagt:<\/span><\/div>\n<p><!-- .comment-author .vcard --><\/p>\n<div class=\"comment-meta commentmetadata\">1. April 2015 um 10:48<\/div>\n<p><!-- .comment-meta .commentmetadata --><\/p>\n<div class=\"comment-body\">\n<p>Eines fiel mir auf, wo ich nicht wirklich weiter komme:<br \/>\nrufe ich eine Funktion im gesetzten Funktionshandler auf, findet der Compiler die R\u00fccksprungadresse zu (zB.) \u201clb_main_fkt\u201d nicht. Muss \u201clb_main_fkt\u201d, da sie als Pointer der Listbox zugewiesen wurde, irgentwo extra oder besonders bekannt gegeben werden?<br \/>\nProzeduraufrufe (SGUI_Windowshow) funktionieren wie erwartet, nur Funktionsaufrufe finden zu \u201d lb_main_fkt\u201d nicht zur\u00fcck.<br \/>\nWie wird das richtig gemacht?<br \/>\nDanke<br \/>\nAxel<\/p>\n<p><code><br \/>\n\/\/globale Variable<br \/>\nuint16_t check = 0;  \/\/Check, ob Firmware aktuell<\/code><\/p>\n<p>void lb_main_fkt(uint16_t aktiv_nr) {<\/p>\n<p>if(aktiv_nr==0) SGUI_WindowShow(WND_AUSW_1);<\/p>\n<p>if(aktiv_nr==1) {<\/p>\n<p>check = check_new_FW(Parameter[0].text); \/\/ Hier kommt er nicht mehr zur\u00fcck<br \/>\n\/\/ es wird nach &#8222;check_new_FW&#8220; der default_Handler angesprungen<br \/>\nsprintf(fw_buf,&#8220;check_FW; %d&#8220;,check );<br \/>\nUB_Uart_SendString(COM3,fw_buf,CRLF); \/\/ DEBUG Ausgabe<\/p>\n<p>if ( check == 1 ) {<\/p>\n<p>\/\/ set_active_item = fw_update, also &#8222;1&#8220; erster Eintrag.<br \/>\nSGUI_ListboxInsertItem(lb_param_c1,0,&#8220;FW-UPDATE&#8220;);<br \/>\nupdate = 1;<br \/>\n}<br \/>\nelse if (check == 1001) {<br \/>\n\/\/ Timeout &#8211; kein Copter angeschlossen<br \/>\nSGUI_ListboxSetAktivItemNr(lb_main ,-1); \/\/ disable all items<br \/>\nSGUI_WindowShow(1);<\/p>\n<p>}<\/p>\n<p>SGUI_WindowShow(WND_2); \/\/Zweites Fenster<\/p>\n<p>}<br \/>\nif(aktiv_nr==2) SGUI_WindowShow(WND_SETUP); \/\/ drittes Fenster<br \/>\n\/\/Setup ( Uhrzeit\/Datum usw )<br \/>\n}<\/p>\n<\/div>\n<\/div>\n<p><!-- #comment-## --><\/p>\n<ul class=\"children\">\n<li id=\"li-comment-3065\" class=\"comment odd alt depth-2\">\n<div id=\"comment-3065\">\n<div class=\"comment-author vcard\"><img loading=\"lazy\" decoding=\"async\" class=\"avatar avatar-40 photo\" src=\"http:\/\/1.gravatar.com\/avatar\/5da3fd1e432e7af78847cb37e2a32d6b?s=40&amp;d=http%3A%2F%2F1.gravatar.com%2Favatar%2Fad516503a11cd5ca435acc9bb6523536%3Fs%3D40&amp;r=G\" alt=\"\" width=\"40\" height=\"40\" \/><cite class=\"fn\">Axel R. (DG1RTO)<\/cite> <span class=\"says\">sagt:<\/span><\/div>\n<p><!-- .comment-author .vcard --><\/p>\n<div class=\"comment-meta commentmetadata\">1. April 2015 um 15:21<\/div>\n<p><!-- .comment-meta .commentmetadata --><\/p>\n<div class=\"comment-body\">\n<p>ich antworte gleich selbst:<br \/>\nder Stack war zu klein, die lokalen Variablen doch etwas \u201causladend\u201d.<br \/>\nDie <code> \"check_new_FW\" <\/code> Funktion testhalber etwas abgespeckt und siehe da \u2013 geht doch <img decoding=\"async\" class=\"wp-smiley\" src=\"wp-includes\/images\/smilies\/icon_smile.gif\" alt=\":)\" \/><\/p>\n<p>Danke und Gru\u00df, viel Spa\u00df allen<br \/>\nAxel DG1RTO<\/p>\n<\/div>\n<\/div>\n<p><!-- #comment-## --><\/li>\n<li id=\"li-comment-3070\" class=\"comment even depth-2\">\n<div id=\"comment-3070\">\n<div class=\"comment-author vcard\"><img loading=\"lazy\" decoding=\"async\" class=\"avatar avatar-40 photo\" src=\"http:\/\/1.gravatar.com\/avatar\/5da3fd1e432e7af78847cb37e2a32d6b?s=40&amp;d=http%3A%2F%2F1.gravatar.com%2Favatar%2Fad516503a11cd5ca435acc9bb6523536%3Fs%3D40&amp;r=G\" alt=\"\" width=\"40\" height=\"40\" \/><cite class=\"fn\">Axel R. (DG1RTO)<\/cite> <span class=\"says\">sagt:<\/span><\/div>\n<p><!-- .comment-author .vcard --><\/p>\n<div class=\"comment-meta commentmetadata\">2. April 2015 um 09:02<\/div>\n<p><!-- .comment-meta .commentmetadata --><\/p>\n<div class=\"comment-body\">\n<p>\u2026 es lag an der <code> sprintf() <\/code> Anweisung \u2026<br \/>\nStatt den Intergerwert in der Funktion \u00fcber COM3 via sprintf() zu printen, verwende ich diesen nun als R\u00fcckgabewert. In der aufrufenden Funktion (Hier der Listbox-handler) kann man nun alles damit machen \u2013 inlusive sprintf() undd Ausgabe auf einer der seriellen. Ich hatte testhalber das makro <b>STACK_SIZE <\/b> in <code> startup_stm32f4xx.c <\/code><\/p>\n<p><code><br \/>\n\/*----------Stack Configuration-----------------------------------------------*\/<br \/>\n#define STACK_SIZE       0x00000200      \/*!&lt; The Stack size suggest using even number    *\/<br \/>\n__attribute__ ((section(\".co_stack\")))<br \/>\nunsigned long pulStack[STACK_SIZE];<br \/>\n<\/code><br \/>\nvon 0\u00d7200 auf 0\u00d7400 und auch auf 0\u00d7800 erh\u00f6ht. Ging trotzdem nicht\u2026<br \/>\nLeider fehlt mir der Durchblick beim Linkersript.<br \/>\nMuss\/kann ich am Linkersript noch etwas ver\u00e4ndern?<\/p>\n<p>Viele Gr\u00fc\u00dfe<br \/>\nAxel (DG1RTO)<\/p>\n<\/div>\n<\/div>\n<p><!-- #comment-## --><\/li>\n<\/ul>\n<\/li>\n<li id=\"li-comment-3174\" class=\"comment odd alt thread-odd thread-alt depth-1\">\n<div id=\"comment-3174\">\n<div class=\"comment-author vcard\"><img loading=\"lazy\" decoding=\"async\" class=\"avatar avatar-40 photo\" src=\"http:\/\/0.gravatar.com\/avatar\/6562731382fd2f9aace58ed83fed60ec?s=40&amp;d=http%3A%2F%2F0.gravatar.com%2Favatar%2Fad516503a11cd5ca435acc9bb6523536%3Fs%3D40&amp;r=G\" alt=\"\" width=\"40\" height=\"40\" \/><cite class=\"fn\">Rodrigo<\/cite> <span class=\"says\">sagt:<\/span><\/div>\n<p><!-- .comment-author .vcard --><\/p>\n<div class=\"comment-meta commentmetadata\">26. April 2015 um 03:41<\/div>\n<p><!-- .comment-meta .commentmetadata --><\/p>\n<div class=\"comment-body\">\n<p>hello, congratulations for the great code, I use the LCD with SSD1289, how do the necessary changes, thanks for the effort.<\/p>\n<\/div>\n<\/div>\n<p><!-- #comment-## --><\/p>\n<ul class=\"children\">\n<li id=\"li-comment-3178\" class=\"comment byuser comment-author-admin_ub bypostauthor even depth-2\">\n<div id=\"comment-3178\">\n<div class=\"comment-author vcard\"><img loading=\"lazy\" decoding=\"async\" class=\"avatar avatar-40 photo\" src=\"http:\/\/0.gravatar.com\/avatar\/67426419ead44d5afa132e92685bb460?s=40&amp;d=http%3A%2F%2F0.gravatar.com%2Favatar%2Fad516503a11cd5ca435acc9bb6523536%3Fs%3D40&amp;r=G\" alt=\"\" width=\"40\" height=\"40\" \/><cite class=\"fn\">admin_ub<\/cite> <span class=\"says\">sagt:<\/span><\/div>\n<p><!-- .comment-author .vcard --><\/p>\n<div class=\"comment-meta commentmetadata\">26. April 2015 um 20:44<\/div>\n<p><!-- .comment-meta .commentmetadata --><\/p>\n<div class=\"comment-body\">\n<p>first : download the c+h file for the display from here <a href=\"index0ff2.html?page_id=1357\" rel=\"nofollow\">http:\/\/mikrocontroller.bplaced.net\/wordpress\/?page_id=1357<\/a><br \/>\nand use these two files instead the included \u201cst7783\u2033 version.<br \/>\nsecond : change all include lines from<br \/>\n#include \u201cstm32_ub_lcd_st7783.h\u201d<br \/>\nto<br \/>\n#include \u201cstm32_ub_lcd_ssd1289.h\u201d<br \/>\nthat should work.<\/p>\n<\/div>\n<\/div>\n<p><!-- #comment-## --><\/li>\n<\/ul>\n<\/li>\n<li id=\"li-comment-3181\" class=\"comment odd alt thread-even depth-1\">\n<div id=\"comment-3181\">\n<div class=\"comment-author vcard\"><img loading=\"lazy\" decoding=\"async\" class=\"avatar avatar-40 photo\" src=\"http:\/\/0.gravatar.com\/avatar\/6562731382fd2f9aace58ed83fed60ec?s=40&amp;d=http%3A%2F%2F0.gravatar.com%2Favatar%2Fad516503a11cd5ca435acc9bb6523536%3Fs%3D40&amp;r=G\" alt=\"\" width=\"40\" height=\"40\" \/><cite class=\"fn\">Rodrigo<\/cite> <span class=\"says\">sagt:<\/span><\/div>\n<p><!-- .comment-author .vcard --><\/p>\n<div class=\"comment-meta commentmetadata\">27. April 2015 um 02:54<\/div>\n<p><!-- .comment-meta .commentmetadata --><\/p>\n<div class=\"comment-body\">\n<p>Thank you for dedicated effort, I admire people like you who share knowledge, I use STM32F4DISCOVERY with open407v-d expansion, and had to make some changes, but now is working very well, thank you again. follow the link with the changes in stm32_ub_lcd_ssd1289.c file<\/p>\n<p><a href=\"http:\/\/pastebin.com\/msyrj885\" rel=\"nofollow\">http:\/\/pastebin.com\/msyrj885<\/a><\/p>\n<p>best regard<\/p>\n<\/div>\n<\/div>\n<p><!-- #comment-## --><\/li>\n<li id=\"li-comment-3287\" class=\"comment even thread-odd thread-alt depth-1\">\n<div id=\"comment-3287\">\n<div class=\"comment-author vcard\"><img loading=\"lazy\" decoding=\"async\" class=\"avatar avatar-40 photo\" src=\"http:\/\/0.gravatar.com\/avatar\/a1409b1fe6254bc7fbdcfa48b73a1ee9?s=40&amp;d=http%3A%2F%2F0.gravatar.com%2Favatar%2Fad516503a11cd5ca435acc9bb6523536%3Fs%3D40&amp;r=G\" alt=\"\" width=\"40\" height=\"40\" \/><cite class=\"fn\">Joerg B.<\/cite> <span class=\"says\">sagt:<\/span><\/div>\n<p><!-- .comment-author .vcard --><\/p>\n<div class=\"comment-meta commentmetadata\">28. Mai 2015 um 11:47<\/div>\n<p><!-- .comment-meta .commentmetadata --><\/p>\n<div class=\"comment-body\">\n<p>Moin Uwe,<br \/>\nwo platziere ich am einfachsten einen Z\u00e4hler Reset (bei Touch Event) um die Hintergrundbeleuchtung nach einer gewissen Zeit aus zu schalten?<\/p>\n<p>Gr\u00fc\u00dfe<\/p>\n<p>J\u00f6rg<\/p>\n<\/div>\n<\/div>\n<p><!-- #comment-## --><\/p>\n<ul class=\"children\">\n<li id=\"li-comment-3292\" class=\"comment byuser comment-author-admin_ub bypostauthor odd alt depth-2\">\n<div id=\"comment-3292\">\n<div class=\"comment-author vcard\"><img loading=\"lazy\" decoding=\"async\" class=\"avatar avatar-40 photo\" src=\"http:\/\/0.gravatar.com\/avatar\/67426419ead44d5afa132e92685bb460?s=40&amp;d=http%3A%2F%2F0.gravatar.com%2Favatar%2Fad516503a11cd5ca435acc9bb6523536%3Fs%3D40&amp;r=G\" alt=\"\" width=\"40\" height=\"40\" \/><cite class=\"fn\">admin_ub<\/cite> <span class=\"says\">sagt:<\/span><\/div>\n<p><!-- .comment-author .vcard --><\/p>\n<div class=\"comment-meta commentmetadata\">28. Mai 2015 um 18:45<\/div>\n<p><!-- .comment-meta .commentmetadata --><\/p>\n<div class=\"comment-body\">\n<p>im File \u201cstm32_ub_sgui.c\u201d gibt es die Funktion \u201cSGUI_TIM_ISR_HANDLER\u201d<br \/>\ndiese wird jede ms aufgerufen.<br \/>\nEinfach eine Globale uint32_t definieren und diese in der ISR incrementieren.<br \/>\nAu\u00dferhalb der ISR (z.B. in der Main) die Variable l\u00f6schen und pr\u00fcfen auf Sollwert.<br \/>\nDas gleiche macht die Funktion \u201cSGUI_Pause_ms\u201d mit der Variablen \u201cUB_SGUI.pause_cnt\u201d<\/p>\n<\/div>\n<\/div>\n<p><!-- #comment-## --><\/p>\n<ul class=\"children\">\n<li id=\"li-comment-3295\" class=\"comment even depth-3\">\n<div id=\"comment-3295\">\n<div class=\"comment-author vcard\"><img loading=\"lazy\" decoding=\"async\" class=\"avatar avatar-40 photo\" src=\"http:\/\/0.gravatar.com\/avatar\/a1409b1fe6254bc7fbdcfa48b73a1ee9?s=40&amp;d=http%3A%2F%2F0.gravatar.com%2Favatar%2Fad516503a11cd5ca435acc9bb6523536%3Fs%3D40&amp;r=G\" alt=\"\" width=\"40\" height=\"40\" \/><cite class=\"fn\">Joerg B.<\/cite> <span class=\"says\">sagt:<\/span><\/div>\n<p><!-- .comment-author .vcard --><\/p>\n<div class=\"comment-meta commentmetadata\">28. Mai 2015 um 19:59<\/div>\n<p><!-- .comment-meta .commentmetadata --><\/p>\n<div class=\"comment-body\">\n<p>Da hab ich mich wohl nicht klar genug ausgedr\u00fcckt.<br \/>\nDie variable muss bei jedem Touch Ereignis zur\u00fcck gesetzt werden. Damit wenn nichts passiert die LED ausgeschaltet wird.<\/p>\n<\/div>\n<\/div>\n<p><!-- #comment-## --><\/p>\n<ul class=\"children\">\n<li id=\"li-comment-3297\" class=\"comment byuser comment-author-admin_ub bypostauthor odd alt depth-4\">\n<div id=\"comment-3297\">\n<div class=\"comment-author vcard\"><img loading=\"lazy\" decoding=\"async\" class=\"avatar avatar-40 photo\" src=\"http:\/\/0.gravatar.com\/avatar\/67426419ead44d5afa132e92685bb460?s=40&amp;d=http%3A%2F%2F0.gravatar.com%2Favatar%2Fad516503a11cd5ca435acc9bb6523536%3Fs%3D40&amp;r=G\" alt=\"\" width=\"40\" height=\"40\" \/><cite class=\"fn\">admin_ub<\/cite> <span class=\"says\">sagt:<\/span><\/div>\n<p><!-- .comment-author .vcard --><\/p>\n<div class=\"comment-meta commentmetadata\">28. Mai 2015 um 21:02<\/div>\n<p><!-- .comment-meta .commentmetadata --><\/p>\n<div class=\"comment-body\">\n<p>falls es reicht zu erkennen ob der Touch an irgendeiner stelle gedr\u00fcckt wurde gibt es im File \u201cstm32_ub_sgui.c\u201d in der Funktion \u201cSGUI_Do\u201d die Abfrage \u201cif(Touch_Data.status==TOUCH_PRESSED) {\u201d<\/p>\n<p>Wenn nur bei den Buttons oder Schaltern reagiert werden soll, muss die Variable \u201ctouch_aktion\u201d ausgewertet werden und zwar ganz am Ende der Funktion. Die Variable ist \u201ctrue\u201d wenn irgendein sichtbares Objekt bet\u00e4tigt wurde.<\/p>\n<\/div>\n<\/div>\n<p><!-- #comment-## --><\/p>\n<ul class=\"children\">\n<li id=\"li-comment-3301\" class=\"comment even depth-5\">\n<div id=\"comment-3301\">\n<div class=\"comment-author vcard\"><img loading=\"lazy\" decoding=\"async\" class=\"avatar avatar-40 photo\" src=\"http:\/\/0.gravatar.com\/avatar\/a1409b1fe6254bc7fbdcfa48b73a1ee9?s=40&amp;d=http%3A%2F%2F0.gravatar.com%2Favatar%2Fad516503a11cd5ca435acc9bb6523536%3Fs%3D40&amp;r=G\" alt=\"\" width=\"40\" height=\"40\" \/><cite class=\"fn\">Joerg B.<\/cite> <span class=\"says\">sagt:<\/span><\/div>\n<p><!-- .comment-author .vcard --><\/p>\n<div class=\"comment-meta commentmetadata\">29. Mai 2015 um 12:22<\/div>\n<p><!-- .comment-meta .commentmetadata --><\/p>\n<div class=\"comment-body\">\n<p>Nein es reicht wenn irgend ein Touch ausgel\u00f6st wurde.<\/p>\n<p>Ich werde das heute Abend mal testen\u2026<\/p>\n<p>Danke<\/p>\n<\/div>\n<\/div>\n<p><!-- #comment-## --><\/li>\n<li id=\"li-comment-3302\" class=\"comment byuser comment-author-admin_ub bypostauthor odd alt depth-5\">\n<div id=\"comment-3302\">\n<div class=\"comment-author vcard\"><img loading=\"lazy\" decoding=\"async\" class=\"avatar avatar-40 photo\" src=\"http:\/\/0.gravatar.com\/avatar\/67426419ead44d5afa132e92685bb460?s=40&amp;d=http%3A%2F%2F0.gravatar.com%2Favatar%2Fad516503a11cd5ca435acc9bb6523536%3Fs%3D40&amp;r=G\" alt=\"\" width=\"40\" height=\"40\" \/><cite class=\"fn\">admin_ub<\/cite> <span class=\"says\">sagt:<\/span><\/div>\n<p><!-- .comment-author .vcard --><\/p>\n<div class=\"comment-meta commentmetadata\">29. Mai 2015 um 20:07<\/div>\n<p><!-- .comment-meta .commentmetadata --><\/p>\n<div class=\"comment-body\">\n<p>Die Variable \u201cTouch_Data.status\u201d ist global das bedeutet die kannst du auch irgendwo in der Main abfragen.<\/p>\n<\/div>\n<\/div>\n<p><!-- #comment-## --><\/li>\n<\/ul>\n<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n<\/li>\n<\/ol>\n","protected":false},"excerpt":{"rendered":"<p>Diese Library erm\u00f6glicht es eine \u201ceinfache\u201d Graphische Benutzeroberfl\u00e4che mit dem STM32F407 und einem Grafik-Display (mit Touch) zu realisieren. Hier ein Demo-Bild : Simple GUI Es ist die gleiche Library wie f\u00fcr den STM32F429 (LIB-27) nur wird hier ein Display mit &hellip; <a href=\"https:\/\/mikrocontroller.bplaced.net\/wordpress\/stm32f4\/komplette-library-liste-stm32f4\/94-simple_gui-library-stm32f4\/\">Weiterlesen <span class=\"meta-nav\">&rarr;<\/span><\/a><\/p>\n","protected":false},"author":1,"featured_media":0,"parent":144,"menu_order":94,"comment_status":"open","ping_status":"closed","template":"","meta":{"footnotes":""},"categories":[128],"tags":[9,155,7],"class_list":["post-533","page","type-page","status-publish","hentry","category-stm32f4","tag-library","tag-sgui","tag-stm32f4"],"_links":{"self":[{"href":"https:\/\/mikrocontroller.bplaced.net\/wordpress\/wp-json\/wp\/v2\/pages\/533","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/mikrocontroller.bplaced.net\/wordpress\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/mikrocontroller.bplaced.net\/wordpress\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/mikrocontroller.bplaced.net\/wordpress\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/mikrocontroller.bplaced.net\/wordpress\/wp-json\/wp\/v2\/comments?post=533"}],"version-history":[{"count":5,"href":"https:\/\/mikrocontroller.bplaced.net\/wordpress\/wp-json\/wp\/v2\/pages\/533\/revisions"}],"predecessor-version":[{"id":1639,"href":"https:\/\/mikrocontroller.bplaced.net\/wordpress\/wp-json\/wp\/v2\/pages\/533\/revisions\/1639"}],"up":[{"embeddable":true,"href":"https:\/\/mikrocontroller.bplaced.net\/wordpress\/wp-json\/wp\/v2\/pages\/144"}],"wp:attachment":[{"href":"https:\/\/mikrocontroller.bplaced.net\/wordpress\/wp-json\/wp\/v2\/media?parent=533"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/mikrocontroller.bplaced.net\/wordpress\/wp-json\/wp\/v2\/categories?post=533"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/mikrocontroller.bplaced.net\/wordpress\/wp-json\/wp\/v2\/tags?post=533"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}