zheka 1 31 июля, 2012 Опубликовано 31 июля, 2012 · Жалоба stm32stm32 пароль Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
loreal1970 0 31 июля, 2012 Опубликовано 31 июля, 2012 · Жалоба Сенкс! догадался, но поздно. Пора на море. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
kan35 7 2 августа, 2012 Опубликовано 2 августа, 2012 (изменено) · Жалоба kan35, все лучше и лучше! В проекте, что вы выложили уже всего 30 ошибок. И все ищет core_cm3.h Я только что проверил - полная перекомпиляция: Total number of errors: 0 Total number of warnings: 48 IAR 6.30 Изменено 2 августа, 2012 пользователем kan35 Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
zheka 1 2 августа, 2012 Опубликовано 2 августа, 2012 · Жалоба Скомпилировалось. Я просто увлекся и удалил файл там где не надо. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
zheka 1 4 августа, 2012 Опубликовано 4 августа, 2012 · Жалоба Возвращаясь к SPI - вот даташит на дисплей - в упор не вижу, где в нем выведены линии SPI. Дисплей китайский, 12 баксов стоит, может там просто не разведен SPI? http://electronix.ru/forum/index.php?showt...30&start=30 2.8TP.zip Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Karloson 0 23 августа, 2012 Опубликовано 23 августа, 2012 · Жалоба Последние два года работал выдирая нужный исходный код из ГУИ. Требования все растут и растут... Думаю полностью перейти на emWin. С ней кто нибуть работал? Много рисурсов отжирает? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
PanovAU 0 10 сентября, 2012 Опубликовано 10 сентября, 2012 · Жалоба emWin смог прикрутить от NXP. Они ее бесплатно распространяют, правда уже в откомпилированном виде. Но STM это ведь тот же Cortex. Пришлось только дрова ему свои подсунуть (GUIDRV_CompactColor_16.C). Исходники дров переделывал из примеров от PSoC5/PSoC3. Я делал STM32F4 с внешним ОЗУ и соломоновским контроллером SSD1963. Динамика на 640х480 иногда подтормаживает, сказывается скорость обмена по мультиплексированной параллельной шине. Недавно Томаш (представитель STM, который с семинарами ездит) сболтнул, что STишники тоже с Segger договариваются. И вероятно emWIN для тех кто работает на этом процессоре станет доступна легально и бесплатно. Я думаю, они это приурочат к выходу проца с TFT контроллером на борту и DDR (обещали такой). Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
jt777 0 11 сентября, 2012 Опубликовано 11 сентября, 2012 · Жалоба Всем доброго времени суток. Я использую графику от Seggera (emWin). Что касается Micrium-а (ucGUI) это тот же самый сегер. Что касается проекта emWin под Visual Studio, то этот проект сделан для отладки, причем довольно хорошей отладки( Пишу код в вижуале, смотрю что получается на экране отладчика потом этот же самый код уже заливаю в микроконтроллер). Довольно удобно при начале работы с либой. Если использовать графику от сеггера (микриума) то низкоуровневыце функции нужно писать самому(я брал примеры и правил под свою плату). Для сеггера (микриума) есть драйвера для работы с дисплеем по SPI (см. доку) но низкоуровневые функции все равно нужно писать самому. Кстати говоря где то я читал что Keil начал включать либу сеггера в свою MDK. Что касается опыта работы с emWin в принципе либа неплохая, если не предъявлять к графике серьезных требований. Немного не доработан модуль Memory Device, из-за чего, при большом нагромождении виджетов видно как отрисовываеться окно и виджеты на нем. Также есть нарекания к дизайну самих виджетов, в основном писал свои Callback функции для прорисовки( требовалось "навести красоту")))). Писать Callback функции особой сложности не составляет, но в начале повозился пока разобрался что и как))) Пользуюсь довольно долго (года 2 так точно). Проц LPC2478. Версия enWin 3.90 - старая, но свежее не нашел. Пробовал скомпиленую либу которую парят NXP под свои процы, не понравилась- сильные тормоза, но особо копаться времени не было - возможно это можно вылечить, да и под кортексы возможно тормозов не будет. Если необходимы исходники enWin 3.90 могу выложить. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
MEXAHuK 0 21 сентября, 2012 Опубликовано 21 сентября, 2012 · Жалоба Добрый день! Тоже приобрел плату Mini-STM32-V3.0 c STM32F103RB и дисплеем 2.8" с контроллером ILI9320. Такая же проблема, как и у zheka: 16-битная шина дисплейного контроллера раскидана пополам на два порта. Если смотреть соответствия ног процессора битам шины по обозначениям на платах получается такая картина: Бит шины->Бит порта 1 DB00->PC00 2 DB01->PC01 3 DB02->PC02 4 DB03->PC03 5 DB04->PC04 6 DB05->PC05 7 DB06->PC06 8 DB07->PC07 9 DB10->PB08 10 DB11->PB09 11 DB12->PB10 12 DB13->PB11 13 DB14->PB12 14 DB15->PB13 15 DB16->PB14 16 DB17->PB15 Таким образом, видно, что у контроллера дисплея задействованы биты DB0-DB7 и DB10-DB17. Хотя, согласно даташиту на ILI9320, при 16-битном режиме передачи используются биты DB1-DB7 и DB10-DB17. Я хотел изготовить переходник, чтобы повесить шину контроллера дисплея на один порт процессора, но вот теперь не знаю, как быть с несоответствием битов. Есть у кого нибудь соображения по этому поводу? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
MEXAHuK 0 21 сентября, 2012 Опубликовано 21 сентября, 2012 · Жалоба Извиняюсь, опечатался в предыдущем сообщении. Надо читать как: "Хотя, согласно даташиту на ILI9320, при 16-битном режиме передачи используются биты DB1-DB8 и DB10-DB17." Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
khach 45 13 октября, 2012 Опубликовано 13 октября, 2012 · Жалоба Подскажите пожалуйста, мне в предкомпиленном emWIN нехватает функциональности видгета graph. Типа нужны дополнительные курсоры и другие плюшки. Если с доп курсорами я надеюсь справится с помощью GRAPH_SetUserDraw- дорисовывать курсоры ручками, то для функционала типа логарифмической сетки или полярных координат требуется полностью переписать видгет. Смогу ли я скомпилить свой собственный видгет, например взяв за основу исходники того же Grap из ucGUI 3.98? Есть ли примеры от seggera реализации таких самописных видгетов? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
бомж 0 18 октября, 2012 Опубликовано 18 октября, 2012 · Жалоба Если необходимы исходники enWin 3.90 могу выложить. Выложите, пожалуйста, очень интересно. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
jt777 0 22 октября, 2012 Опубликовано 22 октября, 2012 (изменено) · Жалоба Выкладываю две версии 3.9 и 3.98. В версии 3.98 не хватает некоторых модулей- 3.9 вроде бы полная. Если мне были необходимы виджеты или функции которых не хватет в версии 3.9 находил нужные файлы с функциями в версии 3.98 и добавлял из в проект. Что касается написания собственных виджетов то получалось написать самому взяв за основу стандартные. Но писал для самых простых виджетов: кнопой и скролбаров. Получалось довольно симпатично. С кнопками было довольно просто со скролбаром пришлось повозиться)). ucGUI_3.9.zip uC_GUI_V3_98.zip Изменено 22 октября, 2012 пользователем jt777 Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
khach 45 22 октября, 2012 Опубликовано 22 октября, 2012 · Жалоба Спасибо, наконец все лежит в одном месте. А во поводу самописных виджетов вопрос- можно ли виджет, написанный "по мотивам" исходников 3.98 заставить работать с предкомпиленной версией emWIN из Кейла (4.16 кажется сейчас)? заголовочные h-файлы для LIBов есть. Можете ли поделится примером простейшего самописного виджета, чтобы это проверить? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
jt777 0 24 октября, 2012 Опубликовано 24 октября, 2012 · Жалоба >можно ли виджет, написанный "по мотивам" исходников 3.98 заставить работать с предкомпиленной версией emWIN из Кейла (4.16 кажется сейчас) Не могу ответить на этот вопрос т.к не пробовал. Что касается самописного виджета то я довольствовался написанием собственной функции для отрисовки виджета. Код привожу ниже. /********************************************************************* * * CallBackBut.c * */ #include "GUI.h" #include "WM.h" #include "FRAMEWIN.h" #include "BUTTON.h" #include "BUTTON_Private.h" #include "GUI_Protected.h" #include "mystyle.h" /********************************************************************* * * Defines * */ #define Style_Dark_Blue 1 #define Style_Dark_Blue_1 1+1 #define Style_Light_Blue 3 #define Style_Light_Blue_1 3+1 #define Style_Silver 5 #define Style_Silver_1 5+1 #define Style_Yellow 7 #define Style_Yellow_1 7+1 #define Style_Red 9 #define Style_Red_1 9+1 #define Style_Green 11 #define Style_Green_1 11+1 #define BUTTON_FLASHING_ENABLE WIDGET_STATE_USER1 #define BUTTON_FLASHING_UP WIDGET_STATE_USER2 /********************************************************************* * * GetColorPalette * */ static t_2Colors GetColorPalette(int _Style) { t_2Colors RetPalette; switch (_Style) { case Style_Dark_Blue: case Style_Dark_Blue_1: RetPalette.Col_1=0xFFD192; RetPalette.Col_2=0xFFB146; break; case Style_Light_Blue: case Style_Light_Blue_1: RetPalette.Col_1=0xFFF4E5; RetPalette.Col_2=0xFFE8C9; break; case Style_Silver: case Style_Silver_1: RetPalette.Col_1=0xECECEC; RetPalette.Col_2=0xCECECE; break; case Style_Yellow: RetPalette.Col_1=0x86CDE8; RetPalette.Col_2=0x22C0F1; break; case Style_Yellow_1: RetPalette.Col_2=0x86CDE8; RetPalette.Col_1=0x22C0F1; break; case Style_Red: RetPalette.Col_1=0x0000ff; RetPalette.Col_2=0x0000D9; break; case Style_Red_1: RetPalette.Col_2=0x0000ff; RetPalette.Col_1=0x0000D9; break; case Style_Green: RetPalette.Col_1=0x3Dff3D; RetPalette.Col_2=0x00D600; break; case Style_Green_1: RetPalette.Col_2=0x3Dff3D; RetPalette.Col_1=0x00D600; default: // серый RetPalette.Col_1=0xEAEAEA; RetPalette.Col_1=0xEAEAEA; break; } return RetPalette; } /********************************************************************* * * _WIDGET_EFFECT_3D_DrawDownRec * */ static void _WIDGET_EFFECT_3D_DrawDownRect(const GUI_RECT* pRect) { GUI_RECT r; r = *pRect; LCD_SetColor(0x0); /* TBD: Use halftone */ GUI_DrawHLine(r.y0, r.x0, r.x1); GUI_DrawVLine(r.x0, r.y0 + 1, r.y1); GUI_DrawHLine(r.y1, r.x0 + 1, r.x1); GUI_DrawVLine(r.x1, r.y0 + 1, r.y1); } /********************************************************************* * * _WIDGET_EFFECT_3D_DrawDown * */ static void _WIDGET_EFFECT_3D_DrawDown(void) { GUI_RECT r; WM_GetClientRect(&r); _WIDGET_EFFECT_3D_DrawDownRect(&r); } /********************************************************************* * * _OnPaint_1 * */ #ifndef BUTTON_BKCOLOR0_DEFAULT #define BUTTON_BKCOLOR0_DEFAULT 0xAAAAAA #endif static void _OnPaint(BUTTON_Handle hObj, int _Style,int Effect) { int Index; const char* s = 0; GUI_RECT Rect,rInside; GUI_RECT Rect1; GUI_RECT Rect2; t_2Colors Palette; int height; BUTTON_Obj * pObj; GUI_MEMDEV_Handle hMem; pObj = BUTTON_H2P(hObj); Index = (WIDGET_GetState(hObj) & BUTTON_STATE_PRESSED) ? 1 : 0; WM_GetClientRect(&Rect); if (pObj->hpText) { s = (const char*) GUI_ALLOC_h2p(pObj->hpText); } Palette=GetColorPalette(_Style); rInside=Rect; Rect1=Rect; height=Rect1.y1-Rect1.y0; Rect1.y1=Rect1.y1-height/2; Rect2=Rect; Rect2.y0=Rect2.y0+height/2; hMem=0; if(hMem) { GUI_MEMDEV_Select(hMem); } WM_SetUserClipRect(&rInside); if(WM__IsEnabled(hObj)) // Если кнопка включена { if(Index==0)// кнопка отжата { if ((pObj->Widget.State & BUTTON_FLASHING_ENABLE)) { if ((pObj->Widget.State & BUTTON_FLASHING_UP)) { Palette=GetColorPalette(_Style+1); } else { Palette=GetColorPalette(_Style); } } GUI_SetColor(Palette.Col_1); GUI_FillRect(Rect1.x0,Rect1.y0,Rect1.x1,Rect1.y1); GUI_SetColor(Palette.Col_2); GUI_FillRect(Rect2.x0,Rect2.y0,Rect2.x1,Rect2.y1); } else { GUI_SetColor(Palette.Col_2); GUI_FillRect(Rect1.x0,Rect1.y0,Rect1.x1,Rect1.y1); GUI_SetColor(Palette.Col_1); GUI_FillRect(Rect2.x0,Rect2.y0,Rect2.x1,Rect2.y1); } if(_getbitL(Effect,__BORDER_DISABLE)==1) { if(Index==0) { WIDGET_EFFECT_3D_DrawUp(); } else { _WIDGET_EFFECT_3D_DrawDown(); } } } else { GUI_SetColor(BUTTON_BKCOLOR0_DEFAULT); GUI_FillRect(Rect.x0,Rect.y0,Rect.x1,Rect.y1); WIDGET_EFFECT_3D_DrawUp(); } if(_getbitH(Effect,__IS_FOCUS)==1) { GUI_RECT Focus; Focus.x0=Rect2.x0+__LEFT_OFFSET; Focus.y0=Rect2.y1-__BOTTOM_OFFSET-__SIZE_FOCUS_LINE ; Focus.x1=Rect2.x1-__RIGHT_OFFSET; Focus.y1=Rect2.y1-__BOTTOM_OFFSET; if((Focus.x0>0)&&(Focus.y0>0)&&(Focus.x1>0)&&(Focus.y1>0) && (Focus.x0<Focus.x1)&&(Focus.y0<Focus.y1)) { GUI_SetColor(GUI_YELLOW); GUI_FillRect(Focus.x0,Focus.y0,Focus.x1,Focus.y1); } } GUI_SetColor(BUTTON_GetTextColor(hObj, Index)); GUI_SetFont(BUTTON_GetFont(hObj)); GUI_SetTextMode(GUI_TM_TRANS); GUI_DispStringInRect(s, &rInside, pObj->Props.Align); if(hMem) { GUI_MEMDEV_CopyToLCDAt(hMem, pObj->Widget.Win.Rect.x0,pObj->Widget.Win.Rect.y0); GUI_MEMDEV_Delete(hMem); } WM_SetUserClipRect(0); } /********************************************************************* * * BUTTON_Callback_Dark_Blue * */ void BUTTON_Callback_Dark_Blue(WM_MESSAGE *pMsg) { switch (pMsg->MsgId) { case WM_PAINT: _OnPaint(pMsg->hWin,Style_Dark_Blue,0); //<!!!!!!!!!!- самописная функция для отрисовки виджета break; default: BUTTON_Callback(pMsg); break; } } далее в калбэк функции диалогового окна где используеться эта кнопка я подставляю свою калбэк функцию кнопки static const GUI_WIDGET_CREATE_INFO _aDialogMainMenu[] = { /* Function Text Id Px Py Dx Dy */ { WINDOW_CreateIndirect, 0, 0, 0, 229, 480, 43,WM_CF_MEMDEV}, { BUTTON_CreateIndirect, 0, GUI_ID_USER + 0, 2, 0, 83, 38}, { BUTTON_CreateIndirect, 0, GUI_ID_USER + 1, 87, 0, 83, 38}, { BUTTON_CreateIndirect, 0, GUI_ID_USER + 2, 172, 0, 83, 38}, { BUTTON_CreateIndirect, 0, GUI_ID_USER + 3, 257, 0, 83, 38}, { BUTTON_CreateIndirect, 0, GUI_ID_USER + 4, 342, 0, 83, 38}, { BUTTON_CreateIndirect, 0, GUI_ID_USER + 5, 427, 0, 50, 38} }; static void _cbDialogMainMenu(WM_MESSAGE * pMsg) { WM_HWIN hDlg, hItem; hDlg = pMsg->hWin; switch (pMsg->MsgId) { case WM_INIT_DIALOG: hItem = WM_GetDialogItem(hDlg, GUI_ID_USER + 0); // получаю хэндл кнопки WM_SetCallback(hItem, BUTTON_Callback_Dark_Blue); // устанавливаю свою калбэк функцию break; case WM_PAINT: break; case WM_NOTIFY_PARENT: Id = WM_GetId(pMsg->hWinSrc); /* Id of widget */ NCode = pMsg->Data.v; /* Notification code */ switch (NCode) { case WM_NOTIFICATION_CLICKED: break; case WM_NOTIFICATION_RELEASED: break; } break; default: WM_DefaultProc(pMsg); } } } Эта функция вместо стандартной кнопки отрисовывает кнопку разделенную по горизонтали пополам разными оттенками заданного цвета(в данном случае синим). При нажатии на кнопку оттенки меняются местами. Ну примерно так))). Для более полной информации покопайтесь на сайте сегера. Там, если я не ошибаюсь, были примеры написания собственных калбэк функций))) Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться