{"id":331,"date":"2017-11-23T21:09:28","date_gmt":"2017-11-23T20:09:28","guid":{"rendered":"http:\/\/mikrocontroller.bplaced.net\/wordpress\/?page_id=331"},"modified":"2017-12-30T19:31:55","modified_gmt":"2017-12-30T18:31:55","slug":"24-stemwin-library-stm32f429","status":"publish","type":"page","link":"https:\/\/mikrocontroller.bplaced.net\/wordpress\/?page_id=331","title":{"rendered":"24-STemWin-Library (STM32F429)"},"content":{"rendered":"<p><div id=\"nav-below\" class=\"navigation\"><div class=\"nav-previous\"><a href=\"https:\/\/mikrocontroller.bplaced.net\/wordpress\/?page_id=329\" title=\"23-USB-HID_Host-Library (STM32F429)\"><span class=\"meta-nav\">\u2190<\/span> 23-USB-HID_Host-Library (STM32F429)<\/a><\/div><\/div><!-- #nav-below --><div id=\"nav-below\" class=\"navigation\"><div class=\"nav-next\"><a href=\"https:\/\/mikrocontroller.bplaced.net\/wordpress\/?page_id=333\" title=\"25-SPI_BMA180-Library (STM32F429)\">25-SPI_BMA180-Library (STM32F429) <span class=\"meta-nav\">&rarr;<\/span><\/a><\/div><\/div><!-- #nav-below --><\/p>\n<p>Diese Library bindet die STemWin (in Version 5.22) ein\u00a0(ohne OS).<\/p>\n<p>\u201cemWin\u201d ist von SEGGER (www.segger.com) und ST hat f\u00fcr seine STM-Familie eine kostenlose vorkompilierte Library dazu ver\u00f6ffenlicht \u201cSTemWin\u201d<\/p>\n<p>Mit \u201cSTemWin\u201d kann eine Windows \u00e4hnliche GUI programmiert werden mit Buttons, Fenstern usw.<\/p>\n<p>Das ganze ist sehr Umfangreich und ich kann hier nicht jede Funktion erkl\u00e4ren. Dazu gibt es viele Dokus im Internet u.a. auch von Segger und ST (einfach mal suchen).<br \/>\nAuf der Internet Seite von Segger gibt es auch viele Beispiel-Programme als \u201cC-Files\u201d f\u00fcr die einzelnen Funktionen die man direkt benutzen kann.<\/p>\n<p>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\u00fcckt, wird er gel\u00f6scht.<\/p>\n<p>Ich habe alle notwendigen Librarys (LCD, TOUCH, SDRAM, I2C, SPI) in den emWIN-Ordner kopiert, weil ohne diese Files das ganze eh nicht l\u00e4uft.<\/p>\n<p>Ich hab auch ein \u201cShow-Projekt\u201d hochgeladen, mit dem original Demo von ST in dem man ziemlich viele Funktionen zu sehen bekommt.<\/p>\n<p><span style=\"text-decoration: underline;\">Hinweis zum Landscape-Mode :<\/span><br \/>\nzum drehen von GUI+Touch habe ich die Funktion \u201cUB_STemWIN_GUIRotate\u201d geschrieben. Diese funktioniert aber nur, wenn der GUI gen\u00fcgend RAM zur Verf\u00fcgung steht. Dazu muss das externe SDRAM benutzt werden. Um dieses zu aktivieren, muss im File \u201cGUIConf.c\u201d der Define \u201cUSE_SDRAM_AS_GUIMEM \u00a0 \u00a01\u2033 gesetzt werden.\u00a0Dies f\u00fchrt allerdings dazu, das die GUI viel langsamer wird.<\/p>\n<p>Zum vergleich :<br \/>\nmit internem RAM der CPU : 35.215.000 Pixel\/sec (Portrait)<br \/>\nmit externem SDRAM : 1.375.000 Pixel\/sec (Landscape)<\/p>\n<p><strong><strong>Beispielbild :<\/strong><br \/>\n<\/strong><\/p>\n<div id=\"attachment_3175\" class=\"wp-caption alignnone\" style=\"width: 189px;\">\n<p><a href=\"wp-content\/uploads\/2013\/12\/stemwin1.jpg\"><img loading=\"lazy\" decoding=\"async\" class=\"size-medium wp-image-3175\" src=\"wp-content\/uploads\/2013\/12\/stemwin1-179x300.jpg\" alt=\"stemwin1\" width=\"179\" height=\"300\" \/><\/a><\/p>\n<p class=\"wp-caption-text\">STemWin Hello World<\/p>\n<\/div>\n<p><strong>Enumerationen :<\/strong><\/p>\n<pre lang=\"c\" line=\"1\">typedef enum {\r\n  ROTATE_0 = 0, \/\/ Portrait\r\n  ROTATE_90,    \/\/ Landscape\r\n  ROTATE_180,   \/\/ Portrait\r\n  ROTATE_270    \/\/ Landscape\r\n}STEMWIN_Rotate_t;<\/pre>\n<p><strong>Funktionen :<\/strong><\/p>\n<pre lang=\"c\" line=\"1\">ErrorStatus UB_STemWIN_init(void); \/\/ zum init und start von STemWin\r\nErrorStatus UB_STemWIN_GUIRotate(STEMWIN_Rotate_t mode); \/\/ zum drehen der GUI<\/pre>\n<p><strong>Beispiel :<\/strong><\/p>\n<pre lang=\"c\" line=\"1\">\/\/--------------------------------------------------------------\r\n\/\/ File     : main.c\r\n\/\/ Datum    : 09.12.2013\r\n\/\/ Version  : 1.0\r\n\/\/ Autor    : UB\r\n\/\/ EMail    : mc-4u(@)t-online.de\r\n\/\/ Web      : www.mikrocontroller-4u.de\r\n\/\/ CPU      : STM32F429\r\n\/\/ IDE      : CooCox CoIDE 1.7.4\r\n\/\/ GCC      : 4.7 2012q4\r\n\/\/ Module   : CMSIS_BOOT, M4_CMSIS_CORE\r\n\/\/ Funktion : Demo der STemWin-Library\r\n\/\/ Hinweis  : Diese zwei Files muessen auf 8MHz stehen\r\n\/\/              \"cmsis_boot\/stm32f4xx.h\"\r\n\/\/              \"cmsis_boot\/system_stm32f4xx.c\"\r\n\/\/ In Configuration diese Define hinzuf\u00fcgen :\r\n\/\/ \"STM32F429_439xx\" , \"__ASSEMBLY__\" , \"USE_STDPERIPH_DRIVER\"\r\n\/\/--------------------------------------------------------------\r\n\r\n#include \"main.h\"\r\n#include \"stm32_ub_stemwin.h\"\r\n\r\nint main(void)\r\n{\r\n  BUTTON_Handle hButton;\r\n\r\n  SystemInit(); \/\/ Quarz Einstellungen aktivieren\r\n\r\n  \/\/ init und start von STemWin\r\n  UB_STemWIN_init();\r\n\r\n  \/\/ Font einstellen\r\n  GUI_SetFont(GUI_FONT_20F_ASCII);\r\n  \/\/ Text ausgeben\r\n  GUI_DispStringHCenterAt(\"Hello world!\", 80, 20);\r\n\r\n  \/\/ Button-Demo\r\n  while(1)\r\n  {\r\n    GUI_SetFont(&amp;GUI_Font8x16);\r\n    GUI_DispStringHCenterAt(\"Click on button...\", 160, 90);\r\n    \/\/ Create the button\r\n    hButton = BUTTON_Create(110, 110, 100, 40, GUI_ID_OK, WM_CF_SHOW);\r\n    \/\/ Set the button text\r\n    BUTTON_SetText(hButton, \"Click me...\");\r\n    \/\/ Let window manager handle the button\r\n    while (GUI_WaitKey() != GUI_ID_OK);\r\n    \/\/ Delete the button\r\n    BUTTON_Delete(hButton);\r\n    GUI_ClearRect(0, 50, 319, 239);\r\n    GUI_Delay(1000);\r\n  }\r\n}\r\n<\/pre>\n<p>Hier die Library zum\u00a0<strong>Download :<\/strong><\/p>\n<p><a href=\"wp-content\/uploads\/2013\/12\/stemwin_f429_v101.zip\">stemwin_f429_v101<\/a><\/p>\n<p>Hier der komplette CooCox-Projektordner zum\u00a0<strong>Download :<\/strong><\/p>\n<p><a href=\"wp-content\/uploads\/2013\/12\/Demo_F429_24.zip\">Demo_F429_24<\/a><\/p>\n<hr \/>\n<h3 id=\"comments-title\">26 Antworten auf <em>24-STemWin-Library (STM32F429)<\/em><\/h3>\n<ol class=\"commentlist\">\n<li id=\"li-comment-1128\" class=\"comment even thread-even depth-1\">\n<div id=\"comment-1128\">\n<div class=\"comment-author vcard\"><img loading=\"lazy\" decoding=\"async\" class=\"avatar avatar-40 photo\" src=\"http:\/\/0.gravatar.com\/avatar\/a23631c70b7c5945827413d007189dab?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\">Friesenmartin<\/cite> <span class=\"says\">sagt:<\/span><\/div>\n<p><!-- .comment-author .vcard --><\/p>\n<div class=\"comment-meta commentmetadata\">10. Dezember 2013 um 11:14<\/div>\n<p><!-- .comment-meta .commentmetadata --><\/p>\n<div class=\"comment-body\">\n<p>Hallo,<\/p>\n<p>ich danke dir erst einmal recht herzlich f\u00fcr die vielen tollen Beispiele hier auf der Seite. Das einbinden der STemWin hab ich schon gesucht und bin hier endlich f\u00fcndig geworden. Vielen vielen Dank daf\u00fcr.<\/p>\n<p>Eine frage h\u00e4tte ich noch:<br \/>\nIch benutze das STM32F429I-DISCO Board. Gibt es da eine M\u00f6glichkeit Dezimalzahlen oder Float um 90\u00b0 zu drehen, sodass diese \u00fcber die breite Seite angezeigt werden. In der Doku zu STemWin hab ich leider nur das f\u00fcr Text gesehen. Wenn es keine direkte M\u00f6glichkeit gibt, dann muss ich halt das ganze in Strings umwandeln und dann \u00fcber Text ausgeben.<\/p>\n<p>Danke dir.<\/p>\n<\/div>\n<\/div>\n<p><!-- #comment-## --><\/p>\n<ul class=\"children\">\n<li id=\"li-comment-1130\" class=\"comment byuser comment-author-admin_ub bypostauthor odd alt depth-2\">\n<div id=\"comment-1130\">\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\">10. Dezember 2013 um 19:49<\/div>\n<p><!-- .comment-meta .commentmetadata --><\/p>\n<div class=\"comment-body\">\n<p>sorry, wie schon geschrieben ich hab das \u00fcber 1000 Seiten lange PDF zu \u201cemWin\u201d nicht durchgelesen, kann dir also nicht weiterhelfen.<\/p>\n<\/div>\n<\/div>\n<p><!-- #comment-## --><\/li>\n<\/ul>\n<\/li>\n<li id=\"li-comment-1172\" class=\"comment even thread-odd thread-alt depth-1\">\n<div id=\"comment-1172\">\n<div class=\"comment-author vcard\"><img loading=\"lazy\" decoding=\"async\" class=\"avatar avatar-40 photo\" src=\"http:\/\/1.gravatar.com\/avatar\/b894d67379dd0647dd316009f47155d2?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\">Joerg<\/cite> <span class=\"says\">sagt:<\/span><\/div>\n<p><!-- .comment-author .vcard --><\/p>\n<div class=\"comment-meta commentmetadata\">19. Dezember 2013 um 14:25<\/div>\n<p><!-- .comment-meta .commentmetadata --><\/p>\n<div class=\"comment-body\">\n<p>Wie man Seiten mit dem GuiBuilder erstellt und einbindet hast du nicht zuf\u00e4llig probiert?<\/p>\n<\/div>\n<\/div>\n<p><!-- #comment-## --><\/p>\n<ul class=\"children\">\n<li id=\"li-comment-1173\" class=\"comment byuser comment-author-admin_ub bypostauthor odd alt depth-2\">\n<div id=\"comment-1173\">\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\">19. Dezember 2013 um 20:22<\/div>\n<p><!-- .comment-meta .commentmetadata --><\/p>\n<div class=\"comment-body\">\n<p>nein<\/p>\n<\/div>\n<\/div>\n<p><!-- #comment-## --><\/li>\n<li id=\"li-comment-1193\" class=\"comment even depth-2\">\n<div id=\"comment-1193\">\n<div class=\"comment-author vcard\"><img loading=\"lazy\" decoding=\"async\" class=\"avatar avatar-40 photo\" src=\"http:\/\/0.gravatar.com\/avatar\/af5be9fa3f95b3ec9c424ed130b7f2d3?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\">Cortex-Einsteiger<\/cite> <span class=\"says\">sagt:<\/span><\/div>\n<p><!-- .comment-author .vcard --><\/p>\n<div class=\"comment-meta commentmetadata\">21. Dezember 2013 um 16:43<\/div>\n<p><!-- .comment-meta .commentmetadata --><\/p>\n<div class=\"comment-body\">\n<p>das einbinden einer Gui ist einfach, nur die Interaktion wird kompliziert:<br \/>\n&#8211; erstelle eine Gui<br \/>\n&#8211; binde sie ins projekt ein \u201cFramewinDLG.c\u201d<br \/>\n&#8211; rufe die Funktion in der Main auf CreateFramewin();<\/p>\n<\/div>\n<\/div>\n<p><!-- #comment-## --><\/p>\n<ul class=\"children\">\n<li id=\"li-comment-1221\" class=\"comment odd alt depth-3\">\n<div id=\"comment-1221\">\n<div class=\"comment-author vcard\"><img loading=\"lazy\" decoding=\"async\" class=\"avatar avatar-40 photo\" src=\"http:\/\/1.gravatar.com\/avatar\/b894d67379dd0647dd316009f47155d2?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\">Joerg<\/cite> <span class=\"says\">sagt:<\/span><\/div>\n<p><!-- .comment-author .vcard --><\/p>\n<div class=\"comment-meta commentmetadata\">27. Dezember 2013 um 17:08<\/div>\n<p><!-- .comment-meta .commentmetadata --><\/p>\n<div class=\"comment-body\">\n<p>ich habe dazu ein informatives Video gefunden.<\/p>\n<p>Ist zwar nicht f\u00fcr die STemWin Version aber die sind ja fast gleich.<\/p>\n<p><a href=\"http:\/\/www.youtube.com\/watch?v=stan5a_r6kg\" rel=\"nofollow\">http:\/\/www.youtube.com\/watch?v=stan5a_r6kg<\/a><\/p>\n<\/div>\n<\/div>\n<p><!-- #comment-## --><\/li>\n<li id=\"li-comment-1257\" class=\"comment even depth-3\">\n<div id=\"comment-1257\">\n<div class=\"comment-author vcard\"><img loading=\"lazy\" decoding=\"async\" class=\"avatar avatar-40 photo\" src=\"http:\/\/1.gravatar.com\/avatar\/b894d67379dd0647dd316009f47155d2?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\">Joerg<\/cite> <span class=\"says\">sagt:<\/span><\/div>\n<p><!-- .comment-author .vcard --><\/p>\n<div class=\"comment-meta commentmetadata\">10. Januar 2014 um 16:17<\/div>\n<p><!-- .comment-meta .commentmetadata --><\/p>\n<div class=\"comment-body\">\n<p>Hallo Cortex \u2013 Einsteiger,<br \/>\ninzwischen habe ich es soweit hin bekommen. Jetzt w\u00fcrde ich gerne ein callback routine einf\u00fcgen. (WM_SetCallback)<\/p>\n<p>Will mir aber nicht recht gelingen.<\/p>\n<p>Ich will damit z.B. das Datum anzeigen.<\/p>\n<p>Bis du da schon weiter?<\/p>\n<\/div>\n<\/div>\n<p><!-- #comment-## --><\/p>\n<ul class=\"children\">\n<li id=\"li-comment-1263\" class=\"comment odd alt depth-4\">\n<div id=\"comment-1263\">\n<div class=\"comment-author vcard\"><img loading=\"lazy\" decoding=\"async\" class=\"avatar avatar-40 photo\" src=\"http:\/\/0.gravatar.com\/avatar\/af5be9fa3f95b3ec9c424ed130b7f2d3?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\">Cortex-Einsteiger<\/cite> <span class=\"says\">sagt:<\/span><\/div>\n<p><!-- .comment-author .vcard --><\/p>\n<div class=\"comment-meta commentmetadata\">11. Januar 2014 um 13:18<\/div>\n<p><!-- .comment-meta .commentmetadata --><\/p>\n<div class=\"comment-body\">\n<p>Es steht zwar auf der To-Do-Liste, habe aber erstmal an einem anderen Projekt zu knabbern. F\u00fcr meine ersten kleinen Tests hatte ich den \u201cReaktionscode\u201d direkt in die FramewinDLG reingeschrieben:<br \/>\ncase WM_NOTIFICATION_RELEASED:<br \/>\nFRAMEWIN_SetClientColor(pMsg-&gt;hWin, GUI_RED);<br \/>\nbreak;<\/p>\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-1180\" class=\"comment even thread-even depth-1\">\n<div id=\"comment-1180\">\n<div class=\"comment-author vcard\"><img loading=\"lazy\" decoding=\"async\" class=\"avatar avatar-40 photo\" src=\"http:\/\/0.gravatar.com\/avatar\/01e35078c071acc1bc9f9fd715ad3f79?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\">Adolf<\/cite> <span class=\"says\">sagt:<\/span><\/div>\n<p><!-- .comment-author .vcard --><\/p>\n<div class=\"comment-meta commentmetadata\">20. Dezember 2013 um 19:19<\/div>\n<p><!-- .comment-meta .commentmetadata --><\/p>\n<div class=\"comment-body\">\n<p>Hi Uwe,<\/p>\n<p>vielen vielen Dank f\u00fcr die hervorragende Arbeit mit dem Landscape Mode.<\/p>\n<p>Jetzt habe ich mit der GUI endlich ein Werkzeug nach dem ich schon seit Jahren suche.<br \/>\nAllerdings schie\u00dft durch das Drehen die Copile Time auf das Zehnfache in die H\u00f6he<br \/>\nund die Binary Size steigt von 200k auf 600k, aber es funktioniert.<br \/>\nBesten Dank, Adolf<\/p>\n<\/div>\n<\/div>\n<p><!-- #comment-## --><\/p>\n<ul class=\"children\">\n<li id=\"li-comment-1181\" class=\"comment byuser comment-author-admin_ub bypostauthor odd alt depth-2\">\n<div id=\"comment-1181\">\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\">20. Dezember 2013 um 20:45<\/div>\n<p><!-- .comment-meta .commentmetadata --><\/p>\n<div class=\"comment-body\">\n<p>Gl\u00fccklich bin ich mit der L\u00f6sung nicht, aber im Netz hab ich bis jetzt keine Alternative gefunden.<\/p>\n<\/div>\n<\/div>\n<p><!-- #comment-## --><\/p>\n<ul class=\"children\">\n<li id=\"li-comment-1412\" class=\"comment even depth-3\">\n<div id=\"comment-1412\">\n<div class=\"comment-author vcard\"><img loading=\"lazy\" decoding=\"async\" class=\"avatar avatar-40 photo\" src=\"http:\/\/1.gravatar.com\/avatar\/b894d67379dd0647dd316009f47155d2?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\">Joerg B.<\/cite> <span class=\"says\">sagt:<\/span><\/div>\n<p><!-- .comment-author .vcard --><\/p>\n<div class=\"comment-meta commentmetadata\">23. Februar 2014 um 01:29<\/div>\n<p><!-- .comment-meta .commentmetadata --><\/p>\n<div class=\"comment-body\">\n<p>Man kann in der GUIDRV_stm32f429i_discovery.c<\/p>\n<p>Zeile 155 und folgende GUIDRV_LIN_32 auf GUIDRV_LIN_OSX_32<\/p>\n<p>das dreht zwar das ganze aber es entsteht v\u00f6lliges chaos auf dem display. Im Handbuch Seite 1036<\/p>\n<\/div>\n<\/div>\n<p><!-- #comment-## --><\/li>\n<\/ul>\n<\/li>\n<\/ul>\n<\/li>\n<li id=\"li-comment-1184\" class=\"comment odd alt thread-odd thread-alt depth-1\">\n<div id=\"comment-1184\">\n<div class=\"comment-author vcard\"><img loading=\"lazy\" decoding=\"async\" class=\"avatar avatar-40 photo\" src=\"http:\/\/1.gravatar.com\/avatar\/b894d67379dd0647dd316009f47155d2?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\">Joerg<\/cite> <span class=\"says\">sagt:<\/span><\/div>\n<p><!-- .comment-author .vcard --><\/p>\n<div class=\"comment-meta commentmetadata\">20. Dezember 2013 um 22:11<\/div>\n<p><!-- .comment-meta .commentmetadata --><\/p>\n<div class=\"comment-body\">\n<p>Ich fand die alte GUI von ST eigentlich besser, zwar nicht so modern gestylt, daf\u00fcr aber wesentlich einfache wenn man verschachtelte Men\u00fcs programmieren wollte.<\/p>\n<\/div>\n<\/div>\n<p><!-- #comment-## --><\/p>\n<ul class=\"children\">\n<li id=\"li-comment-1185\" class=\"comment even depth-2\">\n<div id=\"comment-1185\">\n<div class=\"comment-author vcard\"><img loading=\"lazy\" decoding=\"async\" class=\"avatar avatar-40 photo\" src=\"http:\/\/1.gravatar.com\/avatar\/b894d67379dd0647dd316009f47155d2?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\">Joerg<\/cite> <span class=\"says\">sagt:<\/span><\/div>\n<p><!-- .comment-author .vcard --><\/p>\n<div class=\"comment-meta commentmetadata\">20. Dezember 2013 um 22:14<\/div>\n<p><!-- .comment-meta .commentmetadata --><\/p>\n<div class=\"comment-body\">\n<p>Es gibt eine preiswerte GUI von microe, leider nur mit deren eigenen Compilern kompatible <a href=\"http:\/\/www.mikroe.com\/visualtft\/\" rel=\"nofollow\">http:\/\/www.mikroe.com\/visualtft\/<\/a><\/p>\n<\/div>\n<\/div>\n<p><!-- #comment-## --><\/li>\n<\/ul>\n<\/li>\n<li id=\"li-comment-1467\" class=\"comment odd alt thread-even depth-1\">\n<div id=\"comment-1467\">\n<div class=\"comment-author vcard\"><img loading=\"lazy\" decoding=\"async\" class=\"avatar avatar-40 photo\" src=\"http:\/\/0.gravatar.com\/avatar\/25add84b6b8334f0b71e3f03471daf65?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\">Markus<\/cite> <span class=\"says\">sagt:<\/span><\/div>\n<p><!-- .comment-author .vcard --><\/p>\n<div class=\"comment-meta commentmetadata\">13. M\u00e4rz 2014 um 20:00<\/div>\n<p><!-- .comment-meta .commentmetadata --><\/p>\n<div class=\"comment-body\">\n<p>Hallo,<\/p>\n<p>erstmal vielen, vielen Dank f\u00fcr die super Library!<\/p>\n<p>Gibt es eine M\u00f6glichkeit das ganze um FreeRTOS zu erweitern?<br \/>\nIch hab nun schon einige Stunden versucht das hinzubekommen, aber es funktioniert nicht.<br \/>\nNach allein FreeRTOS includes, angepasster config, etc. schaut meine main() so aus:<\/p>\n<p>NVIC_PriorityGroupConfig(NVIC_PriorityGroup_4);<\/p>\n<p>SystemInit(); \/\/ Quarz Einstellungen aktivieren<\/p>\n<p>\/* Activate the use of memory device feature *\/<br \/>\nWM_SetCreateFlags(WM_CF_MEMDEV);<\/p>\n<p>\/* Create background task *\/<br \/>\nxTaskCreate(Background_Task,<br \/>\n(signed char const*)\u201dBK_GND\u201d,<br \/>\nBackground_Task_STACK,<br \/>\nNULL,<br \/>\nBackground_Task_PRIO,<br \/>\n&amp;Task_Handle);<\/p>\n<p>\/* Create demo task *\/<br \/>\nxTaskCreate(Demo_Task,<br \/>\n(signed char const*)\u201dGUI_DEMO\u201d,<br \/>\nDemo_Task_STACK,<br \/>\nNULL,<br \/>\nDemo_Task_PRIO,<br \/>\n&amp;Demo_Handle);<\/p>\n<p>if( !Task_Handle &amp;&amp; !Demo_Handle )<br \/>\n{<br \/>\nreturn 0;<br \/>\n}<\/p>\n<p>\/* Start the FreeRTOS scheduler *\/<br \/>\nvTaskStartScheduler();<\/p>\n<p>Aber es ist, als w\u00fcrden die Tasks nicht gestartet werden.<\/p>\n<p>Hast du eine Idee?<\/p>\n<p>Vielen Dank!<\/p>\n<p>Gr\u00fc\u00dfe<br \/>\nMarkus<\/p>\n<\/div>\n<\/div>\n<p><!-- #comment-## --><\/li>\n<li id=\"li-comment-1517\" class=\"comment even thread-odd thread-alt depth-1\">\n<div id=\"comment-1517\">\n<div class=\"comment-author vcard\"><img loading=\"lazy\" decoding=\"async\" class=\"avatar avatar-40 photo\" src=\"http:\/\/1.gravatar.com\/avatar\/3a8455cca182a7d77ab111dd68cb0124?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\">Michael<\/cite> <span class=\"says\">sagt:<\/span><\/div>\n<p><!-- .comment-author .vcard --><\/p>\n<div class=\"comment-meta commentmetadata\">1. April 2014 um 13:24<\/div>\n<p><!-- .comment-meta .commentmetadata --><\/p>\n<div class=\"comment-body\">\n<p>Hallo,<\/p>\n<p>super Arbeit mit den Library\u2019s funktionieren bei mir (unter Linux) alle wunderbar bis auf die STemWin Geschichte <img decoding=\"async\" class=\"wp-smiley\" src=\"wp-includes\/images\/smilies\/icon_sad.gif\" alt=\":(\" \/> Hab nun extra mal ein Windoof XP unter VMWare aufgesetzt um die Library mal mit der CoIDE zu testen. Da liefs natuerlich alles wunderbar. Nun frage ich mich wo das Problem liegen kann? Ich hab in dieser CoIDE aber auch kein Makefile oder irgendwas aehnliches gefunden (Nichtmal die generierte binary %)). Da ich aber nur Streifen auf dem TFT sehe gehe ich mal davon aus das etwas mit dem Timing nicht stimmt!? (Wundert mich nur da deine LCD Librarys wunderbar funktionieren)<br \/>\nLiegt es eventuell dadran:<\/p>\n<p>Diese zwei Files muessen auf 8MHz stehen<br \/>\n\/\/ \u201ccmsis_boot\/stm32f4xx.h\u201d<br \/>\n\/\/ \u201ccmsis_boot\/system_stm32f4xx.c\u201d<br \/>\n\/\/ In Configuration diese Define hinzuf\u00fcgen :<br \/>\n\/\/ \u201cSTM32F429_439xx\u201d , \u201c__ASSEMBLY__\u201d , \u201cUSE_STDPERIPH_DRIVER\u201d<\/p>\n<p>Wo muss das 8MHz bzw 8000000 denn stehen!? HSE? Oder was? Und die defines?<br \/>\nDas erste ist klar.. hab ich direkt in der header file deklariert. Aber die anderen beiden!? Die STDPERIPH sind ja soweiso in meiner Makefile drin.<\/p>\n<p>Vielleicht hast du oder jemand anderes ja noch einen Ansatz was ich probieren k\u00f6nnte <img decoding=\"async\" class=\"wp-smiley\" src=\"wp-includes\/images\/smilies\/icon_smile.gif\" alt=\":)\" \/> Kann auch gerne mal mein bisherigen kram mal posten (Kommt drauf an ob noch jemand Linux nutzt ;P)<\/p>\n<p>Gru\u00df Michael<\/p>\n<\/div>\n<\/div>\n<p><!-- #comment-## --><\/p>\n<ul class=\"children\">\n<li id=\"li-comment-1520\" class=\"comment byuser comment-author-admin_ub bypostauthor odd alt depth-2\">\n<div id=\"comment-1520\">\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\">1. April 2014 um 20:27<\/div>\n<p><!-- .comment-meta .commentmetadata --><\/p>\n<div class=\"comment-body\">\n<p>die zwei Files sind, wenn sie original von einem neuen CooCox-Projekt angelegt werden, f\u00fcr einen 25MHz Quarz ausgelegt. Weil aber auf dem Discovery-Board nur ein 8MHz eingebaut ist, m\u00fcssen beide Files angepasst werden. Mach einfach mal einen Textvergleich mit deinen und meinen Files (meine stimmen <img decoding=\"async\" class=\"wp-smiley\" src=\"wp-includes\/images\/smilies\/icon_smile.gif\" alt=\":-)\" \/><br \/>\nDie Defines werden in der CoIDE unter \u201cConfiguration\u201d in der Registerkarte \u201cCompile\u201d und dem Feld \u201cDefined Symbols\u201d per \u201cAdd\u201d hinzugef\u00fcgt.<\/p>\n<\/div>\n<\/div>\n<p><!-- #comment-## --><\/p>\n<ul class=\"children\">\n<li id=\"li-comment-1523\" class=\"comment even depth-3\">\n<div id=\"comment-1523\">\n<div class=\"comment-author vcard\"><img loading=\"lazy\" decoding=\"async\" class=\"avatar avatar-40 photo\" src=\"http:\/\/1.gravatar.com\/avatar\/3a8455cca182a7d77ab111dd68cb0124?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\">Michael<\/cite> <span class=\"says\">sagt:<\/span><\/div>\n<p><!-- .comment-author .vcard --><\/p>\n<div class=\"comment-meta commentmetadata\">1. April 2014 um 22:54<\/div>\n<p><!-- .comment-meta .commentmetadata --><\/p>\n<div class=\"comment-body\">\n<p>okay, ich hab zumindest rausfinden k\u00f6nnen das es nicht am Timing liegt, also stimmen meine Files auch (habs trotzdem mal 1:1 von dir \u00fcbernommen) aber trotzdem kommt nach dem UB_STemWIN_init(); nichts mehr auf dem Display. Ich werde morgen mal mit dem Debugger bei gehen und schauen wo er genau haengt\u2026 Es werden nur Streifen\/Punkte angezeigt. Und die defines hab ich auch in meine Makefile basteln m\u00fcssen da ja deine bzw. auch die ST Files diese Defines nutzen.<\/p>\n<\/div>\n<\/div>\n<p><!-- #comment-## --><\/li>\n<\/ul>\n<\/li>\n<\/ul>\n<\/li>\n<li id=\"li-comment-1707\" class=\"comment odd alt thread-even depth-1\">\n<div id=\"comment-1707\">\n<div class=\"comment-author vcard\"><img loading=\"lazy\" decoding=\"async\" class=\"avatar avatar-40 photo\" src=\"http:\/\/1.gravatar.com\/avatar\/dec1051001cef3df5d5bed728a6cbd9f?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\">kostas<\/cite> <span class=\"says\">sagt:<\/span><\/div>\n<p><!-- .comment-author .vcard --><\/p>\n<div class=\"comment-meta commentmetadata\">13. Mai 2014 um 23:48<\/div>\n<p><!-- .comment-meta .commentmetadata --><\/p>\n<div class=\"comment-body\">\n<p>Hello,<br \/>\nwhy rotate doesnt work? at least for me it doesnt<br \/>\neven after define this #define USE_SDRAM_AS_GUIMEM 1<br \/>\nand call screen rotation function UB_STemWIN_GUIRotate (ROTATE_90);<br \/>\nThe screen remain white after all.<br \/>\nI noticed when define sdram as gui memory compilation time is x10 more.<br \/>\nThanks in advance!<\/p>\n<\/div>\n<\/div>\n<p><!-- #comment-## --><\/p>\n<ul class=\"children\">\n<li id=\"li-comment-1714\" class=\"comment byuser comment-author-admin_ub bypostauthor even depth-2\">\n<div id=\"comment-1714\">\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\">17. Mai 2014 um 09:29<\/div>\n<p><!-- .comment-meta .commentmetadata --><\/p>\n<div class=\"comment-body\">\n<p>hmm, i have tested it and it worked with my settings. The function to rotate must placed directly under \u201cUB_STemWIN_init\u201d. And yes the compilation time ist much longer but also the working speed is much slower. So try not to rotate or find a better solution as i do.<\/p>\n<\/div>\n<\/div>\n<p><!-- #comment-## --><\/li>\n<\/ul>\n<\/li>\n<li id=\"li-comment-1823\" class=\"comment odd alt thread-odd thread-alt depth-1\">\n<div id=\"comment-1823\">\n<div class=\"comment-author vcard\"><img loading=\"lazy\" decoding=\"async\" class=\"avatar avatar-40 photo\" src=\"http:\/\/0.gravatar.com\/avatar\/ce471480f6d9ffc05a80690b0bb4c0c1?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\">Igor<\/cite> <span class=\"says\">sagt:<\/span><\/div>\n<p><!-- .comment-author .vcard --><\/p>\n<div class=\"comment-meta commentmetadata\">28. Mai 2014 um 21:09<\/div>\n<p><!-- .comment-meta .commentmetadata --><\/p>\n<div class=\"comment-body\">\n<p>I would like to express my thanks for your libraries \u2013 they are clear and working without any problem. It\u2019s a lot of work you did instead of us.<\/p>\n<p>With best regards<\/p>\n<p>Igor<\/p>\n<\/div>\n<\/div>\n<p><!-- #comment-## --><\/li>\n<li id=\"li-comment-1912\" class=\"comment even thread-even depth-1\">\n<div id=\"comment-1912\">\n<div class=\"comment-author vcard\"><img loading=\"lazy\" decoding=\"async\" class=\"avatar avatar-40 photo\" src=\"http:\/\/1.gravatar.com\/avatar\/1c6a0895c6847d3481695cfa7ef3bd90?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\">Holger<\/cite> <span class=\"says\">sagt:<\/span><\/div>\n<p><!-- .comment-author .vcard --><\/p>\n<div class=\"comment-meta commentmetadata\">2. Juli 2014 um 11:21<\/div>\n<p><!-- .comment-meta .commentmetadata --><\/p>\n<div class=\"comment-body\">\n<p>Hallo,<br \/>\nwenn ich die Rotate-Funktionen ausf\u00fchre, um ein Landscape-Format zu nutzen,<br \/>\nschnellen die link-time und die Hex-File-Gr\u00f6\u00dfe in die H\u00f6he, die Flash-Zeiten bleiben aber unver\u00e4ndert. Ursache ist der benutzte SDRAM-Speicher, den der Linker jetzt zum Binary dazulinkt, der Flasher aber nicht flasht, weil der SDRAM-Adressbereich nicht im Flash-Adressbereich liegt. Abhilfe schafft eine kleine \u00c4nderung im Linkerscript, indem die HeapMemSection als NOLOAD deklariert wird:<\/p>\n<p>.HeapMemSection (NOLOAD) :<br \/>\n{<br \/>\n*(.HeapMemSection)<br \/>\n} &gt; sdram<\/p>\n<p>Tip: kommt es bei Rotate zu einem Hard Fault, ist der SDRAM nicht in der GUI alloziiert. Nach UB_LCD_Init() und vor GUI_SetOrientation (Rotation) GUI_Init() ausf\u00fchren, das ruft dann GUI_ALLOC_AssignMemory(extMem, GUI_NUMBYTES) (in GUIConf.c) auf, das den SDRAM zuweist.<\/p>\n<\/div>\n<\/div>\n<p><!-- #comment-## --><\/li>\n<li id=\"li-comment-2797\" class=\"comment odd alt thread-odd thread-alt depth-1\">\n<div id=\"comment-2797\">\n<div class=\"comment-author vcard\"><img loading=\"lazy\" decoding=\"async\" class=\"avatar avatar-40 photo\" src=\"http:\/\/1.gravatar.com\/avatar\/7c5c61397942a54ccad7f4d7903e6eda?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\">Marcel<\/cite> <span class=\"says\">sagt:<\/span><\/div>\n<p><!-- .comment-author .vcard --><\/p>\n<div class=\"comment-meta commentmetadata\">9. Januar 2015 um 21:28<\/div>\n<p><!-- .comment-meta .commentmetadata --><\/p>\n<div class=\"comment-body\">\n<p>Hallo!<br \/>\nvielen danke f\u00fcr die Lib! Ich habe schon so standart sachen hin bekommen wie BUTTONs und auch die progressbar. Nur sobald in der Creat funktion hParent vor kommt wei\u00df ich nicht wie ich das benutzen kann. Ich habe schon herrausgefunden das das mit dem WM zusammen h\u00e4ngt und das dieses OBjekt (Spinbox) ein \u201cKind\u201d von dem Fenster seien muss. Nun meine frage warum Muss das bei Kn\u00f6pfen nicht sein und wie erstelle ich ein Spinbox bzw dann auch das Window?<\/p>\n<p>Danke Marcel<\/p>\n<\/div>\n<\/div>\n<p><!-- #comment-## --><\/li>\n<li id=\"li-comment-2809\" class=\"comment even thread-even depth-1\">\n<div id=\"comment-2809\">\n<div class=\"comment-author vcard\"><img loading=\"lazy\" decoding=\"async\" class=\"avatar avatar-40 photo\" src=\"http:\/\/1.gravatar.com\/avatar\/5ea8afc23c82bfb25a6d8bff4176c138?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\">Gerhard, DD4DA<\/cite> <span class=\"says\">sagt:<\/span><\/div>\n<p><!-- .comment-author .vcard --><\/p>\n<div class=\"comment-meta commentmetadata\">10. Januar 2015 um 22:20<\/div>\n<p><!-- .comment-meta .commentmetadata --><\/p>\n<div class=\"comment-body\">\n<p>Um mal auf die unbeantwortete Frage nach einer Variante mit FreeRTOS in Kombination mit der emWIN GUI, beantworten zu wollen \u2013 (unber\u00fccksichtigt dessen, dass diese Frage schon \u00e4lter ist) kann ich sagen dass dies theoretisch funktioniert. Ich benutze emWIN 5.24h in Kombination mit dem Keil eigenen RTOS \u201cRTX\u201d und dass funktioniert tadellos. Es ist jedoch ein immenser Unterschied ob man mit einer Superloop arbeitet, oder mit einem RTOS. Das liegt im wesentlichen an der unterschiedlichen Art wie Prozesse von einander isoliert und mit unterschiedlichen Priorit\u00e4ten abgearbeitet werden.<br \/>\nZun\u00e4chst m\u00fcssen zwei Prozesse generiert werden die in der Superloop nicht ben\u00f6tigt werden. Die Message-Queue muss periodisch bearbeitet werden sonst passiert nicht mal ein Bildaufbau denn selbst ein GUI_Clear() l\u00f6st zun\u00e4chst auch nur eine Message in der MSGQ aus. Der Background-Handler des GUI sollte alle 50ms mal aufgerufen werden. Ich hab die Zeit auf die H\u00e4lfte reduziert dann sieht es auf meinem 5\u2033 TFT mit SSD1963 am FSMC des STM32F4Disco angeschlossen, sehr fl\u00fcssig aus. Da d\u00fcrfte jeder Arduino-Nutzer vor Neid erblassen. Zum zweiten ben\u00f6tigt man noch einen Task der das Eingabeger\u00e4t abfragt und die Message in die MsgQ stellt. Im einfachen Fall wird ein resistives Touchpanel via SPI angeschlossen und mit Hilfe der vorhandenen API der GUI-Library bedient und diese Aufrage in einem Task der alle 50ms gestartet wird, erledigt. Kompliziert wird es, wenn mehr als ein Ger\u00e4t am gleichen SPI klebt denn dann muss der Zugriff auch noch Semaphoren geregelt werden sonst gibbet es Mecker. Meine Eingangs erw\u00e4hnte Einschr\u00e4nkung \u201cfunktioniert theoretisch\u201d bezieht sich auf die Nutzung von FreeRTOS und der damit zusammenh\u00e4ngende Einsatz von GCC als Compiler. Mir ist es bis her nicht gelungen, ein Bild hinzubekommen. Das OS l\u00e4uft bereits sichtbar, denn ich lasse einige TASKs bereits LED\u2019s , CAN-Bus, ADC per DMA und RS232 bedienen. Ob der SPI ein Problem sein wird, werde ich noch sehen.<br \/>\nIch versuche dieses vorhandene Projekt vom Keil-Compiler zu portieren damit die \u00dcbersetzungszeit ertr\u00e4glicher wird, denn die KEIL-IDE unterst\u00fctzt kein paralleles \u00fcbersetzten und einen Geschwindigkeitsrekord bricht der Keil-Compiler auch nicht.<br \/>\nDie IDE ist auch nicht besonders komfortabel, jedoch f\u00fcr einen Anf\u00e4nger ist sie sehr geeignet, da das Setup f\u00fcr ein Board schnell eingestellt ist.<\/p>\n<\/div>\n<\/div>\n<p><!-- #comment-## --><\/li>\n<li id=\"li-comment-3424\" class=\"comment odd alt thread-odd thread-alt depth-1\">\n<div id=\"comment-3424\">\n<div class=\"comment-author vcard\"><img loading=\"lazy\" decoding=\"async\" class=\"avatar avatar-40 photo\" src=\"http:\/\/0.gravatar.com\/avatar\/055ca0cc219fcbb9749b2ef8bfbc529c?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\">Roman<\/cite> <span class=\"says\">sagt:<\/span><\/div>\n<p><!-- .comment-author .vcard --><\/p>\n<div class=\"comment-meta commentmetadata\">1. Juli 2015 um 22:02<\/div>\n<p><!-- .comment-meta .commentmetadata --><\/p>\n<div class=\"comment-body\">\n<p>Klasse gemacht!<br \/>\nHabe vorher mit Keil gearbeitet und habe StemWin nicht integriert bekommen ohne das er mir die Init Sequenz versemmelt. Jetzt arbeite ich mit Coo und das Ding rennt egal was ich da in die Main klatsche!<\/p>\n<p>DAC Example aus der SDT PERIPH 1.3 zusammen mit deinem Hello World zusammen klappt auch wunderbar aber VORSICHT: Header und Sources nachziehen und in der Main deklarieren.<br \/>\nDas w\u00e4ren: dac,tim,dma.<br \/>\nKopiert einfach das Wesentliche aus der Main.c(Std Periph Examples\/ DAC) raus und ins Hello World rein(InitStruct DMA,DAC,Funktionen am Fu\u00dfende usw.).<br \/>\nErg\u00e4nzt die Main.h um die DAC Addy(zwei Zeilen aus der Example DAC\/Main.h)<br \/>\nTauscht nur noch eine Kleinigkeit aus :<\/p>\n<p>Da das LCD Display mit VSYNC H an PA4 verbunden ist, scheidet ein DAC Ausgang aus, und zwar Channel 1\u2026im Quelltext w\u00e4re das:<\/p>\n<p>GPIO_InitStructure.GPIO_Pin = GPIO_Pin_5;<br \/>\nDAC_Cmd(DAC_Channel_2, ENABLE);<br \/>\nDAC_DMACmd(DAC_Channel_2, ENABLE); (diese Zeilen austauschen)<\/p>\n<p>W\u00e4hlt das Signal eurer Wahl aus indem ihr es einkommentiert und die anderen auskommentiert, k\u00f6nntet nat\u00fcrlich auch Buttons am Bildschirm benutzen\u2026gutes Training f\u00fcr die GUI. <img decoding=\"async\" class=\"wp-smiley\" src=\"wp-includes\/images\/smilies\/icon_smile.gif\" alt=\":)\" \/><\/p>\n<p>Ihr k\u00f6nnt es nat\u00fcrlich auch so lassen und ein S\u00e4gezahn in den VSYNC jagen, man sieht nur leider nichts mehr. <img decoding=\"async\" class=\"wp-smiley\" src=\"wp-includes\/images\/smilies\/icon_wink.gif\" alt=\";)\" \/><\/p>\n<p>Nur noch die Buttons entfernen(Keypressed ect(nur das aus dem DAC Beispiel). \u2026der Compiler wird schon meckern, einfach entfernen)<\/p>\n<p>Wem das zu viel ist gerne nachfragen, kann auch mal zeigen wie man Pixel im Bildschirm titschen l\u00e4sst.<\/p>\n<p>Gr\u00fc\u00dfe<\/p>\n<p>Roman<\/p>\n<\/div>\n<\/div>\n<p><!-- #comment-## --><\/li>\n<li id=\"li-comment-3684\" class=\"comment even thread-even depth-1\">\n<div id=\"comment-3684\">\n<div class=\"comment-author vcard\"><img loading=\"lazy\" decoding=\"async\" class=\"avatar avatar-40 photo\" src=\"http:\/\/0.gravatar.com\/avatar\/c06f24e4f16dd9c4c688e8a09d266173?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\">timertick_t<\/cite> <span class=\"says\">sagt:<\/span><\/div>\n<p><!-- .comment-author .vcard --><\/p>\n<div class=\"comment-meta commentmetadata\">10. Juli 2015 um 16:54<\/div>\n<p><!-- .comment-meta .commentmetadata --><\/p>\n<div class=\"comment-body\">\n<p>Also\u2026 ich hab\u2019s immer noch nicht kapiert\u2026 warum ist das Dingens denn so schrecklich langsam im Landscape mode? Kann man denn nicht einfach das sicherlich vorhandene entsprechende Bit im Display-Controller des on-Chip Peripherals umschalten und die Sache hat sich?<\/p>\n<p>Laut Uwe\u2019s Vergleich zwichen internem u. externem RAM liegt ein Zeitunterschied von ca 1:35(!). Eigentlich kann man diese Variante des Umschaltens nichtmal einem \u201cArduino-Power-User\u201d zumuten\u2026<\/p>\n<\/div>\n<\/div>\n<p><!-- #comment-## --><\/li>\n<li id=\"li-comment-5050\" class=\"comment odd alt thread-odd thread-alt depth-1\">\n<div id=\"comment-5050\">\n<div class=\"comment-author vcard\"><img loading=\"lazy\" decoding=\"async\" class=\"avatar avatar-40 photo\" src=\"http:\/\/1.gravatar.com\/avatar\/b0356a04179cb7b916eba0d61f92d4fa?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\">Biaggi<\/cite> <span class=\"says\">sagt:<\/span><\/div>\n<p><!-- .comment-author .vcard --><\/p>\n<div class=\"comment-meta commentmetadata\">12. Juni 2017 um 20:25<\/div>\n<p><!-- .comment-meta .commentmetadata --><\/p>\n<div class=\"comment-body\">\n<p>Hey,<\/p>\n<p>First of all, thanks for the great site! im finding it very useful and i would like to ask you if I can use this library together with freeRTOS (on STM32F4 discovery board) or do i have to compile it diffrently ? Thank you!<\/p>\n<p>Biaggi<\/p>\n<\/div>\n<\/div>\n<p><!-- #comment-## --><\/li>\n<\/ol>\n","protected":false},"excerpt":{"rendered":"<p>Diese Library bindet die STemWin (in Version 5.22) ein\u00a0(ohne OS). \u201cemWin\u201d ist von SEGGER (www.segger.com) und ST hat f\u00fcr seine STM-Familie eine kostenlose vorkompilierte Library dazu ver\u00f6ffenlicht \u201cSTemWin\u201d Mit \u201cSTemWin\u201d kann eine Windows \u00e4hnliche GUI programmiert werden mit Buttons, Fenstern &hellip; <a href=\"https:\/\/mikrocontroller.bplaced.net\/wordpress\/?page_id=331\">Weiterlesen <span class=\"meta-nav\">&rarr;<\/span><\/a><\/p>\n","protected":false},"author":3,"featured_media":0,"parent":160,"menu_order":24,"comment_status":"open","ping_status":"closed","template":"","meta":{"footnotes":""},"categories":[129],"tags":[9,221,102],"class_list":["post-331","page","type-page","status-publish","hentry","category-stm32f429","tag-library","tag-stemwin","tag-stm32f429"],"_links":{"self":[{"href":"https:\/\/mikrocontroller.bplaced.net\/wordpress\/index.php?rest_route=\/wp\/v2\/pages\/331","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/mikrocontroller.bplaced.net\/wordpress\/index.php?rest_route=\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/mikrocontroller.bplaced.net\/wordpress\/index.php?rest_route=\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/mikrocontroller.bplaced.net\/wordpress\/index.php?rest_route=\/wp\/v2\/users\/3"}],"replies":[{"embeddable":true,"href":"https:\/\/mikrocontroller.bplaced.net\/wordpress\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=331"}],"version-history":[{"count":3,"href":"https:\/\/mikrocontroller.bplaced.net\/wordpress\/index.php?rest_route=\/wp\/v2\/pages\/331\/revisions"}],"predecessor-version":[{"id":1693,"href":"https:\/\/mikrocontroller.bplaced.net\/wordpress\/index.php?rest_route=\/wp\/v2\/pages\/331\/revisions\/1693"}],"up":[{"embeddable":true,"href":"https:\/\/mikrocontroller.bplaced.net\/wordpress\/index.php?rest_route=\/wp\/v2\/pages\/160"}],"wp:attachment":[{"href":"https:\/\/mikrocontroller.bplaced.net\/wordpress\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=331"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/mikrocontroller.bplaced.net\/wordpress\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=331"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/mikrocontroller.bplaced.net\/wordpress\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=331"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}