|
3 / 3 / 0
Регистрация: 06.12.2016
Сообщений: 1,605
|
||||||
STemWin на STM32F4. Первый опыт. Вопросы.21.12.2013, 23:06. Показов 835257. Ответов 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
Регистрация: 06.12.2016
Сообщений: 322
|
||
| 22.04.2017, 19:30 | ||
|
[QUOTE="Hotd"]RGB565 подключен как рекомендует ДШ на LTDC - младшие пины экрана к старшим LTDC?
[QUOTE="Цитата:[/QUOTE]
Мне кажется, что это гораздо удобнее. При нумерации от 0, я несколько раз ошибался с подключением :) (не на стм32)
0
|
||
|
0 / 0 / 0
Регистрация: 06.12.2016
Сообщений: 322
|
||
| 22.04.2017, 19:35 | ||
0
|
||
|
ybrioth
|
|
| 25.04.2017, 01:40 | |
|
Всем доброго времени суток есть борда STM32F429I-DISC1 опробовал все что мог.... Возникла потребность в подключении STEmWin в совокупности с FriiRTOS... Использую CubeMX + Keil 5. При попытках добавить(перенести с примеров) EmWin в свой проект сталкиваю с кучей ошибок типа ..\EmWin\LCDConf_stm32f429i_disco_MB1075 .c(262): warning: #223-D: function "__HAL_RCC_GPIOF_CLK_ENABLE" declared implicitly. Если у кого есть возможность помочь в подключении прошу ответить (возможна связь по скайпу и вайберу) (my e-mail [URL="mailto:tom-m@ya.ru">tom-m@ya.ru[/URL])
|
|
|
3 / 3 / 0
Регистрация: 06.12.2016
Сообщений: 1,605
|
|
| 25.04.2017, 13:55 | |
|
ybrioth, про STemWin+FriiRTOS могу сказать только одно - надо брать версю либы с _OS в имени.
__HAL_RCC_GPIOF_CLK_ENABLE -- к STemWin не относится, она порты вообще не трогает никак, это какая-то чисто кубовая штука. Точнее не скажу, кубом я не занимаюсь, понятия не имею, что там такое. Но судя по ошибке - вы где-то забыли какой-то .h подключить, где этот __HAL_RCC_GPIOF_CLK_ENABLE объявлен.
0
|
|
|
ybrioth
|
|
| 25.04.2017, 18:39 | |
|
Да так и есть не подключены заголовочные файлы это я знаю, но проблема в том, что в сэмпле от стм заголовочные файлы вынесены в main.h и подключаются в LCDconf через #include "main.h". Как только я провожу аналогичную процедуру ошибки в LCDconf пропадают но появляются ошибки во всех остальных линкуемых стандартных файлах из библиотеки хал причем он даже перестает видеть типы uint32_t и тд. Стандартный сэмпловский проект компилится на ура (только он без оси). Пытался сделать глобальные инклюды результат аналогичен всю голову уже себе изломал.
Все файлы подключены с OS (хотя уже как только не пробовал) |
|
|
0 / 0 / 0
Регистрация: 19.08.2014
Сообщений: 430
|
|
| 27.04.2017, 12:57 | |
|
А можно в gui не закрыв предыдущей страницы перейти на новую выполнить операцию и сразу вернуться на предыдущею страницу?
Пример прибор отображает страницу результатов измерения. Пользователь захотел считать их из памяти прибора в память компьютера. Нажимает кнопку читать данные на верхнем П.О. прибор отображает PROGBAR передачи данных в компьютер. По завершению переходить на страницу измерения.
0
|
|
|
3 / 3 / 0
Регистрация: 06.12.2016
Сообщений: 1,605
|
|
| 27.04.2017, 16:26 | |
|
А зачем так сложно?
Выводите второе окно с прогресс-баром, которое само закроется по завершении передачи. Первому окну можно сделать WM_Hide - оно исчезнет, затем WM_Show - оно появится.
0
|
|
|
ybrioth
|
|
| 29.04.2017, 20:06 | |
|
может у кого есть сэмпл freertos stemwin под мою борду
|
|
|
3 / 3 / 0
Регистрация: 06.12.2016
Сообщений: 1,605
|
|
| 29.04.2017, 21:23 | |
|
Так он у всех есть. В репозитории куба - путь примерно такой: C:\Users\<usir>\STM32Cube\Repository\STM 32Cube_FW_F4_V1.16.0\Projects\STM32F429I-Dysc
overy\Applications\STemWin Я, правда, его не смотрел, не знаю, что там да как. Себе писал сам на F439 и свой дисп. FriiRTOS или нет - для гуя практически фиолетово, но либу надо брать с буковками OS в имени файла.
0
|
|
|
0 / 0 / 0
Регистрация: 07.10.2011
Сообщений: 108
|
|||||||||||
| 04.05.2017, 18:49 | |||||||||||
|
Пытаюсь разобраться с инициализацией библиотеки. Разбираюсь с примером для STM32f429I-Dysco
в AN написано, что сначала вызывается функцияв
Позже вызывается
Вопрос такой. Это разные буферы или один и тот же? Если один и тот же, то не понятно как сначала компилятором выделяется память под aMemory (не известно где он ее разместит), а потом где-то задается постоянный адрес
0
|
|||||||||||
|
3 / 3 / 0
Регистрация: 06.12.2016
Сообщений: 1,605
|
|
| 04.05.2017, 19:30 | |
|
Выделит в секции .sdram_data. Адрес и длину секции Вы задаёте сами в скрипте линкера.
Я у себя задал адрес начала секции после фрейм буфера LTDC. Поэтому они никогда не пересекутся, хоть и лежат в одной SDROM. Я выкладывал мой скрипт линкера здесь -
0
|
|
|
0 / 0 / 0
Регистрация: 21.11.2013
Сообщений: 36
|
|
| 04.05.2017, 20:38 | |
|
кстати о фреймбуферах недавно решал проблему, правда для F7
https://arm-stm.btogspot.com/2017/04/st ... emwin.html
0
|
|
|
0 / 0 / 0
Регистрация: 07.10.2011
Сообщений: 108
|
||
| 04.05.2017, 21:50 | ||
0
|
||
|
3 / 3 / 0
Регистрация: 06.12.2016
Сообщений: 1,605
|
|
| 04.05.2017, 22:31 | |
|
Вы неправильно поняли. Там речь вообще не про фрейм буферы, а про обычную память для гуя (она туда кладёт инфу про контролы окон, сохраняет куски изображения - для спрайтов и т.п.).
Там даже ничего не говорится про тип дисплея. может там вообще SSD1963, которому фрейм буфер не нужен.
0
|
|
|
0 / 0 / 0
Регистрация: 07.10.2011
Сообщений: 108
|
||||||
| 04.05.2017, 23:32 | ||||||
|
Попробую по-другому
Значит в GUI_X_Config() выделяется память для нужд GUI, а в LCD_X_Config() определяется память, размером с экранный буфер, в которой будет формироваться конечное изображения для вывода на экран. И LTDC будет перекачивать данные в экран непосредственно из последнего буфера. Без использования STemWin у меня получилось вывести картинку, заранее скопированную в буфер SDROM. Для этого взял из примера инициализацию слоя
0
|
||||||
|
3 / 3 / 0
Регистрация: 06.12.2016
Сообщений: 1,605
|
||
| 05.05.2017, 17:34 | ||
В LCD_X_Config вы задаёте адрес Вашего фреймбуфера функцией LCD_SetVROMAddrEx.
0
|
||
|
3 / 3 / 0
Регистрация: 06.12.2016
Сообщений: 1,605
|
|
| 05.05.2017, 21:37 | |
|
А задам-ка и я вопрос - может кто ответит :)
Столкнулся я с одной странной ситуацией. Железо - STM32F439IIT6, 32MB ROM, LTDC 800x480. STemWin v5.32 (вроде последняя), ейный буфер - 3 метра, по данным функции GUI_ALLOC_GetMemInfo загрузки больше 50% не видел. На проце висит SD карта (SDIO) и 2 USB флэшки. Всё это добро крутится на FriiRTOS. Есть у меня окно просмотра каталогов, там есть фича вывода картинок. Картинки выводятся стандартными гуёвыми функциями GUI_BMP_DrawScatidEx/GUI_JPEG_DrawScatidEx/GUI_GIF_DrawSubScatidEx. Также вычитываются размеры картинок соответствующими функциями гуя. Странность заключается в том, что одни и те же картинки (включая размеры) прекрасно выводятся с флэшек, а с SD карты они не выводятся. Если быть точным, то: 1. Размеры в большинстве случаев определяются верно, хотя бывают и сбои (возвращаются нули). 2. Сама отрисовка либо не рисует ничего, либо рисует прямоугольник серого цвета. Функция отрисовки возвращает 1. Что это значит - хз, в доке ничего, кроме того, что это ошибка, я не нашёл. Если рисуется bmp, то рисуется нечто цветное, с диагональными полосами, напоминающее кадр с экрана советского кинескопного телевизора со сбитой настройкой. Вначале думал, что у меня траблы с SDIO, но тестил её миллион раз, да и FatFS её распознаёт, каталоги читаются нормально, вывел один из "сбойных" JPEG-ов библиотекой чана (внаглую, поверх изображения гуя) - всё прекрасно. Кто-то знаёт, чё эт за хрень?
0
|
|
|
0 / 0 / 0
Регистрация: 30.07.2012
Сообщений: 72
|
|
| 07.05.2017, 00:49 | |
|
Смотрите, что у Вас в реализации функции получения данных для GUI_BMP_DrawScatidEx/GUI_JPEG_DrawScatidEx/GUI_GIF_DrawSubScatidEx. Нигде ли не крашится буфер при чтении из флешки и sd карты, это одна функция и Вы просто в качестве параметра void * p для GUI_GET_DATA_FUNC * pfGetData передаете только путь к файлу или разные в Вашей реализации?
Попробуйте сделать дамп получаемых данных через функцию GUI_GET_DATA_FUNC для содержимого одинаковых файлов с флешки и карты, например в som и сравните... что то подсказывает, что проблема где то там.
0
|
|
|
3 / 3 / 0
Регистрация: 06.12.2016
Сообщений: 1,605
|
|
| 07.05.2017, 12:49 | |
|
Угу. Придётся ....
0
|
|
|
rukh
|
|
| 16.05.2017, 17:21 | |
|
Добрый день.
Вот такой вопрос появился. Как задать картинку в качестве фона или заставки на дисплее? |
|
| 16.05.2017, 17:21 | |
|
STM32F4-Discovery(подключение и глупые вопросы) STM32F4+ETH(Вопросы по PHY KSZ8863) [решено]stm32f4 ethernet phy вопросы Первый опыт Первый опыт Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
GitHub Copilot в JetBrains: модель по умолчанию, Fix и контроль MCP
and_y87 12.10.2026
10 октября 2026 года GitHub обновил Copilot для JetBrains: добавил настройки стартовой модели, исправления из диагностики и управление автозапуском MCP. Поддержка IDE 2025. 1 прекращена — требуется. . .
|
День 5 из 28: Codex подсказывает следующий запрос
and_y87 12.10.2026
9 октября 2026 года OpenAI запустила бету Composer predictions — подсказок следующего сообщения в текущем диалоге Codex. Это помощь с формулировкой запроса, а не автоматическое продолжение задачи.
. . .
|
Запустил конкурс "тем и промптов для текстовых квестов созданных почти чисто ИИ"
Adler 06.10.2026
Всем привет!
За последние три-четыре дня я создал более 16 текстовых квестовых игр используя преимущественно по одному запросу к ИИ на игру. Мне так понравилось смотреть все ветки/ сцены во всех. . .
|
ИИ не может найти нужный язык в списке
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.
Приложение прошло модерацию и теперь доступно для скачивания. Делал его сам, шаг за шагом — и вот,. . .
|