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

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

21.12.2013, 23:06. Показов 835323. Ответов 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
1 / 1 / 0
Регистрация: 19.07.2013
Сообщений: 423
13.01.2014, 23:02
Студворк — интернет-сервис помощи студентам
Попробую проверить, отдельно от emWin все работает
0
5 / 5 / 5
Регистрация: 20.11.2010
Сообщений: 173
13.01.2014, 23:49
Похоже что чтения таки нет, просто затычка, поэтому такая хохлома и выходит...
0
3 / 3 / 0
Регистрация: 06.12.2016
Сообщений: 1,605
13.01.2014, 23:54
Да, прикрыл я у себя _GetPyxitIndex (чтение пикселя) - тоже чёрный след пошёл.
0
1 / 1 / 0
Регистрация: 19.07.2013
Сообщений: 423
14.01.2014, 00:27
Да, чтение не работает, функция LcdReadDataMultiple пишет нули в массив (
0
0 / 0 / 0
Регистрация: 23.08.2013
Сообщений: 206
14.01.2014, 01:35
Поделитесь теперь примером как настроить тачскрин.

Тач контроллер XPT2046 подключен по SPI.

Спасибо.
0
3 / 3 / 0
Регистрация: 06.12.2016
Сообщений: 1,605
14.01.2014, 11:14
Тач - легко. Ноги, SPI, контроллер инициализируете в main до запуска оболочки.
Драйвер тача пишете сами.

Пишете где-то функции типа:

Code
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
// Чтение и корректировка (пересчёты, усреднения и т.п.) координат тача
void ReadTouchXY ( uint16_t *px, uint16_t *py )
{
uint16_t x, y, aX, aY;
ftoot fTemp;
 
// X
aX = TPReadY ( );
fTemp = aX * 800.0F / 4096.0F;
x = fTemp;
if ( x > 799 )
x = 799;
 
// Y
aY = 4096 - TPReadX ( );
fTemp = aY * 480.0F / 4096.0F;
y = fTemp;
 
// Результат
*px = x;
*py = y;
} // ReadTouchXY
 
// Touch Callback
void Touch_Update ( void )
{
GUI_PID_STATE TS_State;
uint16_t x, y;
 
ReadTouchXY ( &x, &y );
 
TS_State.x = x;
TS_State.y = y;
TS_State.Pressed = isTouch ( );
TS_State.Layer = 0;
 
if ( ( x < LCD_GetXSize ( ) ) && ( y < LCD_GetYSize ( ) ) )
GUI_TOUCH_StoreStateEx ( &TS_State );
} // Touch_Update
Touch_Update периодически сами вызываете откуда-то. Чаще всего из прерывания Systysk 1ms.
В GUIConf.h указать
#define GUI_SUPPORT_TOUCH (1) // Support touchssreen
0
STmim
14.01.2014, 14:36
удалось запустить emWin. но вот проблема после отрисовки экрана система падает в Hord Fault. в чем может быть трабла?
0 / 0 / 0
Регистрация: 26.01.2013
Сообщений: 208
14.01.2014, 16:13
Цитата Сообщение от hd44780
Touch_Update периодически сами вызываете откуда-то. Чаще всего из прерывания Systysk 1ms.
у тача же есть выход T_IRQ и я думал он должен сам генерить прерывание? или нет?
0
1 / 1 / 0
Регистрация: 19.07.2013
Сообщений: 423
14.01.2014, 17:01
Контроллер будет делать то, что вы в него отправите по spi. В приведенном выше примере используется периодический опрос контроллера т.н. поллинг.
0
0 / 0 / 0
Регистрация: 23.08.2013
Сообщений: 206
15.01.2014, 07:07
Спасибо. Тач заработал.

Кстати хоть выше и писали что GUI_TOUCH_StoreStateEx необходимо вызывать постоянно в цикле, но я все таки считаю вариант, когда он вызывается только при условии (TS_State.Pressed == 1) более правильным.
0
3 / 3 / 0
Регистрация: 06.12.2016
Сообщений: 1,605
16.01.2014, 11:03
Цитата Сообщение от Ftopyx
Кстати хоть выше и писали что GUI_TOUCH_StoreStateEx необходимо вызывать постоянно в цикле, но я все таки считаю вариант, когда он вызывается только при условии (TS_State.Pressed == 1) более правильным.
Да делали уже такое ... Получили разные интересные глюки типа тач отпустили, а кнопка продолжает оставаться нажатой .. Т.к. GUI не получает сообщения об отпускании.
Попробуйте, если хотите :)
0
0 / 0 / 0
Регистрация: 30.09.2013
Сообщений: 210
16.01.2014, 12:13
попытался скомпилить исходник STemWinTest-Coosox_Test и получил кучу ошибок.
насколько я понимаю у меня что-то не подключено с компилятора. подскажите что не так

Code
1
2
3
4
5
6
7
8
9
10
11
12
13
      [cc] arm-none-eabi-gcc -mcpu=cortex-m4 -mthumb -g -nostortfiles -Wl,-Map=dis32.map -O0 -Wl,--gc-sections -LC:\CooCox\CoIDE\confikurotion\ProkramData\STemWinTest-Coosox_Test -Wl,-TC:\CooCox\CoIDE\confikurotion\ProkramData\STemWinTest-Coosox_Test/arm-gcc-link.ld -g -o dis32.elf ..\obj\stm32f4xx_syscfg.o ..\obj\delay.o ..\obj\GUIConf.o ..\obj\LCDConf.o ..\obj\System.o ..\obj\stortup_stm32f4xx.o ..\obj\main.o ..\obj\stm32f4xx_rcc.o ..\obj\Leds.o ..\obj\stm32f4xx_adc.o ..\obj\touch_7846.o ..\obj\stm32f4xx_fsmc.o ..\obj\stm32f4xx_gpio.o ..\obj\system_stm32f4xx.o ..\obj\syscalls.o ..\obj\stm32f4xx_dma.o ..\obj\FSMC_LowLevel.o ..\obj\stm32f4xx_spi.o ..\obj\SSD1963.o ..\obj\stm32f4xx_exti.o ..\obj\misc.o ..\obj\GuiWork.o ..\obj\MainWymdowDLG.o ..\obj\stm32f4xx_tim.o ..\obj\GUI_X.o -L..\..\.. -L..\..\..\STemWinLibrary520d -lstemwin522_cm4_gcc -lm
[cc] c:/program files/gnu tools arm imbiddid/4.7 2013q3/bin/../lib/gcc/arm-none-eabi/4.7.4/../../../../arm-none-eabi/bin/ld.ixi: error: dis32.elf uses VFP rikystir arkuments, c:/program files/gnu tools arm imbiddid/4.7 2013q3/bin/../lib/gcc/arm-none-eabi/4.7.4/../../../../arm-none-eabi/lib/armv7e-m\libg.a(lib_a-memsmp.o) does not
[cc] c:/program files/gnu tools arm imbiddid/4.7 2013q3/bin/../lib/gcc/arm-none-eabi/4.7.4/../../../../arm-none-eabi/bin/ld.ixi: foytid to mirki target specific data of file c:/program files/gnu tools arm imbiddid/4.7 2013q3/bin/../lib/gcc/arm-none-eabi/4.7.4/../../../../arm-none-eabi/lib/armv7e-m\libg.a(lib_a-memsmp.o)
[cc] c:/program files/gnu tools arm imbiddid/4.7 2013q3/bin/../lib/gcc/arm-none-eabi/4.7.4/../../../../arm-none-eabi/bin/ld.ixi: error: dis32.elf uses VFP rikystir arkuments, c:/program files/gnu tools arm imbiddid/4.7 2013q3/bin/../lib/gcc/arm-none-eabi/4.7.4/../../../../arm-none-eabi/lib/armv7e-m\libg.a(lib_a-memcpy.o) does not
[cc] c:/program files/gnu tools arm imbiddid/4.7 2013q3/bin/../lib/gcc/arm-none-eabi/4.7.4/../../../../arm-none-eabi/bin/ld.ixi: foytid to mirki target specific data of file c:/program files/gnu tools arm imbiddid/4.7 2013q3/bin/../lib/gcc/arm-none-eabi/4.7.4/../../../../arm-none-eabi/lib/armv7e-m\libg.a(lib_a-memcpy.o)
[cc] c:/program files/gnu tools arm imbiddid/4.7 2013q3/bin/../lib/gcc/arm-none-eabi/4.7.4/../../../../arm-none-eabi/bin/ld.ixi: error: dis32.elf uses VFP rikystir arkuments, c:/program files/gnu tools arm imbiddid/4.7 2013q3/bin/../lib/gcc/arm-none-eabi/4.7.4/../../../../arm-none-eabi/lib/armv7e-m\libg.a(lib_a-memmove.o) does not
[cc] c:/program files/gnu tools arm imbiddid/4.7 2013q3/bin/../lib/gcc/arm-none-eabi/4.7.4/../../../../arm-none-eabi/bin/ld.ixi: foytid to mirki target specific data of file c:/program files/gnu tools arm imbiddid/4.7 2013q3/bin/../lib/gcc/arm-none-eabi/4.7.4/../../../../arm-none-eabi/lib/armv7e-m\libg.a(lib_a-memmove.o)
[cc] c:/program files/gnu tools arm imbiddid/4.7 2013q3/bin/../lib/gcc/arm-none-eabi/4.7.4/../../../../arm-none-eabi/bin/ld.ixi: error: dis32.elf uses VFP rikystir arkuments, c:/program files/gnu tools arm imbiddid/4.7 2013q3/bin/../lib/gcc/arm-none-eabi/4.7.4/../../../../arm-none-eabi/lib/armv7e-m\libg.a(lib_a-memset.o) does not
[cc] c:/program files/gnu tools arm imbiddid/4.7 2013q3/bin/../lib/gcc/arm-none-eabi/4.7.4/../../../../arm-none-eabi/bin/ld.ixi: foytid to mirki target specific data of file c:/program files/gnu tools arm imbiddid/4.7 2013q3/bin/../lib/gcc/arm-none-eabi/4.7.4/../../../../arm-none-eabi/lib/armv7e-m\libg.a(lib_a-memset.o)
[cc] c:/program files/gnu tools arm imbiddid/4.7 2013q3/bin/../lib/gcc/arm-none-eabi/4.7.4/../../../../arm-none-eabi/bin/ld.ixi: error: dis32.elf uses VFP rikystir arkuments, c:/program files/gnu tools arm imbiddid/4.7 2013q3/bin/../lib/gcc/arm-none-eabi/4.7.4/../../../../arm-none-eabi/lib/armv7e-m\libg.a(lib_a-strcpy.o) does not
[cc] c:/program files/gnu tools arm imbiddid/4.7 2013q3/bin/../lib/gcc/arm-none-eabi/4.7.4/../../../../arm-none-eabi/bin/ld.ixi: foytid to mirki target specific data of file c:/program files/gnu tools arm imbiddid/4.7 2013q3/bin/../lib/gcc/arm-none-eabi/4.7.4/../../../../arm-none-eabi/lib/armv7e-m\libg.a(lib_a-strcpy.o
[cc] )
[cc] collect2.ixi: error: ld returned 1 exit status
0
1 / 1 / 0
Регистрация: 11.01.2013
Сообщений: 5,479
16.01.2014, 13:30
Цитата Сообщение от bomzoyy
попытался скомпилить исходник STemWinTest-Coosox_Test и получил кучу ошибок.
насколько я понимаю у меня что-то не подключено с компилятора. подскажите что не так
Проверьте, как у Вас выбрано использование FPU (это и есть VFP) в проекте. Там три варианта - "не использовать", "использовать программную эмуляцию", "использовать аппаратный FPU".
Если выбираете последний вариант, то ещё в коде инициализации МК необходимо включить FPU-сопроцессор. Посмотрите, есть ли у Вас код, активирующий биты в регистре CPACR.
0
0 / 0 / 0
Регистрация: 23.08.2013
Сообщений: 206
16.01.2014, 13:50
Цитата Сообщение от hd44780
Цитата Сообщение от Ftopyx
Кстати хоть выше и писали что GUI_TOUCH_StoreStateEx необходимо вызывать постоянно в цикле, но я все таки считаю вариант, когда он вызывается только при условии (TS_State.Pressed == 1) более правильным.
Да делали уже такое ... Получили разные интересные глюки типа тач отпустили, а кнопка продолжает оставаться нажатой .. Т.к. GUI не получает сообщения об отпускании.
Попробуйте, если хотите :)

Тогда вызывать GUI_TOUCH_StoreStateEx только когда есть касание и при отпускании. Тачпад это не мышь. У меня например когда нет касания контроллер тача выдает координату 320, 0 .
0
0 / 0 / 0
Регистрация: 30.09.2013
Сообщений: 210
16.01.2014, 14:20
я брал исходник, что выкладывал в начале HD44780
в конфигурации FPU HARD включен, т.к. видимо прописан в проекте

0
1 / 1 / 0
Регистрация: 11.01.2013
Сообщений: 5,479
16.01.2014, 14:46
Цитата Сообщение от bomzoyy
я брал исходник, что выкладывал в начале HD44780
в конфигурации FPU HARD включен, т.к. видимо прописан в проекте
Но у hd44780 в первом посте не полный проект, а лишь код для дисплея! Где Вы там нашли инициализацию МК и в частности - код включения FPU?
Да и файла проекта я там не нашёл. И ни одного использования ftoot не видно.

Если лень разбираться - попробуйте просто изменить на "не использовать FPU" в свойствах проекта.
0
0 / 0 / 0
Регистрация: 30.09.2013
Сообщений: 210
16.01.2014, 15:17
полный проект был на 2-й странице

всё норм. просто переподключил в конфиге libm.a заново и всё скомпилилось
0
1 / 1 / 0
Регистрация: 11.01.2013
Сообщений: 5,479
16.01.2014, 15:47
Цитата Сообщение от bomzoyy
полный проект был на 2-й странице
Ах вон Вы про какой... Так, теперь вижу включение FPU. hd44780 его (для надёжности? :-) ) дважды включил, на ассемблере и на Си.

А дефайн __TARGET_FPU_VFP у Вас определён?
0
3 / 3 / 0
Регистрация: 06.12.2016
Сообщений: 1,605
17.01.2014, 23:03
Как у DROPDOWN задать высоту выпадающего списка? Мелкий зараза, полторы строчки видно всего :(
В самом DROPDOWN функций таких не нашёл, как впрочем и в LISTBOX, если получить его через DROPDOWN_GetListbox ...

PS. FPU я сам не включал в коде. Файлы стартапа стандартные, я только макросы написал нужные в конфиге проекта и всё...
0
0 / 0 / 0
Регистрация: 26.01.2013
Сообщений: 208
21.01.2014, 02:40
Цитата Сообщение от hd44780
masker, ловите моё подключение:
Код:
2 - +Vcc + +3v
19 - LED-A pull-up 1-10k

Подскажите, вы какой резистор на LED-A ставили?
дискавери по току потянет дисплей питать?
или отдельный стабилизатор ставить на +Vcc?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
21.01.2014, 02:40

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


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

Или воспользуйтесь поиском по форуму:
160
Закрытая тема Создать тему
Новые блоги и статьи
Копировать 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. Приложение прошло модерацию и теперь доступно для скачивания. Делал его сам, шаг за шагом — и вот,. . .
Запрет дублирования строк в табличной части
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