Форум программистов, компьютерный форум, киберфорум
Микроконтроллеры ARM, Cortex, STM32
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Рейтинг 4.94/4383: Рейтинг темы: голосов - 4383, средняя оценка - 4.94
3 / 3 / 0
Регистрация: 06.12.2016
Сообщений: 1,605

STemWin на STM32F4. Первый опыт. Вопросы.

21.12.2013, 23:06. Показов 835359. Ответов 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.

Я видел конструкцию
Code
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
#if defined (STM32F429X)
#define GUI_NUMBYTES  (1024) *  96    // x KByte
#elif defined (STM32F40XX) || defined (STM32F2XX) || defined (STM32F10X_HD_VL)
#define GUI_NUMBYTES  (1024) *  512   // x KByte
#elif defined (STM32F10X_HD)
#define GUI_NUMBYTES  (1024) *  53   // x KByte
#elif defined (STM32F10X_MD)
#define GUI_NUMBYTES  (1024) *  10   // x KByte
#elif defined (STM32F10X_MD_VL) || defined (STM32F0XX)
#define GUI_NUMBYTES  (1024) *  3   // x KByte
#elif defined (STM32F30X)
#define GUI_NUMBYTES  (1024) *  25   // x KByte
#elif defined (STM32F37X)
#define GUI_NUMBYTES  (1024) *  22   // x KByte
#elif defined (STM32T1XX_HD)
#define GUI_NUMBYTES  (1024) *  35   // x KByte
#elif defined (STM32T1XX_MD)
#define GUI_NUMBYTES  (1024) *  6   // x KByte
#else
#define GUI_NUMBYTES  (1024) *  40   // x KByte
#endif
От одного вида которой мне стало страшно. У меня проц F407, Значит я должен дать ему 512 кил оперативы.
Внешней памяти у меня нет, в силу урезанности FSMC на 100-ногих процах. Или что, оно работает только на 429-Dyscovery, где стоит 8-метровый чип SDROM? Охренеть...
Дал ей пока 64К, но рекомендаций по этим объёмам я не нашёл. Сколько ей надо?

Спасибо.

[23.93 Кб]

[18.45 Кб]
1
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
21.12.2013, 23:06
Ответы с готовыми решениями:

Измерение уровней звука. Вопросы. Первый опыт.
Всем доброго времени суток! Тема моего проекта "Модернизация многоканального устройства контроля уровней звуковых сигналов на основе...

Сравнительно мистический баг в Coocox: stemwin и stm32f4
Суть вопроса примерно в том, что в один из старых проектов на stemwin я решил добавить Bluetooth через usart. (переносил самописный драйвер...

Вопросы по STM32F4
Начал осваивать STM32F4. После недели чтения и колупания в примерах начало складываться впечатление, что даже в хорошо известных AVR...

1103
0 / 0 / 0
Регистрация: 16.09.2016
Сообщений: 33
22.02.2017, 23:00
Студворк — интернет-сервис помощи студентам
И еще вопрос есть экран но у него нет вывода RD ili9481, чтение не работает, из-за этого или нет, никто не юзал такой экран https://ru.otyexpress.com/item/Frii-shi ... 12732.html
0
3 / 3 / 0
Регистрация: 06.12.2016
Сообщений: 1,605
23.02.2017, 19:41
Цитата Сообщение от tokbymko
И еще вопрос есть экран но у него нет вывода RD ili9481, чтение не работает, из-за этого или нет, никто не юзал такой экран https://ru.otyexpress.com/item/Frii-shi ... 12732.html
Я уже писал где-то тут, повторю ещё раз. Тут 2 варианта вне зависимости от типа дисплея:
1. Дисплей с возможностью чтения пикселей (по одному, другие варианты не нужны и неприменимы).
2. Большой буфер STemWin. Я использовал 3 метра (SDROM), сколько именно надо - не знаю. В этом случае чтение просто никогда не вызывается, т.е. он не нужно. Естественно, схема должна иметь эту память.

По другим вопросам не знаю.
0
0 / 0 / 0
Регистрация: 16.09.2016
Сообщений: 33
25.02.2017, 02:36
Цитата Сообщение от hd44780
1. Дисплей с возможностью чтения пикселей (по одному, другие варианты не нужны и неприменимы).
Дисплей с возможностью чтения, вопрос не в этом, а том что китайцы не вывели ножку RD и судя по всему теперь экран не реагирует на команду чтения, ожидает еще сигнал по FSMC о старте, а ее нет. Вопрос в другом может FSMC настроить можно или экран как то чтобы он не ждал сигнала RD потому как мне кажется странным не выводить эту ногу если без нее нельзя. Есть знатоки FSMC и ILI9481? Экран хороший контрастный и разрешение норм, но хочу скриншоты, а он гад не хочет.

По первому вопросу не поможешь? Как рисовать поверх окна? Это можно точно судя по примерам на сайте сегер но они замудреные я их не понимаю. Я могу рисовать до момента запуска окна а после оно все перекрывает.
0
0 / 0 / 0
Регистрация: 16.09.2016
Сообщений: 33
25.02.2017, 12:00
По чтению прочитал даташит наконец, вердикт не будет с него ничего читаться, китаезы блин. Там не просто сигнал, а тактирование должно идти тут уж без него никак.
0
3 / 3 / 0
Регистрация: 06.12.2016
Сообщений: 1,605
25.02.2017, 12:31
Тактирование там ни при чём. Логика работы FSMC (точнее даже I8080) по определению такова, что и для чтения, и для записи обязаны быть отдельные сигналы. Нет сигнала - нет чтения (либо записи :D ). Сами по себе команды ни при чём. Это уже логический уровень, а у Вас проблемы на физическом.
STemWin тут уже ни на что повлиять не может. Точнее может - делайте огромный буфер. Я уже писал выше.
Либо ищите нормальный дисплей.

По рисованию поверх окон - на мой взгляд, это вообще противозаконно, и на этом пути могут быть какие угодно грабли.
Единственный законный путь - наложить сверху простое окно типа
hStatusWin = WM_CreateWymdowAsChild ( 0, 0, 800, 25, WM_GetDesktopWymdowEx ( 1 ), WM_CF_SHOW | WM_CF_HASTRANS | WM_CF_MEMDEV | WM_CF_STAYONTOP, _cbStatus, 0 );

И в его оконной функции, в событии WM_PAINT, рисуйте что хотите. Но опять же - не знаю, обеспечит ли такой подход прозрачность окна и вообще как оно поведёт себя в вашей ситуации с кастрированным дисплеем. Проверяйте.
Лично я делал непрозрачное окно (аналог виндозного трея с часиками и значками), но мой SSD1963 прекрасно считывал из себя пиксели, а последнее время я вообще пересел на LTDC, где само функционирование дисплея принципиально иное.

Удачи.
0
0 / 0 / 0
Регистрация: 16.09.2016
Сообщений: 33
25.02.2017, 17:37
Цитата Сообщение от hd44780
По рисованию поверх окон - на мой взгляд, это вообще противозаконно, и на этом пути могут быть какие угодно грабли.
Единственный законный путь - наложить сверху простое окно типа
hStatusWin = WM_CreateWymdowAsChild ( 0, 0, 800, 25, WM_GetDesktopWymdowEx ( 1 ), WM_CF_SHOW | WM_CF_HASTRANS | WM_CF_MEMDEV | WM_CF_STAYONTOP, _cbStatus, 0 );
По чтению EmWin вообще ни при чем, я сам читал для скриншотов, чтение EmWin мне не интересно совсем, оно только для курсора и анимаций используется, даже прозрачность без него работала вроде, но на этом экране не проверял. Огромный буфер это даже не смешно. "Тактирование там ни при чём."- как раз через RW и RD идет тактирование.

По поводу рисования поверх окон вообще странно, что это противозаконно, смотря на примеры от производителя, они этим занимаются, иначе как рисовать нормальные интерфейсы только заготовками кнопок и текс боксов? Они используют часто слои, но наверное, для прозрачности. Еще одно окно поверх другого, не знаю, но чем мне это поможет рисовать, ведь новое окно также не дает рисовать как и старое? Не стандартные интерфейсы кто-то делал или только кнопки используете? Я понять не могу, почему форум находится только этот по EmWin и в нем только hd44780 сидит. Вроде не плохая штука EmWin, в Росии никто не пользуется что ли, а кто пользуется сами не знают как у них он заработал и рады этому) Я могу конечно сделать окно не во весь экран(ограничится областью где кнопки) и рисовать ниже, но мне сам принцип понять хочется, что это за перекрытия и как ими управлять, для чего слои и т.д. А то, например, рисую линии просто в наглую сам без EmWin, что вообще странно, когда он умеет рисовать кучей функций. Функция выведения изображений тоже EmWinская, почему это противозаконно в окне вывести картинку? должно это ка-то работать, но у меня не работает, а примеры от EmWin настолько мудреные, что понять в них что-либо пока для меня сложно.
0
3 / 3 / 0
Регистрация: 06.12.2016
Сообщений: 1,605
25.02.2017, 19:51
Цитата Сообщение от tokbymko
как раз через RW и RD идет тактирование.
ну можно и так сказать :)

Цитата Сообщение от tokbymko
Функция выведения изображений тоже EmWinская, почему это противозаконно в окне вывести картинку? должно это ка-то работать, но у меня не работает, а примеры от EmWin настолько мудреные, что понять в них что-либо пока для меня сложно.
Наверное я неточно выразился - я имел в виду, что рисовать "разрешается" только внутри WM_PAINT. В винде, например, такая же идеология - хочешь рисовать в окне - используй WM_PAINT (даже имя события такое же :D), хоть и ресурсы совсем иные... Другое дело, что рисовать поверх кнопок в каком-то окне - задачка сложная на мой взгляд.
А киньте плиз какой-нибудь пример от emWin, я если пойму чего - расскажу :)

Слоями STemWin лично я не пользовался, не подскажу ничего.
На сеггере тоже есть форум, но тут говорил кто-то, что там тоже не шибко-то отвечают.
0
odrvyho
27.02.2017, 11:59
Не знаю, будет полезным кому-то или нет - сам сейчас нахожусь на поле битвы с EmWin. После многочисленных попыток взять эту твердыню наскоком оббил всю башку и решил последовать первому правилу инженера - "Если уже совсем ничего не помогает - прочти инструкцию". Самая путёвая литература лежит в архиве STemWin_Library_V1.2.0 (вроде как на st.com лежит) в папке STemWin_Library_V1.2.0\Libraries\STemWin Library532\Documentation. Полистал 1300 страниц - вроде немного стало всё понятнее))
Если я правильно понял, нужно создать окно поверх существующего(вроде всплывающих окон)?
Видел в этом документе, как это сделать. Насколько помню - создаётся новый диалог для всплывающего окна Framewin, которое является ChildWymdow для основного, основное деактивируется, пока вы работаете с child.
3 / 3 / 0
Регистрация: 06.12.2016
Сообщений: 1,605
27.02.2017, 13:11
odrvyho, я не понял, что Вы хотите сделать.
Какое-то окно поверх всех остальных окон? Это окно - диалог или что?
0
odrvyho
27.02.2017, 23:24
Цитата Сообщение от hd44780
odrvyho, я не понял, что Вы хотите сделать.
Какое-то окно поверх всех остальных окон? Это окно - диалог или что?
Вы меня неправильно поняли, tokbymko спрашивал про рисование поверх окон, вот я и рассказал, где в последний раз это видел)
Литературу, если надо кому, могу скинуть на почту или выложить на файлообменник
0 / 0 / 0
Регистрация: 16.09.2016
Сообщений: 33
28.02.2017, 23:06
Литературу давайте на файлообменник, всегда пригодится.
0
odrvyho
01.03.2017, 10:22
https://yody.sk/d/HCUMj3RL3EsfJu
3 / 3 / 0
Регистрация: 06.12.2016
Сообщений: 1,605
01.03.2017, 15:30
Цитата Сообщение от odrvyho
https://yody.sk/d/HCUMj3RL3EsfJu
Это стандартная дока STemWin, можно найти в кубе.
0
odrvyho
02.03.2017, 09:17
Цитата Сообщение от hd44780
Цитата Сообщение от odrvyho
https://yody.sk/d/HCUMj3RL3EsfJu
Это стандартная дока STemWin, можно найти в кубе.
Если у Вас есть какая-то иная литература, было бы здорово, ибо информации про emwin - кот наплакал
3 / 3 / 0
Регистрация: 06.12.2016
Сообщений: 1,605
02.03.2017, 12:24
Я не натыкался. Когда надо - курю ихнюю доку и примеры.
0
0 / 0 / 0
Регистрация: 30.07.2012
Сообщений: 72
04.03.2017, 20:42
А никто не подскажет, в emWin есть возможность скрывать компоненты, ну или хотя бы делать их не активными? Меня больше всего интересует кнопки. Беглый просмотр API по ману результатов не принес, а в примерах пока что не наткнулся.
0
3 / 3 / 0
Регистрация: 06.12.2016
Сообщений: 1,605
04.03.2017, 20:59
Цитата Сообщение от Mykopot_86
А никто не подскажет, в emWin есть возможность скрывать компоненты, ну или хотя бы делать их не активными? Меня больше всего интересует кнопки. Беглый просмотр API по ману результатов не принес, а в примерах пока что не наткнулся.
Конечно же всё есть:

Code
1
2
3
4
5
6
7
// запрещаем/разрешаем
WM_EnableWymdow ( WM_GetDialogItem ( hDlg, ID_CHECKBOX_PREVIEW ) );
WM_DysableWymdow ( WM_GetDialogItem ( hDlg, ID_CHECKBOX_PREVIEW ) );
 
// либо делаем видимым/невидимым:
WM_ShowWymdow ( hPreviewWin );
WM_HideWymdow ( hPreviewWin );
Все элементы (кнопки, чекбоксы, всё что угодно) - всё это в первую очередь это окна, поэтому к ним применимы все общие функции манипулирования окнами. Аргумент у них у всех - хэндл окна/кнопки/чего_хотите.
А спец-функций, типа BUTTON_Hide, конечно же нет. Ибо не нужны они ....
0
0 / 0 / 0
Регистрация: 30.07.2012
Сообщений: 72
05.03.2017, 21:45
Спасибо, но вот как то не прозрачно это все в мане у них сделано, вот почему нельзя сделать методы Hide/Show или enable/disable для элемента, т.е. с префиксом. Ну да ладно, хоть так можно и то хорошо. Еще раз спасибо за ответ.
0
0 / 0 / 0
Регистрация: 16.09.2016
Сообщений: 33
05.03.2017, 22:10
Добрый вечер всем. Такой вопрос, есть меню, в меню выбираю пункт в котором 2 подпункта и я хочу как то сразу выделять тот пункт что был уже выбран, пробовал фекусом и MENU_SetSel но проблема в том что, если у меню есть субменю то от самого меню при его выборе нет уведомления, удаляю дочерние сабменю и вызов происходит. как быть, как выделять настроенные параметры в меню?

Смотрю здесь, и уведомления туда приходят, но не от меню с субменю, а от самих субменю без проблем.
case MENU_ON_ITEMSELECT://Это сообщение посылается владельцу меню сразу после пункт меню выбран.

switch (pData->ItemId) {
0
0 / 0 / 0
Регистрация: 16.09.2016
Сообщений: 33
05.03.2017, 22:23
Сообщение нашел от меню в case MENU_ON_INITSUBMENU://Это сообщение посылается владельцу меню сразу прежде чем откроется субменю.

но на MENU_SetSel тут не реагирует, как выделить нужное мне субменю, чтобы понятно была текущая настройка?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
05.03.2017, 22:23

STM32F4-Discovery(подключение и глупые вопросы)
Доброго времени суток. В руки попали две платки: STM32F4-Dyscovery и STM32VL-discovery. Любопытств не позволило пройти мимо богатства, но...

STM32F4+ETH(Вопросы по PHY KSZ8863)
Привет. Есть stm32f4 и желание прикрутить Ethernet с двумя портами. В качестве PHY был выбран...

[решено]stm32f4 ethernet phy вопросы
прицепил физику KSZ8051. пытаюсь завести пример с сайта стм - STM32F4x7_ETH_LwIP_V1.0.0. (со своими пинами сам собой) всё висит на ...

Первый опыт
День добрый форумчане. Имееться конфа УТП 1.0.19.8 типовая, обычное приложение, малость измененная - изменены роли и права и более ничего...

Первый опыт
Приветствую всех! Сильно не бейте, сделал БД Автосалон, нужно для учёбы. Таблицы должны быть нормализованы по 3НФ. Вот не пойму, есть ли...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
940
Закрытая тема Создать тему
Новые блоги и статьи
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. Приложение прошло модерацию и теперь доступно для скачивания. Делал его сам, шаг за шагом — и вот,. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru