|
3 / 3 / 0
Регистрация: 06.12.2016
Сообщений: 1,605
|
||||||
STemWin на STM32F4. Первый опыт. Вопросы.21.12.2013, 23:06. Показов 835663. Ответов 1103
Метки нет (Все метки)
Вот, задумавшись о GUI, решил попробовать эту либу.
Моё железо - STM32F4 (Dyscovery) и дисплей с Ebay разрешением 800х480 на контроллере SSD1963 с 16-битным интерфейсом. Эта аппаратная связка давно обкатана и работает. Под это дело я писал свои драйверы и библиотеки. Работал с дисплеем через DMA и без него. Всё прекрасно. Т.к. никаких заводских плат со встроенными дисплеями у меня нет, мне пришлось править и переписывать под себя конфигурационные модули STemWin. Для старта взял стандартный пример из ST-шного архива. Дальше стартовой заставки я не продвинулся, т.к. там нужен тач, а я пока не разобрался, как туда подключить мой драйвер тача. Но и тут проблемы. В итоге получилось 2 варианта - на драйвере FlexColor (штатный драйвер STemWin, поддерживающий SSD1963) и мой собственный. Оба прилагаю. В целом оба варианта запустились в общем-то с пол-оборота, но есть ряд непоняток: 1. На драйвере FlexColor некоторые строчки текста на экране выглядят как некий мусор. Я понимаю, что я мог где-то ошибиться, но тогда бы не работало ни-че-го, т.к. пользовательский драйвер для Flex-Color представляет собой 4 функции - запись команды/данных и запись/чтения блока. По сути это функции работы с FSMC. Плюс функция низкоуровневой инициализации SSD1963. 2. На моём драйвере все строчки рисуются нормально, но нету стрелочки курсора мыши, который есть на FlexColor. Подозреваю, что это из-за отсутствия функции вывода картинки на дисплей. В драйвере дисплея она у меня есть, но я не понял, куда её запихать в ST-шную прослойку. Да и тормозит заметно в сравнении с FlexColor. Если кто разбирался, подскажите пожалуйста. Если надо, я выложу полные проекты на кокосе. Блок CRC включён (просто знаю, что на этом многие ловятся, но это не мой случай). Ещё один вопрос про память для GUI. Я видел конструкцию
Внешней памяти у меня нет, в силу урезанности FSMC на 100-ногих процах. Или что, оно работает только на 429-Dyscovery, где стоит 8-метровый чип SDROM? Охренеть... Дал ей пока 64К, но рекомендаций по этим объёмам я не нашёл. Сколько ей надо? Спасибо. [23.93 Кб] [18.45 Кб]
1
|
||||||
| 21.12.2013, 23:06 | |
|
Ответы с готовыми решениями:
1103
Измерение уровней звука. Вопросы. Первый опыт. Сравнительно мистический баг в Coocox: stemwin и stm32f4 Вопросы по STM32F4 |
|
0 / 0 / 0
Регистрация: 16.09.2016
Сообщений: 33
|
||||||
| 05.03.2017, 22:30 | ||||||
|
пока сделал так, в принципе тоже нормально видно, что выбрано. Если есть еще способы, то пишите.
0
|
||||||
|
3 / 3 / 0
Регистрация: 06.12.2016
Сообщений: 1,605
|
||
| 06.03.2017, 11:45 | ||
#define BUTTON_Show(_bhomdle) WM_ShowWymdow (_bhomdle) Ну и любые другие по аналогии.
0
|
||
|
odrvyho
|
||
| 06.03.2017, 18:14 | ||
Получается, что SetSel с подменю не работает чтоль? |
||
|
0 / 0 / 0
Регистрация: 16.09.2016
Сообщений: 33
|
||
| 06.03.2017, 20:31 | ||
0
|
||
|
odrvyho
|
|
| 06.03.2017, 22:03 | |
|
Товарищи! Кто-нибудь сталкивался с зависающей через несколько минут программой?
Так понимаю, что всё дело в приоритетах прерываний y2s, таймера gui и еще чего-то. У кого рабочее GUI - можете подсказать, какие приоритеты стоят у Вас для прерываний? |
|
|
0 / 0 / 0
Регистрация: 16.09.2016
Сообщений: 33
|
||
| 06.03.2017, 23:31 | ||
0
|
||
|
0 / 0 / 0
Регистрация: 16.09.2016
Сообщений: 33
|
|
| 07.03.2017, 19:13 | |
|
Добрый день, а с VCP_DataTx ты разобрался, как заставить его отправлять нормальные объемы и как понять статус отправки чтобы не перезаписать данные в буфере? странная библиотека у ST почему она глючит с нову.
0
|
|
|
3 / 3 / 0
Регистрация: 06.12.2016
Сообщений: 1,605
|
|
| 07.03.2017, 21:46 | |
|
tokbymko, если Вы мне, то я не понял вопроса. USB девайсами я вообще почти не занимался.
0
|
|
|
0 / 0 / 0
Регистрация: 19.08.2014
Сообщений: 430
|
|
| 08.03.2017, 10:55 | |
|
Скажите, а можно создать таймер единый для всех окон?
0
|
|
|
3 / 3 / 0
Регистрация: 06.12.2016
Сообщений: 1,605
|
||
| 08.03.2017, 11:31 | ||
При создании таймера надо задавать хэндл родителя, которому он будет слать сообщение WM_TIMER. Нет родителя - нет сообщения (таймер бесполезен). Можно конечно привязать таймер к WM_HBKWIN, назначить ему свою диалоговую функцию через WM_SetCallback ( WM_HBKWIN, _cbBk ); и там уже разруливать что-то. Но это, по-моему жуткий костыль. А зачем такое понадобилось?
0
|
||
|
0 / 0 / 0
Регистрация: 19.08.2014
Сообщений: 430
|
|
| 08.03.2017, 13:36 | |
|
Девайс получает команды по usb и с меню тачскрина. При получение команды с usb должен (не важно на какой странице находиться) перейти на соответствующее окно. Получается очень не удобно в каждом окно заводить таймер.
0
|
|
|
3 / 3 / 0
Регистрация: 06.12.2016
Сообщений: 1,605
|
|
| 08.03.2017, 14:26 | |
|
Можете по приходу Ваших событий рассылать во все открытые окна сообщения через WM_SendMessage. Если окну интересно каждое конкретное сообщение - оно его обработает в соответствующей ветке диалоговой функции, если нет - пропустит мимо ушей. От этого ничего не сломается.
Это вообще стандартный приём. В той же винде окна никогда не опрашивают мышу/клаву/..., они просто ловят от винды соответствующие сообщения и чего-то там делают по ним. Я у себя тоже реализовал похожую схему без всяких таймеров. Таймер нужен для опроса чего-то изначально пассивного. Всё остальное можно реализовать без таймера. Правда, у меня есть подозрения, что при использовании WM_SendMessage начинается большой расход стека, но детально я не исследовал, могу и ошибаться.
0
|
|
|
0 / 0 / 0
Регистрация: 16.09.2016
Сообщений: 33
|
|||||||
| 08.03.2017, 20:11 | |||||||
Вот пример, я передаю 2048 байт без проблем но дальше бред, что только не вытаскивал из нее , какие только переменные не проверял толку нет. Вот задержку вставляю все передается, но это ужас же, должна быть потоковая сплошная передача. И еще кроме этого, если во время передачи выдернуть юсб МК виснет на глухо, да и если делать проверку на соединение а терминал никакой не запускать тоже делов нет, виснет. я пробовал эту библиотеку и раньше на 103 Мк и тоже плевался, и заменил другой но с RTOS, сейчас не хочу RTOS мне он не нужен ресурсы переводить, но блин что за либо с ЮСБ и нет ничего нормального кроме "хеллоу ворд" нерабочих при настоящей эксплуатации.
0
|
|||||||
|
0 / 0 / 0
Регистрация: 19.08.2014
Сообщений: 430
|
|
| 09.03.2017, 08:07 | |
|
У void WM_SendMessage(WM_HWIN hWin, WM_MESSAGE * pMsg) есть параметры hWin и * pMsg от куда их взять?
0
|
|
|
3 / 3 / 0
Регистрация: 06.12.2016
Сообщений: 1,605
|
|||||||
| 09.03.2017, 12:05 | |||||||
Если параметры передавать не нужно, можете использовать WM_SendMessageNoPara(). У неё второй параметр - просто код сообщения - то, что здесь кладётся в msg.MsgId. При сами функции и про ограничения на код сообщеня читайте в доке. tokbymko, я с VCP на F4Dyscovery игрался в начале 2013 года. Куба в те времена вообще не было, да и старые некубовые либы с тех пор обновлялись раза 3. Потом я этим не занимался. Недавно делал Kimeric HID divice на F103, сам девайс заработал, но та поделка не пошла, забросил я её :D Про VCP, я только туманно помню, что не мог отослать больше 64 (кажется) байт. Но в какую сторону, я уже забыл :D. Меньше 64 проходили без каких-либо проблем.
0
|
|||||||
|
0 / 0 / 0
Регистрация: 19.08.2014
Сообщений: 430
|
|
| 12.03.2017, 12:13 | |
|
WM_SendMessageNoPara() В какое место окна шлет данные? В окне нужен какой то специальный обработчик для WM_SendMessageNoPara()?
0
|
|
|
3 / 3 / 0
Регистрация: 06.12.2016
Сообщений: 1,605
|
|||||||
| 12.03.2017, 12:31 | |||||||
Для моего сообщения WM_MSG_DRIVE_CHANGED (кидал пример выше), я пишу:
0
|
|||||||
|
0 / 0 / 0
Регистрация: 06.12.2016
Сообщений: 60
|
|
| 19.03.2017, 17:56 | |
|
Подскажите кто понимает. Я создал два отдельных окна с двумя кнопками. При нажатии кнопку создается второе окно и при нажатии на нем кнопки создается первое. Но как я понял создавая кучу окон заполняется память и перестает работать как правильно открыть второе окно уничтожив первое?
0
|
|
|
0 / 0 / 0
Регистрация: 30.07.2012
Сообщений: 72
|
||||||||
| 20.03.2017, 08:17 | ||||||||
|
Позволю себе процитировать, а вообще курите тему, на последних 5 страницах инфы много.
hWin = CreateBMPConvirtDLG ( ); retCode = GUI_ExecCreatedDialog ( hWin ); WM_DeleteWymdow ( hWin ); Главное здесь - WM_DeleteWymdow. Она удаляет окно и освобождает всю занимаемую память. Т.е. на каждый вызов GUI_CreateDialogBox должен быть WM_DeleteWymdow. Иначе Вы будете постоянно терять память.
int retCode; uint8_t day_of_week; hWin = CreateOptionDLG ( ); retCode = GUI_ExecCreatedDialog ( hWin ); WM_DeleteWymdow ( hWin ); GUI_ExecCreatedDialog -- вот это не возвращается, пока диалог не закроется. CreateOptionDLG такой же, как его генерит GUI билдер:
Я использую FriiRTOS в своем проекте, в одном потоке у меня сделан большой switch для переключения между окнами, вызов окон произвожу через GUI_ExecCreatedDialog ( hWin ); Вчера сделал профайлинг процессов, т.к. после прикручивания утилиты по оценке загруженности проца увидел 100 % загрузку. Профайлиг сделал через Trosianalyzer, он показал, что все время отъедает задача по отрисовке графики, не могу понять, что не так? Сам EmWin настроен на работу с ОС, т.е. я использую GUI_X_OS.c Никто не подскажет куда копнуть?
0
|
||||||||
|
3 / 3 / 0
Регистрация: 06.12.2016
Сообщений: 1,605
|
||
| 20.03.2017, 11:20 | ||
Единственное, чего я не знаю - какая будет загрузка при использовании драйвера FlexColor. Я им почти не пользовался, т.к., наверное, из-за плохой разводки моей старой платы дисп с использованием FlexColor очень часто белеет и виснет. А с использованием кастомного драйвера всё пашет очень стабильно, но загрузка проца - 100% и меняется очень редко. Мой вывод о влиянии драйвера дисплея основан на том, что когда я перенёс всё приложение на LTDC (LIN драйвер, встроенный в STemWin), загрузка проца стала порядка 1-2%, независимо от того, какие окна у меня открыты. Да и сама загрузка стала адекватно меняться в соответствии с тем, что делает проц. Например, при втыкании USB мышки/флэшки она кратковременно подскакивает (хост детектит девайс), потом возвращается обратно. Всё остальное - CPU, SDROM, алгоритмы одни и те же. Кардинальное отличие старого изделия от нового - только LTDC. Ну и SDROM на старой плате работала на 66МГц, на новой - 90 MHZ (опять же влияние разводки и 4 слоёв вместо 2). Но я не склонен думать, что изменение частоты памяти так сильно влияет на загрузку CPU. Не знаю ... Я вообще сперва думал, что сам способ измерения загрузки некорректен. До тех пор, пока у меня не появилась возможность использовать LTDC :D . Других данных у меня нет. Но исходя из вышесказанного - если хотите каким-либо образом использовать загрузку CPU - переходите на LTDC. Ну или подбирайте другую оболочку вместо STemWin :D .
0
|
||
| 20.03.2017, 11:20 | |
|
STM32F4-Discovery(подключение и глупые вопросы) STM32F4+ETH(Вопросы по PHY KSZ8863) [решено]stm32f4 ethernet phy вопросы Первый опыт Первый опыт Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Генератор паролей
Maks 29.10.2026
Реализация из решения ниже выполнена исключительно по моей инициативе.
Самым главным критерием для меня было создание паролей, в котором отсутствуют знаки: | 1 l I
Обработка содержит реквизиты:
-. . .
|
Установка ChatGPT (Codex) на Windows без использования Microsoft Store
Fabien159 28.10.2026
Здравствуйте всем читающим! Опишу процесс установки ChatGPT (Codex) на Windows, если по каким-то причинам у вас не получается устанавить его через Microsoft Store.
И так:
1. Скачиваем с. . .
|
Программное добавление префикса в нумерацию документов
Maks 27.10.2026
Реализация из решения ниже выполнена в самописной конфигурации на БСП (помощь начинающему коллеге).
Задача:
Программно добавить префикс в нумерацию документов.
Решение:
В модуле объекта. . .
|
После закрытия оутлука продолжает висеть процесс в диспетчере задач
Maks 27.10.2026
С недавнего времени в продакшене возникла проблема: при закрытии оутлука в диспетчере задач продолжал висеть процесс outlook. exe. Проблема возникла после установки MS Office 2021 LTSC на машинах, под. . .
|
|
Baragoz - DPS/HPS бот для WoW 3.3.5a, многоязычный
AmbA 26.10.2026
Хотите ещё ботов? У меня есть один! А я пока отдохну от него.
https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=12062&stc=1&d=1793007952
Инструкция внутри.
https:/ / youtu. be/ VpfFZSUDGnQ. . .
|
Особенности gif сгенерированных в Си
russiannick 21.10.2026
Рассмотрим генерацию gif файлов, которые в Си имеют свои особенности.
Gif представляет собой графический формат популярный в интернете. Посмотрим на палитру. Gif файл сгенерированный в си отличается. . .
|
FPS контроллер с анимированными Y-Bot и 3D-звуком miniaudio (Box3D, Recast, BehaviorTree.CPP, ozz-animation, ImGui, OpenGL и SDL3)
8Observer8 18.10.2026
Содержание блога | English Version
Полное мультиплатформенное руководство по стартовому проекту с FPS-контроллером игрока, анимированными роботами Y-Bot с 4-слойным блендингом, 3D-физикой Box3D,. . .
|
Локальный http сервер
Argus19 17.10.2026
Локальный http сервер
На работе, на двух локальных компьютерах круглосуточно работают программы опроса приборов с записью в книги Excel,которые раз в сутки записываются на сервер компании. Т. к. . . .
|