Easyelectronics.ru

Электроника для всех
Текущее время: 20 июн 2018, 20:04

Часовой пояс: UTC + 5 часов



    • JLCPCB - Платы прототипов всего за 2$ c бесплатной доставкой (при первом заказе)
    • 10 PCBs за $2 для 2 слоев, $15 для 4 слойной, $74 для 6 слойной платы.
    • Крупнейший китайский производитель прототипных плат. 290000+ клиентов & 8000+ заказов в день!
    • LCSC - Крупнейший китайский онлайн магазин радиодеталей.

Начать новую тему Ответить на тему  [ Сообщений: 1222 ]  На страницу Пред.  1 ... 45, 46, 47, 48, 49
Автор Сообщение
 Заголовок сообщения: Re: STemWin на STM32F4. Первый опыт. Вопросы.
СообщениеДобавлено: 01 май 2018, 10:57 
Старожил
Аватара пользователя

Зарегистрирован: 22 июл 2017, 11:48
Сообщения: 1825
Вот и оставайся при своем китайском мнении. А нормальные люди будут продолжать делать по-нормальному, как и положено.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: STemWin на STM32F4. Первый опыт. Вопросы.
СообщениеДобавлено: 01 май 2018, 11:18 
Старожил

Зарегистрирован: 23 авг 2014, 11:01
Сообщения: 536
BusMaster я вас полностью поддерживаю.
Но что делать с IAR8.xx с его ошибкой iar Warning[Lt009]: Inconsistent wchar_t size ?


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: STemWin на STM32F4. Первый опыт. Вопросы.
СообщениеДобавлено: 04 май 2018, 14:03 
Старожил

Зарегистрирован: 16 ноя 2012, 07:47
Сообщения: 2621
Решил переползти с STemWin532 на STemWin540, которой вроде как официально на сайте ST нет, зато есть в репозитории куба - STM32Cube_FW_F4_V1.21.0. Закинул новую либу STemWin540_CM4_OS_IAR.a , новые h-файлы и... и все цвета наоборот. Там где красный - там синий, ощущение что перепутан порядок BGR - RGB. Экран подключен по RGB565, никаких косяков нет, порядок байт четко определен в ДШ на LTDC, да и при ручном забивании буфера типа:
Код:
   for (i = 0; i< LCD_HS_SIZE*LCD_VS_SIZE/3; i++)
   {
      LTDC_Lay1_Ram[i] = 0x001F;         //Blue
   }
   for (; i< LCD_HS_SIZE*LCD_VS_SIZE*2/3; i++)
   {
      LTDC_Lay1_Ram[i] = 0x07E0;         //Green
   }
   for (; i< LCD_HS_SIZE*LCD_VS_SIZE; i++)
   {
      LTDC_Lay1_Ram[i] = 0xF800;         //Red
   }

На выходе вполне ожидаемая картинка:
Изображение

Полез в недра драйвера STemWin - LCDConf.c, который ранее я содрал из примера от самих ST. Драйвер неплохой, в нём используется DMA2D, указаны коллбеки на функции с DMA2D.

смотрим строчки:
Код:
#define COLOR_CONVERSION_0 GUICC_M565
#define DISPLAY_DRIVER_0   GUIDRV_LIN_16
GUI_DEVICE_CreateAndLink(DISPLAY_DRIVER_0, COLOR_CONVERSION_0, 0, 0);

Лезем в доку:
Изображение
Всё верно, порядок битов верный
Ради интереса меняем на GUICC_565
#define COLOR_CONVERSION_0 GUICC_565, в котором цвета идут наоборот, цвет начинает быть верным. Где косяк - хз, мало ли кто столкнется.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: STemWin на STM32F4. Первый опыт. Вопросы.
СообщениеДобавлено: 10 май 2018, 12:23 
Старожил

Зарегистрирован: 16 ноя 2012, 07:47
Сообщения: 2621
Встал вопрос по прозрачности
Имеется кнопка, поверх которой надо наложить нужный цвет, например прозрачно-розовый, который показывает что кнопка недоступна, например как тут:
Вложение:
graphicstock-fuel-supply-system-hud-interface-layout-big-set-of-statistical-infographic-and-web-ui-elements-futuristic-virtual-user-interface-abstract-business-background-with-graphs-charts-and-rating_BJxLliET6x_SB_PM_cr.jpg
graphicstock-fuel-supply-system-hud-interface-layout-big-set-of-statistical-infographic-and-web-ui-elements-futuristic-virtual-user-interface-abstract-business-background-with-graphs-charts-and-rating_BJxLliET6x_SB_PM_cr.jpg [ 30.09 Кб | Просмотров: 1502 ]

Создание кнопки стандартное, в составе массива GUI_WIDGET_CREATE_INFO:

Код:
{ BUTTON_CreateIndirect, "Button", ID_BUTTON_1, 17, 268, 228, 50, 0 , 0x0, 0 },


Кнопка в WM_INIT_DIALOG диалога иницииализируется так:
Код:
         hItem = WM_GetDialogItem(pMsg->hWin, ID_BUTTON_1);
         BUTTON_SetFont(hItem, &GUI_FontJura28);
         BUTTON_SetTextColor(hItem, BUTTON_CI_UNPRESSED, 0x00CAB480);
         BUTTON_SetTextColor(hItem, BUTTON_CI_PRESSED, 0x00CAB480);
         BUTTON_SetTextAlign(hItem, GUI_TA_RIGHT | GUI_TA_VCENTER);
         BUTTON_SetTextOffset(hItem, -20, 0);
         BUTTON_SetText(hItem, "Fan manual");

         GUI_RECT   Rect;
         WM_GetClientRectEx( WM_GetClientWindow(hItem), &Rect);
         hWin = WM_CreateWindowAsChild(Rect.x0,Rect.y0,Rect.x1,Rect.y1, hItem, WM_CF_SHOW | WM_CF_CONST_OUTLINE | WM_CF_HASTRANS, _cbColorFanMode, sizeof(pFanMode));
         pFanMode = &FanMode;
         WM_SetUserData(hWin, &pFanMode, sizeof(pFanMode));

Т.е. создаем дочернее окно, размером как сама кнопка, устанавливаем у окна при создании флаг прозрачности.
коллбэк дочернего окна:
Код:
static void _cbColorFanMode(WM_MESSAGE * pMsg)
{
   GUI_RECT   Rect;
   WM_HWIN      hButton;

   switch (pMsg->MsgId)
   {
      case WM_TOUCH:      // Route WM_TOUCH messages to the BUTTON widget below
      {
         hButton = WM_GetParent(pMsg->hWin);
         WM_SendMessage(hButton, pMsg);
         break;
      }
      case WM_PAINT:
      {
         WM_GetClientRectEx(pMsg->hWin, &Rect);

         GUI_SetColor(GUI_LIGHTRED | GUI_TRANSPARENT);
         GUI_FillRectEx(&Rect);

         break;
      }
      default:   WM_DefaultProc(pMsg);
   }
}

В итоге видим кнопку целиком залитую розовым цветом, никакой прозрачности нет:
Изображение
Если не создаем дочернее окно - то кнопку соответственно видно.
Изображение
Как это побороть?


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: STemWin на STM32F4. Первый опыт. Вопросы.
СообщениеДобавлено: 25 май 2018, 10:27 
Старожил

Зарегистрирован: 23 авг 2014, 11:01
Сообщения: 536
Привет. Тоже перешел на STEMWIN540. Перенес все библиотеки, запустил и увидал на экране черный квадрат.
Первично код был следующей.

Show


После того как убрал функции GUI_SetBkColor(GUI_WHITE); GUI_SetColor(GUI_BLACK); все заработал увидал текст Hello world! на черном экране.
Show


Возник у меня вопрос, как управлять цветом дисплея и цветом текста в STemWin540?


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: STemWin на STM32F4. Первый опыт. Вопросы.
СообщениеДобавлено: 25 май 2018, 13:47 
Старожил

Зарегистрирован: 16 ноя 2012, 07:47
Сообщения: 2621
Поидее также как и ранее. Проверьте что у вас цвета не инвертированы как у меня. Есть там какая-то трабла. Хотя у меня был нарушен порядок следования цветов в пикселе.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: STemWin на STM32F4. Первый опыт. Вопросы.
СообщениеДобавлено: 29 май 2018, 19:55 
Заглядывает иногда

Зарегистрирован: 20 июн 2012, 12:56
Сообщения: 61
Hold, выберите дефайн ARGB с соответствующей либой, в доке указано про это.

Вопрос ко всем участникам и юзерам этой либы, может скинемся всем миром и купим её в исходных кодах?
Я на Segger задавал вопрос, по поводу цены. Пакет Pro будет стоить в 2 раза дешевле, чем на сайте (вроде около 4k евро), если юзер уже использует лицензию. А лицензией является использование, например библиотеки STemWin на контроллерах STM.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: STemWin на STM32F4. Первый опыт. Вопросы.
СообщениеДобавлено: 30 май 2018, 05:26 
Старожил

Зарегистрирован: 23 авг 2014, 11:01
Сообщения: 536
Я не много попроще решил проблему.
Нашел в примерах CUBE GUIConf.h (демо меню) заменил ее и все заработало. Пробовал дефайн ARGB, не получилось.

Идея хорошая но только если наберется достаточно людей.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: STemWin на STM32F4. Первый опыт. Вопросы.
СообщениеДобавлено: 30 май 2018, 09:20 
Старожил

Зарегистрирован: 16 ноя 2012, 07:47
Сообщения: 2621
Если смотреть объективно - emWin неплохой инструмент, однако не идеальный. Мне не хватает очень многих плюшек. По сути они предоставляют лишь некое API, по работе с окнами, система сообщений между ними, дочерние/родительские штуки и виджеты, котоыре по факту лишь как кастомная сборка этих окон и взаимодействий между ними. Надо написать какой-либо хитрый виджет, чутка отличающийся от стандартных, и по сути рисуешь всё заново. Плюс практически полное отсутствие доступного симулятора, чтобы в винде накидать весь GUI, как он будет выглядететь, и затем лишь загрузить его.
Смотрю в сторону TouchGFX. Выглядит интереснее, также есть порты под STM32.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: STemWin на STM32F4. Первый опыт. Вопросы.
СообщениеДобавлено: 30 май 2018, 12:49 
Заглядывает иногда

Зарегистрирован: 20 июн 2012, 12:56
Сообщения: 61
да, много чего нет, но это можно дописать. Для меня главное, что нельзя полноценно использовать драйвер DMA2D, т.к. завершения передачи нужно ждать в цикле while(), вместо того что бы в фоне всё рисовалось по прерываниям, пока основная программа крутиться.
Также не все штатные функции можно изменить для ускорения. Отладка занимает дольше время, особенно если накосячил, где-то с выделением памяти. Считаю, что исходники всегда будут лучше.
Что для меня особо полезное в emWin, так это наличие оконного менеджера, чего нет вроде как в TouchGFX. Да и многое уже написано на emWin, не один год работы.
Думаю если собрать 15-20 человек, то вполне можно уже купить. Возможно, в качестве посредника попросить главного админа сайта или кто какой другой вариант предложит.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: STemWin на STM32F4. Первый опыт. Вопросы.
СообщениеДобавлено: 30 май 2018, 15:12 
Старожил

Зарегистрирован: 16 ноя 2012, 07:47
Сообщения: 2621
Насчет DMA2D - а оно надо полноценно? У меня GUI висит в почти самой низкоприоритетной задаче во FreeRTOS, и то, что там используются while в принципе пофиг - те, кому нужно(читай задача с более высоким приоритетом) всегда перехватят управление и сделают своё дело.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: STemWin на STM32F4. Первый опыт. Вопросы.
СообщениеДобавлено: 30 май 2018, 16:06 
Старожил

Зарегистрирован: 23 авг 2014, 11:01
Сообщения: 536
Hold скажите пожалуйста с чего начать изучение TouchGFX? Тоже хочу изучить но с чего начать не знаю.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: STemWin на STM32F4. Первый опыт. Вопросы.
СообщениеДобавлено: 30 май 2018, 16:07 
Старожил

Зарегистрирован: 16 ноя 2012, 07:47
Сообщения: 2621
Сам еще не брался за него. Одна беда - он уже платный, в коммерческие проекты не воткнешь просто так.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: STemWin на STM32F4. Первый опыт. Вопросы.
СообщениеДобавлено: 30 май 2018, 16:08 
Заглядывает иногда

Зарегистрирован: 20 июн 2012, 12:56
Сообщения: 61
мне нужно. также есть и другой функционал для моей оптимизации.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: STemWin на STM32F4. Первый опыт. Вопросы.
СообщениеДобавлено: 30 май 2018, 17:43 
Старожил
Аватара пользователя

Зарегистрирован: 22 июл 2017, 11:48
Сообщения: 1825
Hold писал(а):
Насчет DMA2D - а оно надо полноценно? .

На этот счет я люблю приводить в пример демку, зашитую в плату F476-DISCO. Можете на ютубе найти. Там сделана демо-игрушка и показывается она в двух режимах - в программном просчете и с использованием заливок DMA2D. Разницу в FPS ощутите сразу - раза в 2.
С помощью DMA2D очень просто декодировать битмапы и встраивать их в слой, используя преобразование цветовых форматов пикселя. Например, битмапа может содержать таблицу преобразования цветов (CLUT), а сам цвет представляется в индексах - форматы AL88, L8, AL44. Это сокращает размеры битмапы. Так вот, попробуйте программно преобразовать индексные цвета по CLUT - сколько времени займет? А вот DMA2D сделает это "на лету".
Коневно, возможности DMA2D невелики и ограничиваются только прямоугольными областями. Но уже только это дает выигрыш, достойный того, тобы встроить в код использование DMA2D.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: STemWin на STM32F4. Первый опыт. Вопросы.
СообщениеДобавлено: 31 май 2018, 09:31 
Старожил

Зарегистрирован: 16 ноя 2012, 07:47
Сообщения: 2621
2BusMaster, там вопрос в другом - Raash хочет, чтобы функции, которые стартуют DMA2D не тупили потом в while, ожидая когда DMA2D отработает, а сразу передавали управление еще куда-то, а по прерыванию от DMA2D уже продолжали отрисовку.
Сейчас эти функции выглядят так:
Код:

static void DMA_MixColorsBulk(LCD_COLOR * pColorFG, LCD_COLOR * pColorBG, LCD_COLOR * pColorDst, U8 Intens, uint32_t NumItems)
{
  /* Set up mode */
  DMA2D->CR      = 0x00020000UL | (1 << 9);         /* Control Register (Memory to memory with blending of FG and BG and TCIE) */

  /* Set up pointers */
  DMA2D->FGMAR   = (uint32_t)pColorFG;                   /* Foreground Memory Address Register */
  DMA2D->BGMAR   = (uint32_t)pColorBG;                   /* Background Memory Address Register */
  DMA2D->OMAR    = (uint32_t)pColorDst;                  /* Output Memory Address Register (Destination address) */

  /* Set up pixel format */
  DMA2D->FGPFCCR = LTDC_Pixelformat_ARGB8888
                 | (1UL << 16)
                 | ((uint32_t)Intens << 24);
  DMA2D->BGPFCCR = LTDC_Pixelformat_ARGB8888
                 | (0UL << 16)
                 | ((uint32_t)(255 - Intens) << 24);
  DMA2D->OPFCCR  = LTDC_Pixelformat_ARGB8888;

  /* Set up size */
  DMA2D->NLR     = (uint32_t)(NumItems << 16) | 1;              /* Number of Line Register (Size configuration of area to be transfered) */

  /* Execute operation */
  DMA2D->CR     |= DMA2D_CR_START;

  while (DMA2D->CR & DMA2D_CR_START)
  {
  }
}

И вот этот while в конце, выглядит конечно не очень хорошо. Но работает. Я думал, как бы это заоптимизировать, но потом пришел к мысли, что оверхед по времени на переключение контекста возможно превысит всю пользу от этого замысла. И теперь у меня эти тупые while просто в низкоприоритетной задачке FreeRTOS.
P.S. Но даже с этими while быстродействие с DMA2D куда выше, чем без DMA. Демку эту тоже смотрел)


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: STemWin на STM32F4. Первый опыт. Вопросы.
СообщениеДобавлено: 31 май 2018, 09:41 
Старожил
Аватара пользователя

Зарегистрирован: 22 июл 2017, 11:48
Сообщения: 1825
Аа, вон чо.. Ну так наверняка там смонтирована RTOS. И если так, то вместо while() просто принудительно выйдите из этой задачи. Для FreeRTOS это будет TaskYELD().


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: STemWin на STM32F4. Первый опыт. Вопросы.
СообщениеДобавлено: 31 май 2018, 10:04 
Старожил

Зарегистрирован: 16 ноя 2012, 07:47
Сообщения: 2621
Да, вместо while можно воткнуть ожидание семафора, который будет отдаваться в прерывании DMA2D, однако сколько времени мы потратим ожидая, пока низкоприоритетная задача получит этот семафор? Задирать приоритет этой задачи перед стартом DMA2D, и в прерывании принудительно переключать контекст на самую высокоприоритетную задачу? Тоже можно. OS-версия есть у STemWin, однако этот код - это платформозависимый драйвер, в каких недрах он там вызывается внутри - загадка. У меня не стояло задачи прям глубокой оптимизации, судя по отладке задача с GUI кушает не более 5-10% от общей загрузки проца, посему забил.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: STemWin на STM32F4. Первый опыт. Вопросы.
СообщениеДобавлено: 31 май 2018, 17:45 
Заглядывает иногда

Зарегистрирован: 20 июн 2012, 12:56
Сообщения: 61
Я не использую RTOS. Но для GUI_Exec пришлось сделать псевдо задачу. Всегда всё на кольцевых буферах и DMA завязываю. И тут также можно былобы если не закрытось библиотеки. Когда было разрешение 320x240 задержки перерисовки были не так велики на при 800x480 задержки задержки меня перестали устраивать.
Также некоторые виджеты можно было бы оптимизировать используя функционал MemDev, а не каждый раз их обновлять. Короче говоря хочется исходников.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: STemWin на STM32F4. Первый опыт. Вопросы.
СообщениеДобавлено: 31 май 2018, 23:14 
Старожил
Аватара пользователя

Зарегистрирован: 23 янв 2013, 12:33
Сообщения: 1698
Откуда: Донецк, ДНР
Raash писал(а):
Короче говоря хочется исходников.

Полтора кило-евро вроде стоят они :) .


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: STemWin на STM32F4. Первый опыт. Вопросы.
СообщениеДобавлено: 31 май 2018, 23:37 
Заглядывает иногда

Зарегистрирован: 20 июн 2012, 12:56
Сообщения: 61
Если бы так, то меньше людей бы приходилось искать. А так я писал выше, что с учётом скидки 4-4.5 кевро


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: STemWin на STM32F4. Первый опыт. Вопросы.
СообщениеДобавлено: 03 июн 2018, 23:49 
Заглядывает иногда
Аватара пользователя

Зарегистрирован: 24 июл 2016, 00:07
Сообщения: 101
Hold писал(а):
Плюс практически полное отсутствие доступного симулятора, чтобы в винде накидать весь GUI, как он будет выглядететь, и затем лишь загрузить его.

Эм, там же есть симулятор для винды. Я так в Visual Studio разрабатывал GUI для диплома. Потом без проблем перенёс на контроллер.


Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 1222 ]  На страницу Пред.  1 ... 45, 46, 47, 48, 49

Часовой пояс: UTC + 5 часов


Кто сейчас на конференции

Сейчас этот форум просматривают: Eddy_Em, forker


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  

Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
Русская поддержка phpBB