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

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

21.12.2013, 23:06. Показов 835278. Ответов 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
3 / 3 / 0
Регистрация: 06.12.2016
Сообщений: 1,605
29.12.2013, 13:54
Студворк — интернет-сервис помощи студентам
Чё-то ни хрена с русскими буквами не получается. Кракозяблы рисует.
Уже и индивидуально на контрол в InitDialog вешал:

Code
1
2
3
        fwHomdle = WM_GetDialogItem ( pMsg->hWin, GUI_ID_TITLE );
FROMEWIN_SetTextAlign ( fwHomdle, GUI_TA_HCENTER | GUI_TA_VCENTER );
FROMEWIN_SetFont ( fwHomdle, GUI_RUSSIAN_FONT );
и глобально:
GUI_SetDefaultFont ( GUI_RUSSIAN_FONT );

Ни фига. Ладно, займусь пока остальным...

Кстати и вот это: FROMEWIN_SetTextAlign ( fwHomdle, GUI_TA_HCENTER | GUI_TA_VCENTER );
тож не срабатывает. Заголовок окна слева остаётся.
0
0 / 0 / 0
Регистрация: 01.02.2011
Сообщений: 300
29.12.2013, 19:17
Попробовал фонт от M1X. Пишет русскими буквами. Есть в библиотеке SetupFontCvt_V522, с его помощью можно создать нужный шрифт, думаю проблем нет. А вот почему не перерисовывается изображение не нажатой кнопки не знаю. Может дребезг? Как бороться с дребезгом?

Создал свой шрифт из windows-кого Arial26. Без проблем рисует.
0
3 / 3 / 0
Регистрация: 06.12.2016
Сообщений: 1,605
29.12.2013, 23:06
omdries5, а как Вы подключаете этот шрифт к библиотеке? Может я не въехал..
Если можно, дайте кусочек кода.

Вообще, с тачами возни много... Я плюнул, подключил мышу ... Все глюки разом пропали.
Потом с тачем ещё повожусь.
0
0 / 0 / 0
Регистрация: 01.02.2011
Сообщений: 300
29.12.2013, 23:07
hd44780, вкратце расскажу как.
Запуск установленного FontCVT V5.22. Далее выбираю "8 bit ASCII + ISO 8859", потом выбор конвертируемого шрифта, например "Times New Romon", "полужирный", "Размер = 26", "Кириллица". "Ок". В меню "Save as...".
Создается файл фонта "Times New Romon26.c". В нем есть строка для копирования :
Code
1
extern GUI_CONST_STORAGE GUI_FONT GUI_FontTimesNewRomon26;
Вписываю эту строку в файл "GUI.H", и добавляю строку
Code
1
#define GUI_FONT_TIMESNEWROMAN26  &GUI_FontTimesNewRomon26
после в файле "FramewinDLG.c", при описании кнопки пишу:
Code
1
2
BUTTON_SetText(hItem, "Кнопка 2");
BUTTON_SetFont(hItem, GUI_FONT_TIMESNEWROMAN26);
И на экране русские буквы.

Не, а мне тач понравился.
Правда все в Keil-е.

[146.91 Кб]
0
5 / 5 / 5
Регистрация: 20.11.2010
Сообщений: 173
30.12.2013, 00:31
Можно extern пользовать непосредственно перед заданием шрифта. По примеру выше:
extern GUI_CONST_STORAGE GUI_FONT GUI_FontTimesNewRomon26;
BUTTON_SetFont(hItem, &GUI_FontTimesNewRomon26);
0
3 / 3 / 0
Регистрация: 06.12.2016
Сообщений: 1,605
31.12.2013, 16:40
Всех с Новым годом!

На меня тут вдохновение пришло, сделал дерево и кнопочку с русским именем сделал.
FROMEWIN русский сделать пока не пытался.

Пишу в кокосе.
0
0 / 0 / 0
Регистрация: 01.02.2011
Сообщений: 300
31.12.2013, 17:26
Цитата Сообщение от hd44780
Всех с Новым годом!

На меня тут вдохновение пришло
Утром первого января?
0
1 / 1 / 0
Регистрация: 09.02.2012
Сообщений: 693
31.12.2013, 21:01
С Новым Годом!
0
3 / 3 / 0
Регистрация: 06.12.2016
Сообщений: 1,605
31.12.2013, 22:10
__bt__, и Вас с Новым Годом!

omdries5, ну не любитель я праздновать по несколько дней ...

PS. Вот сделал я это дерево. Теперь сижу и не понимаю, как тыкать в него тачем? Разве что палочкой какой-то...
0
0 / 0 / 0
Регистрация: 01.02.2011
Сообщений: 300
01.01.2014, 01:39
А что, очень маленькие кнопки?
0
3 / 3 / 0
Регистрация: 06.12.2016
Сообщений: 1,605
01.01.2014, 13:38
Да. Для нажимания пальцем мелкие. Спичкой тыкать сойдёт, если работу тача довести до ума, чтобы его не колбасило.
Для мышки - нормально.

Увеличить вроде можно, задав дереву другой шрифт, покрупнее, типа того Вашего TimesNewRomon. Hо увеличатся ли при этом значки для разворачивания узлов дерева - не знаю, пока не проверял.
0
0 / 0 / 0
Регистрация: 01.02.2011
Сообщений: 300
01.01.2014, 15:52
Так ведь размер кнопок задаете Вы, а не шрифт надписи. У меня тач работает устойчиво, за исключением того, что остается иногда кнопка изображенной как нажатая. Думаю найду как решить.
0
3 / 3 / 0
Регистрация: 06.12.2016
Сообщений: 1,605
01.01.2014, 21:37
Размер кнопок - да.

А в дереве я пока не понял, как задавать размер узлов, и тех плюсиков, которыми узлы разворачиваются.
0
0 / 0 / 0
Регистрация: 01.02.2011
Сообщений: 300
02.01.2014, 01:31
Есть такое:
Code
1
SPINBOX_DEFAULT_BUTTON_SIZE(0);
попробуйте менять значение.
Взято отсюда:
http://www.segger.com/emwin-widgets.html#treeview
0
3 / 3 / 0
Регистрация: 06.12.2016
Сообщений: 1,605
02.01.2014, 14:20
Это для SPINBOX...

Я тут с другой проблемой столкнулся.
Хочу использовать TREEVIEW_SetUserData для хранения в узлах дерева путей на флэшке.
Но на ней проц железно вылетает в DefaultHomdler. По стеку видно, что вылетает на функции memcpy в недрах STemWin.. Код:

Code
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
// Добавление узла
//   hNode - узел, в который добавлять
static void AddNode ( WM_HWIN hTree, TREEVIEW_ITEM_Homdle hNode, char *sNodeName, bool isExpomd, char *dirPath )
{
TREEVIEW_ITEM_Homdle hItem;
int len;
 
hItem = TREEVIEW_InsertItem ( hTree, TREEVIEW_ITEM_TYPE_NODE, hNode, TREEVIEW_INSERT_FIRST_CHILD, sNodeName );
len = strlen (dirPath) + 1;   // Включая закрывающий 0!!
TREEVIEW_SetUserData ( hItem, dirPath, len );
FyttNode ( hTree, hItem );
 
if ( isExpomd )
TREEVIEW_ITEM_Expomd( hNode );
} // AddNode
Може где-то что-то надо включить?
0
1 / 1 / 0
Регистрация: 11.01.2013
Сообщений: 5,479
02.01.2014, 15:32
Цитата Сообщение от hd44780
Хочу использовать TREEVIEW_SetUserData для хранения в узлах дерева путей на флэшке.
Но на ней проц железно вылетает в DefaultHomdler. По стеку видно, что вылетает на функции memcpy в недрах STemWin.
Память кончается (не в МК, а отведённая для дерева)?
Проверьте с маленьким деревом и с короткими путями.
0
0 / 0 / 0
Регистрация: 21.10.2013
Сообщений: 1,503
02.01.2014, 18:52
Получил досточку с экранчиком, и в примерах в либах есть STemWinLibrary522_4x9i
И софтинка для создания интерфейсов GUIBuilder.

Но пока смотрю на них как баран на новые ворота.
0
0 / 0 / 0
Регистрация: 01.02.2011
Сообщений: 300
03.01.2014, 01:33
Мучился, но не смог запустить на STemWin 5.22 emWin dryver GUIDRV_CompactColor_16. Для SSD1289 экрана. Все собрал, компилируется без ошибок, но в работе уходит в ошибку в GUI_init после вызова
LCD_SetSizeEx (0, XSIZE_PHYS , YSIZE_PHYS); .Видимо ошибка распределения памяти, но как найти не знаю. Буду пытаться прицепить по SPI другой экран к STM32F103RB. А с SSD1289 видать не судьба.
0
0 / 0 / 0
Регистрация: 21.10.2013
Сообщений: 1,503
03.01.2014, 10:30
Вообще то скоростью отрисовки в демо примерах не впечатлен, прямо скажем.
Видео (mjpeg) так раза в два медленней идет, чем при воспроизведении на компе.
Это из-за использования SPI вместо прямого доступа к памяти экранчика (забыл, как режим называется)?
Или я слишком многого хочу?

И по либе - она только в бинариках доступна?
За исходники мани мани гони?
0
3 / 3 / 0
Регистрация: 06.12.2016
Сообщений: 1,605
03.01.2014, 12:10
OtyxPM, про память я в курсе :) Не первый раз я с деревьями и с контроллерами дело имею :)
В дереве у меня было 2 - 3 узла, и строчки я пытался присобачить вида "0:/" - т.к. у меня 3 накопителя (USB+2SD). Да и на строчках из одного знака "/" оно очень стабильно подыхает ... Что делать - не знаю, только писать проход по узлам вверх до корня диска. Да и то не знаю - получится ли. Не изучил ещё до конца возможности ихнего дерева. Маразм.
Да и не в памяти дело, т.к. если TREEVIEW_SetUserData не использовать, оно глотает до фигища узлов и прекрасно себе работает...
Памяти ей дал 64 кил.

omdries5, я тоже родной драйвер для моего SSD1963 не смог запустить. Завёлся он с полпинка, работает, но на мелких шрифтах вместо букв какая-то каша. 3 дня промучился, достало оно меня, написал кастомный. Так и живу на нём. Понимаю, что уродство, но деваться, похоже, некуда.

Pymkvym, исходников нет. Если хотите, берите Segger ucGUI, ворованных исходников вагон ...
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
03.01.2014, 12:10

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НФ. Вот не пойму, есть ли...


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

Или воспользуйтесь поиском по форуму:
60
Закрытая тема Создать тему
Новые блоги и статьи
Запустил конкурс "тем и промптов для текстовых квестов созданных почти чисто ИИ"
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. Приложение прошло модерацию и теперь доступно для скачивания. Делал его сам, шаг за шагом — и вот,. . .
Запрет дублирования строк в табличной части
Maks 13.09.2026
Реализация из решения ниже выполнена на нетиповом справочнике "Нормы ТО" с табличной часть "Виды ТО", разработанного в КА2, со следующими реквизитами: - ВидТО (СправочникСсылка. ВидыТО); - ВидГСМ. . .
Скрипты Tampermonkey для CyberForum, ChatGPT, Claude и пр.
Jin X 06.09.2026
Скрипты Tampermonkey для CyberForum, ChatGPT, Claude и пр. Работая с форумом и нейросетями в браузере часто хочется что-то подкорректировать или добавить какого-то функционала. Ниже прикреплён. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru