|
3 / 3 / 0
Регистрация: 06.12.2016
Сообщений: 1,605
|
||||||
STemWin на STM32F4. Первый опыт. Вопросы.21.12.2013, 23:06. Показов 835355. Ответов 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 |
|
3 / 3 / 0
Регистрация: 06.12.2016
Сообщений: 1,605
|
||
| 03.08.2017, 09:11 | ||
Hidkihok, к F429Dyscovery есть примеры с гуём. Вроде в репах куба что-то видел.
0
|
||
|
0 / 0 / 0
Регистрация: 16.05.2015
Сообщений: 85
|
|
| 03.08.2017, 17:12 | |
|
hd44780, спасибо.
Собственно примеры к плате и распатрониваю. Видимо в процессе ухода от SPL (в сторону CMSIS) где-то накосячил.
0
|
|
|
0 / 0 / 0
Регистрация: 19.08.2014
Сообщений: 430
|
||||||
| 22.08.2017, 09:08 | ||||||
|
Заметил вот такую проблему. Если быстро нажимать кнопки на тачь панели при переходе от экрана к экрану то GUI зависает. Кто нибудь сталкивался с такой проблемой ? Сделал вот так:
0
|
||||||
|
0 / 0 / 0
Регистрация: 26.07.2016
Сообщений: 50
|
|||||||||||
| 27.08.2017, 00:00 | |||||||||||
|
Хм, сейчас пытаюсь запустить на F4 дисплей с SPI. Раньше прикручивал к STemWin дисплей с 16-битной шиной, а вот с SPI впал в ступор.
В прошлом проекте с параллельной шиной конец LCD_X_Config был такой:
Два - нашёл на сеггеровском форуме пример с такими строчками в LCD_X_Config:
Отсюда вопрос - достаточно ли будет просто сказать драйверу про функции записи\чтения пикселей?
0
|
|||||||||||
|
3 / 3 / 0
Регистрация: 06.12.2016
Сообщений: 1,605
|
|||
| 27.08.2017, 09:50 | |||
LCD_SetDevFunc(0, LCD_DEVFUNC_READMPIXELS, (void(*)(void))_ReadMPyxits); Тут только чтение одного\нескольких пикселей. Отсюда вопрос - достаточно ли будет просто сказать драйверу про функции записи\чтения пикселей? Я не знаю, что там на сеггеровском форуме пишут, но, как я понимаю FlexColor в целом (вне зависимости от типа дисплея), на уровне функций GUI_PORT_API (2-й аргумент GUIDRV_FlexColor_SetFunc) нет понятия "пиксель". Вы задаёте просто функции передачи байта/байтов туда-сюда в сочетании с одной адресной линией (xxxA0/xxxA1). И не более того. Даже всё равно как и куда Вы в действительности пишете эти байты. Хоть по вай-фаю в комп. Гую и драйверу всё равно. Адресная линия на дисплеях чаще всего называется RS. А пиксели там читаются/пишутся или нет - это уже не Ваше дело. Это заботы 100% драйвера. Потому просто забудьте об этом :) PS. Если хотите сами рулить пикселями - выкиньте FlexColor и пишите кастомный драйвер. Там атомарная операция - прочитать/записать один пиксель.
0
|
|||
|
0 / 0 / 0
Регистрация: 26.07.2016
Сообщений: 50
|
||
| 27.08.2017, 12:35 | ||
0
|
||
|
0 / 0 / 0
Регистрация: 29.11.2014
Сообщений: 49
|
||
| 03.09.2017, 12:15 | ||
|
Столкнулся с проблемой реализации создания уведомления .
CУсть множество страниц созданных следующим образом
Страницу создаю схожим форматом. Сообщение выводится , но emwin виснет, без вылетов d Hord_fault. Как лучше реализовать такую фитчу.
0
|
||
|
0 / 0 / 0
Регистрация: 07.10.2011
Сообщений: 108
|
|
| 06.09.2017, 15:13 | |
|
немного не в тему
как при создании видеобуфера проинициализировать его другим массивом (картинкой)? чтобы не хранить в памяти картинку, которую потом придется копировать в буфер
0
|
|
|
3 / 3 / 0
Регистрация: 06.12.2016
Сообщений: 1,605
|
||
| 06.09.2017, 17:55 | ||
Не хотите забивать этим "хламом" флэш проца и ROM (неважно какой) - ну положите картинку в какой-нибудь внешней SPI Ftosh и тяните её оттуда когда хотите (не только при инициализации). Другое дело - вопрос стыковки этой картинки с STemWin. Насколько я знаю, она требует обычного указателя на эту картинку. А это значит, что Вы можете держать её только в той памяти, которая мапится на адресное пространство процессора. Т.е., чтобы можно было вытянуть какой-либо байт из картинки через простой указатель типа *p. А тот же SPI/I2C такого не умеет физически. Тут может помочь только какая-то память на FMC/FSMC. Но может STemWin имеет ещё какой-либо механизм задания фоновых картинок - тут не подскажу, глубоко не изучал.
0
|
||
|
0 / 0 / 0
Регистрация: 07.10.2011
Сообщений: 108
|
|
| 06.09.2017, 18:05 | |
|
Мне эта картинка нужна как заставка при включении
Получается что я пользуюсь ей 1 раз, а памяти она прилично занимает, да и лишняя операция копирования. Если только при включении указать видеобуфер на массив картинки, а потом его переключить во время основной работы..
0
|
|
|
0 / 0 / 0
Регистрация: 06.12.2016
Сообщений: 382
|
|
| 06.09.2017, 18:10 | |
|
Если картинка влезает по размеру во флеш МК, объявите массив с картинкой как const, при этом он должен будет быть положенным во флеш, и при выводе заставки укажите указатель на этот массив в качестве источника
0
|
|
|
3 / 3 / 0
Регистрация: 06.12.2016
Сообщений: 1,605
|
||
| 06.09.2017, 21:17 | ||
Да, вон BusMostir правильно говорит. Массив обязательно задавать со словом const. Иначе он ляжет в ROM, а не во flash.
0
|
||
|
1 / 1 / 0
Регистрация: 05.10.2017
Сообщений: 2,048
|
|
| 26.09.2017, 10:32 | |
|
Нужен совет, как сделать оптимальнее.
Есть слайдер. Запись положения переменную происходит при отпускании слайдера, т.е. при WM_NOTIFICATION_RELEASED делаем SLIDER_GetValue(). Необходимо, чтобы слайдер регулярно обновлял свое значение на основе этой же переменной (переменная может поменяться из других тасков). Делаю таймер на 1 с, который регулярно устанавливает SLIDER_SetValue() исходя из значения переменной. В итоге получается конфликт - при ручном изменении (перемещении слайдера), слайдер постоянно прыгает в исходное положение, т.к. переменная не изменяется, пока я двигаю слайдер. Можно попробовать по событию WM_NOTIFICATION_CLICKED останавливать обновление положение слайдера, но как-то костыльно. При 20 слайдерах, нужно каждому сделать свой флажок на запрет обновлений. Бегло поглядел API, не нашел подходящей функции на определение, что слайдер в данный момент нажат.
0
|
|
|
3 / 3 / 0
Регистрация: 06.12.2016
Сообщений: 1,605
|
|
| 26.09.2017, 14:42 | |
|
Как по мне WM_NOTIFICATION_CLICKED - самое нормальное решение. Другой возможности я тут не вижу к сожалению.
В сравнении с виндой с событиями тут вообще полный швах :( . Мне вообще очень не хватает сообщения WM_ITEM_CLICKED у разных списков .... Хорошо хоть режим автовключения полос прокрутки LISTVIEW_SetAutoScrollH в 5.40 починили.. 2 года с чем-то оно глючило.
0
|
|
|
1 / 1 / 0
Регистрация: 05.10.2017
Сообщений: 2,048
|
||||||
| 27.09.2017, 17:33 | ||||||
|
И попутно еще:
Есть следующее окошко:
0
|
||||||
|
3 / 3 / 0
Регистрация: 06.12.2016
Сообщений: 1,605
|
|
| 27.09.2017, 20:13 | |
|
Я не знаю. Никогда не пытался так делать.
Часики, значки и прочую фигню я вывожу в отдельное самопальное самообновляющееся по собственному таймеру окно высотой 20-25 пикселей вдоль всего верхнего края дисплея. Клики мышей прекрасно ловятся - событие WM_TOUCH, а куда именно там ткнули сам вычисляю. Но если дисплей типа SSD1963 - делать такое не советую - ощутимо подтормаживает. Если LTDC - то всё шикарно :) .
0
|
|
|
1 / 1 / 0
Регистрация: 05.10.2017
Сообщений: 2,048
|
||||||
| 28.09.2017, 06:29 | ||||||
|
Работает, если регулярно (например по таймеру WM_TIMER) делать:
UPD: Сейчас думаю, как бы сделать визуально подобную штуку для установки времени: <Изображение удалено> Можно, конечно, не заморачиваться, и тупо 3 spinbox-а поставить, но визуально не ахти выглядит.
0
|
||||||
|
0 / 0 / 0
Регистрация: 29.11.2014
Сообщений: 49
|
||||||
| 02.10.2017, 14:19 | ||||||
|
Я делал так, без создания страницы, вы будете терять фокус при переходе по страницам
0
|
||||||
|
0 / 0 / 0
Регистрация: 07.10.2011
Сообщений: 108
|
|
| 04.10.2017, 11:50 | |
|
Нигде не нашел зачем нужно включать CRC модуль и как STemWin его использует. Хочу реализовать расчет CRC через DMA mem2mem. Не будет ли GUI его портить, используя CRC в своих целях?
0
|
|
|
1 / 1 / 0
Регистрация: 05.10.2017
Сообщений: 2,048
|
||
| 04.10.2017, 11:56 | ||
|
stemwin таким образом проверяет, что она запущена на stm32, а не другом чипе. crc должен быть включен до GUI_Init, однако можно попробовать потом его отключить и таким образом убедиться, что далее CRC не используется, и можно спокойно его использовать под свои нужны.
AN4323:
0
|
||
| 04.10.2017, 11:56 | |
|
STM32F4-Discovery(подключение и глупые вопросы) STM32F4+ETH(Вопросы по PHY KSZ8863) [решено]stm32f4 ethernet phy вопросы Первый опыт Первый опыт Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
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,которые раз в сутки записываются на сервер компании. Т. к. . . .
|
Копировать Windows на новый диск на UEFI
damix 17.10.2026
https:/ / uriesk. wordpress. com/ 2016/ 11/ 01/ move-window-10-to-ssd-on-a-uefi-dualboot-system-with-basic-linux-tools/
TL DR
Вставляем диск, а старый подключаем через переходник, грузимся с лайва. . .
|
ИИ не может найти нужный язык в списке
Supersumestria 05.10.2026
Я ему даю вот такое изображение и прошу найти и подчеркнуть немецкий язык.
Возвращает он вот это:
https:/ / i. **********/ vqBWLe2. png
Нужную строчку в 3й колонке просто выдумал. .
Это. . .
|
|
Новая последняя моя музыка в SUNO
zorxor 05.10.2026
Здравствуйте, дорогие мои друзья! С большой радостью я хотел бы представить вам свою новую последнею музыку, которую сгенерировала мне по моей просьбе нейросеть SUNO. С уважением, zorxor.
Это. . .
|
Программный домашний кинотеатр
russiannick 27.09.2026
Сподобился на программный домашний кинотеатр. В качестве ЯВУ по традиции выбрал js.
В помощники взял Яндекс-Алису.
Было создано три зала на разные интересы.
исторические и ретро
сериал Хичкок. . .
|
Беседа с ИИ о программистах, недопускающих к созданию и правке кода генеративные ИИ и причины этого
zorxor 21.09.2026
Раньше я радовался или получал некоторые эмоции, пусть небольшие, но всё же, от самого процесса написания кода, рекомпиляции и запуска, видя постепенное развитие программы и прочее. А теперь лень. . .
|
Мобильное приложение ColorStep
pavlinmavlin 17.09.2026
Реализовал приложение Красный, Зеленый, Синий в Unity3d + c#.
Название изменил на ColorStep.
Приложение прошло модерацию и теперь доступно для скачивания. Делал его сам, шаг за шагом — и вот,. . .
|