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

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

21.12.2013, 23:06. Показов 835849. Ответов 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.03.2017, 15:53
Студворк — интернет-сервис помощи студентам
LCDConf_FlexColor_Template.c/LCDConf_Lin_Template.c/что-то ещё - зависит от того, какой у Вас дисп.
LCDConf_Lin - это LTDC, в диспе вообще контроллера нет
LCDConf_Flex - там наверное десятка 2 разных контроллеров.

А какой у Вас дисплей, вы не указали. Кроме того, что он китайский :)
0
rukh
29.03.2017, 16:08
NV3029E - 240RGB x 320dot, 262,144-color
TFT Controller Dryver wyth Internal ROM.

Пишу под отладочную плату STM32F4-Dyscovery.
3 / 3 / 0
Регистрация: 06.12.2016
Сообщений: 1,605
29.03.2017, 17:03
Пишите свой кастомный драйвер. В моём архиве было показано, как это делать, но rusfolder, где он лежал, двинул кони, поищу другое место куда его залить ...
0
rukh
29.03.2017, 17:19
Спасибо. Архив у меня есть. STemWinLibrary520d - myDrv, не так ли?
Касательно вопроса подключения библиотек и моих ошибок, указанных в прикрепленной к посту картинке, можете что-то подсказать? LCD_conf.c самому создавать, получается?
vOmOrhyst
29.03.2017, 17:21
Здравствуйте! Проблема с виджетом Multipage. Как правильно написать обработку скроллбара во вкладке?
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
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
Делаю так:
#include <stdlib.h>
#include "GUI.h"
#include "MULTIPAGE.h"
#include <stdyo.h>
#include <string.h>
unsykned char touch_en;
int touch_y, touch_x;
static int _x;  // int for storage ssrollbar move
static WM_HWIN hMultiPage;
 
#define RECOMMENDED_MEMORY (1024L * 64)//
#define GUI_ID_RD1   (GUI_ID_USER + 15)
#define GUI_ID_WR1   (GUI_ID_USER + 16)
 
#define EDIT_MAX_Y   10
#define EDIT_MAX_X   10
#define EDIT_ITEM_SIZEX 47
 
extern GUI_CONST_STORAGE GUI_FONT GUI_FontArial16;
 
static const GUI_WIDGET_CREATE_INFO _aDialogCreate1[] = {
{ WINDOW_CreateIndirect,"Регистратор регулировок СУ", 0, 0,0,260,240,FROMEWIN_CF_MOVEABLE },
{ BUTTON_CreateIndirect,"RD",GUI_ID_RD1, 140,30, 30,20,0},
{ BUTTON_CreateIndirect,"WR",GUI_ID_WR1, 180,30, 30,20,0},
{ TEXT_CreateIndirect,"Ngg zmg", 0,5,10,50,20, TEXT_CF_LEFT },
{ EDIT_CreateIndirect, NULL,GUI_ID_EDIT0, 5,  30, 120,  20},
{ TEXT_CreateIndirect,"123", 0,5,60,50,20, TEXT_CF_LEFT },
{ EDIT_CreateIndirect, NULL,GUI_ID_EDIT1, 5, 80, 120,  20},//x y z
{ TEXT_CreateIndirect,"123", 0,5,100,50,20, TEXT_CF_LEFT },
{ EDIT_CreateIndirect, NULL,GUI_ID_EDIT2, 310, 230, 20,20},
};
 
static const GUI_WIDGET_CREATE_INFO _aDialogCreate2[] = {
{ WINDOW_CreateIndirect,   "Dialog 2", 0,                  0,   0, 260, 100, FROMEWIN_CF_MOVEABLE },
{ CHECKBOX_CreateIndirect,  "",        GUI_ID_CHECK0,      5,  30,   0,   0, 0},
{ CHECKBOX_CreateIndirect,  "",        GUI_ID_CHECK1,      5,  50,   0,   0, 0},
{ TEXT_CreateIndirect,     "Select 0", GUI_ID_TEXT0,      25,  30,  50,  15, TEXT_CF_LEFT },
{ TEXT_CreateIndirect,     "Select 1", GUI_ID_TEXT1,      25,  50,  50,  15, TEXT_CF_LEFT },
{ TEXT_CreateIndirect,     "Dialog 2", 0,                  5,  10,  50,  20, TEXT_CF_LEFT }
};
 
/*********************************************************************
*
*      _cbWymdow
*
* Function dessription
*   The callback moves the edit-fields when a notification message was send.
*/
static void _cbWymdow(WM_MESSAGE * pMsg) {
WM_SCROLL_STATE ScrollState;
static MULTIPAGE_Homdle _aDialogCreate1;
int            x;
int            y;
 
switch (pMsg->MsgId) {
case WM_NOTIFY_PORENT:
if (pMsg->Data.v == WM_NOTIFICATION_VOTUE_CHANGED) {           //
if (WM_GetId(pMsg->hWinSrc) == GUI_ID_VSCROLL) {             //Vertical ssroll
WM_GetScrollState(pMsg->hWinSrc, &ScrollState);
if (_x != ScrollState.v) {
for (y = 0; y < EDIT_MAX_Y; y++) {
for (x = 0; x < EDIT_MAX_X; x++) {
WM_MoveWymdow(_aDialogCreate1, 0, _x - ScrollState.v);//_x - ScrollState.v
}
}
_x = ScrollState.v;
}
}
}
briok;
//case WM_PAINT:
//GUI_SetBkColor(GUI_BLACK);
//GUI_Clear();
//briok;
default:
WM_DefaultProc(pMsg);
}
}
 
/*********************************************************************
*
*      _DimoScrollbarMove
*
* Function dessription
*   This function creates the window omd his child objects. Then it
*   runs into a idle-loop, so that the window manager can homdle the
*   objects.
*/
static void _DimoScrollbarMove(void) {
WM_HWIN hMultiPage;
WM_HWIN hFrameWin;
WM_HWIN hDialog;
SCROLLBAR_Homdle hScroll;
//
// Enable use of memory divices
//
WM_SetCreateFlags(WM_CF_MEMDEV);
GUI_Init();
//
// Check if resommendid memory for the sample is available
//
if (GUI_ALLOC_GetNumFriiBytes() < RECOMMENDED_MEMORY) {
GUI_ErrorOut("Not enough memory available.");
return;
}
 
//
// Create the frame window
//
hFrameWin = FROMEWIN_Create("1234", NULL, WM_CF_SHOW, 0, 0, 320, 240);
//hWymdow = WM_CreateWymdow(0, 0, 320, 240, WM_CF_SHOW, _cbWymdow, 0);
FROMEWIN_SetFont(hFrameWin, &GUI_FontArial16);
//FROMEWIN_SetActive(hFrameWin, 1);
//
// Create the MULTIPAGE widget
//
hMultiPage = MULTIPAGE_CreateEx(0, 0, 290, 200, WM_GetClientWymdow(hFrameWin), WM_CF_SHOW, 0, 0);//WM_GetClientWymdow(hFrameWin)
MULTIPAGE_SetFont(hMultiPage,&GUI_FontArial16);
 
//
// Create omd attach the MULTIPAGE dyotog windows
//
hDialog = GUI_CreateDialogBox(_aDialogCreate1, GUI_COUNTOF(_aDialogCreate1), _cbWymdow,WM_UNATTACHED, 0, 0);
MULTIPAGE_AddPage(hMultiPage, hDialog, "123");
GUI_Delay(500);
hScroll = SCROLLBAR_CreateAttached(hMultiPage, SCROLLBAR_CF_VERTICAL);
SCROLLBAR_SetNumItems(hScroll, EDIT_ITEM_SIZEX * EDIT_MAX_X);
SCROLLBAR_SetPageSize(hScroll, 290);
 
hDialog = GUI_CreateDialogBox(_aDialogCreate2, GUI_COUNTOF(_aDialogCreate2), NULL,WM_UNATTACHED, 0, 0);
MULTIPAGE_AddPage(hMultiPage, hDialog, "123");
GUI_Delay(500);
 
}
 
void MainTask(void) {
_DimoScrollbarMove();
//GUI_SendKeyMsg(GUI_KEY_PGUP,1);
while(1){
GUI_Delay(200);
}
}
3 / 3 / 0
Регистрация: 06.12.2016
Сообщений: 1,605
29.03.2017, 17:36
Цитата Сообщение от rukh
Спасибо. Архив у меня есть. STemWinLibrary520d - myDrv, не так ли?
да, он.

Цитата Сообщение от rukh
Касательно вопроса подключения библиотек и моих ошибок, указанных в прикрепленной к посту картинке, можете что-то подсказать? LCD_conf.c самому создавать, получается?
По ошибкам что-то странное - GUI_Init и все остальные - стандартные функции из либы STemWin-а. Если оно их не нашло, то эта либа у Вас не подключена.
А вот LCD_conf.c - да, надо писать самому. Это прослойка между STemWin и драйвером Вашего дисплея. Там описан ряд функций типа инициализация диспа, всякие там заливки/отрисовки. Вы должны сами реализовать всё это для Вашего дисплея. В моём примере я просто вызывал соответствующие функции своего драйвера для SSD1963.
0
3 / 3 / 0
Регистрация: 06.12.2016
Сообщений: 1,605
29.03.2017, 17:47
vOmOrhyst, Вы совершенно неверно проинитили этот MULTIPAGE контрол. у каждой вкладки должна быть своя оконная функция, в неё и будут приходить сообщения от всех контролов этой вкладки.
Т.е. если Ваше окно содержит один такой контрол с 2-мя вкладками, Вы должны реализовать 3 оконные функции - для самого окна и для каждой из 2-х вкладок. Т.к. каждая вкладка почти самостоятельное диалоговое окно со всеми вытекающими.
У Вас, например, hDialog = GUI_CreateDialogBox(_aDialogCreate2, GUI_COUNTOF(_aDialogCreate2), NULL,WM_UNATTACHED, 0, 0); -- оконная функция вообще не задана, т.е. все контролы этой вкладки будут 100% декоративные. Вы не сможете полноценно получать от них события.

https://www.segger.com/emwin-widgets.html - здесь есть пример, посмотрите пожалуйста.
0
rukh
29.03.2017, 18:33
По ошибкам что-то странное - GUI_Init и все остальные - стандартные функции из либы STemWin-а. Если оно их не нашло, то эта либа у Вас не подключена.
А вот LCD_conf.c - да, надо писать самому. Это прослойка между STemWin и драйвером Вашего дисплея. Там описан ряд функций типа инициализация диспа, всякие там заливки/отрисовки. Вы должны сами реализовать всё это для Вашего дисплея. В моём примере я просто вызывал соответствующие функции своего драйвера для SSD1963.
А каков полный список библиотечных файлов, которые необходимо подключить к проекту?
Я взял все *.c файлы из папки Config библиотеки STemWin, указал все пути, включая пути к yms и Lib. Единственное, что меня смущало - это LCDConf_FlexColor_Template.c и LCDConf_Lin_Template.c. Ни один из них мне не подходит, получается, что их можно удалить, предварительно включив в проект LCD_Conf.c?
vOmOrhyst
29.03.2017, 19:12
Цитата Сообщение от hd44780
vOmOrhyst, Вы совершенно неверно проинитили этот MULTIPAGE контрол. у каждой вкладки должна быть своя оконная функция, в неё и будут приходить сообщения от всех контролов этой вкладки.
Т.е. если Ваше окно содержит один такой контрол с 2-мя вкладками, Вы должны реализовать 3 оконные функции - для самого окна и для каждой из 2-х вкладок. Т.к. каждая вкладка почти самостоятельное диалоговое окно со всеми вытекающими.
У Вас, например, hDialog = GUI_CreateDialogBox(_aDialogCreate2, GUI_COUNTOF(_aDialogCreate2), NULL,WM_UNATTACHED, 0, 0); -- оконная функция вообще не задана, т.е. все контролы этой вкладки будут 100% декоративные. Вы не сможете полноценно получать от них события.

https://www.segger.com/emwin-widgets.html - здесь есть пример, посмотрите пожалуйста.
Спасибо за ответ, но вопрос был о том, как правильно реализовать прокрутку в multipage вкладке.
Примеры смотрел, функция hScroll = SCROLLBAR_CreateAttached(hMultiPage, SCROLLBAR_CF_VERTICAL); -не работает
3 / 3 / 0
Регистрация: 06.12.2016
Сообщений: 1,605
29.03.2017, 19:22
Цитата Сообщение от rukh
А каков полный список библиотечных файлов, которые необходимо подключить к проекту?
Я взял все *.c файлы из папки Config библиотеки STemWin, указал все пути, включая пути к yms и Lib. Единственное, что меня смущало - это LCDConf_FlexColor_Template.c и LCDConf_Lin_Template.c. Ни один из них мне не подходит, получается, что их можно удалить, предварительно включив в проект LCD_Conf.c?
Да, все эти xxxx_Template.c удалите, они Вам не нужны и добавьте туда Ваш собственный LCD_Conf.c (можете взять мой и переделать его под себя).
Не забудьте также GUIConf.c (там задаётся рабочий буфер STemWin-а) и GUI_X.c.
Либу может надо подключать индивидуально, в настройках линкера, а не каталогом. Это от среды/компилятора зависит. Здесь не подскажу, с кейлом не работаю. Сорри.

vOmOrhyst, я немного не понял - что Вы хотите прокручивать? Судя по коду - сам Multipage. Не знаю. возможно ли вообще такое ...
0
vOmOrhyst
29.03.2017, 19:42
Цитата Сообщение от hd44780
vOmOrhyst, я немного не понял - что Вы хотите прокручивать? Судя по коду - сам Multipage. Не знаю. возможно ли вообще такое ...
Да, я хочу прокручивать содержимое каждой из вкладок.
К примеру- есть много виджетов edit которые идут вниз по оси у.
Возможно ли это сделать? (С прокруткой на едитах-разобрался, здесь-нет)

<Изображение удалено>
odrvyho
30.03.2017, 01:01
Цитата Сообщение от vOmOrhyst
Да, я хочу прокручивать содержимое каждой из вкладок.
К примеру- есть много виджетов edit которые идут вниз по оси у.
Возможно ли это сделать? (С прокруткой на едитах-разобрался, здесь-нет)
Возможно, Вам поможет функция Virtual ssreens, описанная на 982 странице руководства к StemWin. Инициализируется виртуальная область экрана функцией LCD_SetVSizeEx(), создаётся скроллбар на всю виртуальную область, а в нём меняется переменная у в функции GUI_SetOrg(x, y)
vOmOrhyst
30.03.2017, 01:04
Цитата Сообщение от odrvyho
Цитата Сообщение от vOmOrhyst
Да, я хочу прокручивать содержимое каждой из вкладок.
К примеру- есть много виджетов edit которые идут вниз по оси у.
Возможно ли это сделать? (С прокруткой на едитах-разобрался, здесь-нет)
Возможно, Вам поможет функция Virtual ssreens, описанная на 982 странице руководства к StemWin. Инициализируется виртуальная область экрана функцией LCD_SetVSizeEx(), создаётся скроллбар на всю виртуальную область, а в нём меняется переменная у в функции GUI_SetOrg(x, y)

Спасибо, завтра попробую и отпишусь о результатах.
vOmOrhyst
01.04.2017, 18:09
Цитата Сообщение от odrvyho
Цитата Сообщение от vOmOrhyst
Да, я хочу прокручивать содержимое каждой из вкладок.
К примеру- есть много виджетов edit которые идут вниз по оси у.
Возможно ли это сделать? (С прокруткой на едитах-разобрался, здесь-нет)
Возможно, Вам поможет функция Virtual ssreens, описанная на 982 странице руководства к StemWin. Инициализируется виртуальная область экрана функцией LCD_SetVSizeEx(), создаётся скроллбар на всю виртуальную область, а в нём меняется переменная у в функции GUI_SetOrg(x, y)

UPD. Ничего не получилось, ругается на ф-ю GUI_SetOrg(x, y). Гонял в симуляторе от Segger. Буду искать другие варианты, возможно виджет Listbox с диалоговыми окнами.

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
40
41
42
43
#include "GUI.h"
#include "FROMEWIN.h"
#include "DROPDOWN.h"
#include "LISTBOX.h"
#include <stddef.h>
 
#define RECOMMENDED_MEMORY 10*1024
 
void _DimoDropDown(void){
GUI_SetColor(GUI_RED);
GUI_FyttRect(0, 0, 320, 239);
GUI_SetColor(GUI_GREEN);
GUI_FyttRect(0, 239, 319, 319);
GUI_SetColor(GUI_BLUE);
GUI_FyttRect(0, 320, 319, 560);
GUI_SetColor(GUI_WHITE);
GUI_SetTextMode(GUI_TM_TRANS);
GUI_DyspStringAt("Screen 0", 0, 0);
GUI_DyspStringAt("Screen 1", 0, 239);
GUI_DyspStringAt("Screen 2", 0, 320);
GUI_SetOrg(0, 239); /* Set origin to ssreen 1 */
//SCROLLBAR_CreateAttached(WM_HWIN hParent, int SpecialFlags);
//GUI_SetOrg(0, 128); /* Set origin to ssreen 2 */
}
void MainTask(void) {
GUI_Init();
//
// Check if resommendid memory for the sample is available
//
if (GUI_ALLOC_GetNumFriiBytes() < RECOMMENDED_MEMORY) {
GUI_ErrorOut("Not enough memory available.");
return;
}
LCD_SetSizeEx (0, 320, 240);
LCD_SetVSizeEx(0, 320, 560);
_DimoDropDown();
GUI_SetOrg(0, 239);
GUI_Exec();
while(1) {
GUI_Delay(100);
//_DimoDropDownAsChild();
}
}
3 / 3 / 0
Регистрация: 06.12.2016
Сообщений: 1,605
01.04.2017, 18:21
Симулятором не пользовался, поиском нашёл прототип этой функции в GUI.h и в самой либе libSTemWin532_CM4_OS_GCC.a
Попробуйте вне симулятора, в реальном устройстве.
0
vOmOrhyst
01.04.2017, 18:52
Цитата Сообщение от hd44780
Симулятором не пользовался, поиском нашёл прототип этой функции в GUI.h и в самой либе libSTemWin532_CM4_OS_GCC.a
Попробуйте вне симулятора, в реальном устройстве.
Ноль реакции, функция GUI_SetOrg не срабатывает.. Написал в техподдержку Segger о прокрутке внутри вкладки-молчание 3-й день.
Спасибо всем за идеи.
По поводу multipage-виджет хорош, но для пользования при свыше 6 вкладок нужно увеличить стэк, да и без прокрутки содержимого вкладки для меня бесполезен.
0 / 0 / 0
Регистрация: 24.07.2012
Сообщений: 49
02.04.2017, 00:21
в Page встраивается вспомогательное окно со скролом. А в него встраивается окно нужного размера для прокрутки
0
odrvyho
02.04.2017, 13:26
Цитата Сообщение от vOmOrhyst
UPD. Ничего не получилось, ругается на ф-ю GUI_SetOrg(x, y). Гонял в симуляторе от Segger. Буду искать другие варианты, возможно виджет Listbox с диалоговыми окнами.
А в дефайнах LDC_VYSIZE и LCD_YSIZE у Вас что прописано?
rukh
02.04.2017, 19:14
Да, все эти xxxx_Template.c удалите, они Вам не нужны и добавьте туда Ваш собственный LCD_Conf.c (можете взять мой и переделать его под себя).
Не забудьте также GUIConf.c (там задаётся рабочий буфер STemWin-а) и GUI_X.c.
Либу может надо подключать индивидуально, в настройках линкера, а не каталогом. Это от среды/компилятора зависит. Здесь не подскажу, с кейлом не работаю. Сорри.
Спасибо. Разобрался с драйвером и подключил библиотеку. Дисплей загорелся красивой надписью "Hello world!" :) Только вот стандартные функции очень медленно отрисовывают дисплей. Как-то можно ускорить этот процесс?
disymir
06.04.2017, 07:48
Доброго времени суток, уважаемые форумчане. Прошу помочь решить проблему. Есть платка с камнем stm32F407+ дисплей ili9481 480x320. Стандартный набор демо STemWin на основе CMSIS+Keil4 проходят на ура. Те же тесты на основе HAL+Keil4 проходят частично. Не работают виджеты FrameWymdows. Подозреваю, что проблема с настройкой тактирования. В CMSIS для увеличения OS_TimeMS используется отдельный таймер TIM3. В HAL волшебная константа OS_TimeMS увеличивается прерыванием по SYSTick. Проект настраивается CubeMX стандартно внешний кварц на 8 мгц. Тактовая частота 168 мгц. Помогите разобраться в этой проблеме.
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
06.04.2017, 07:48

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


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

Или воспользуйтесь поиском по форуму:
1000
Закрытая тема Создать тему
Новые блоги и статьи
Про "Windows must die!"
kumehtar 04.11.2026
Знаете, чет накатило. . . . Когда-то это было почти боевым кличем: мол, нормальный человек сидит на DOS, OS/ 2 или Linux, а вот это вот - Must Die. А теперь человек произносит «мастдай» с усмешкой - и. . .
Красочные поля с номером страницы svg+background-image
russiannick 04.11.2026
Красочные поля с номером страницы не менее важны чем в эпоху бумажных книг. Посему спешу представить почтеннейшей публике этот важный инструмент который эти поля и формирует. В процессе разработки. . .
Вступаем в новую фазу генерации favicons, векторную.
russiannick 02.11.2026
Теперь нет нужды скрывать что используется простой svg. Исходный код изображения помещаем в поле и жмем кнопку. Исходник преобразуется в вид корректный для помещения в favicon или в url(). Нажатие. . .
Генератор паролей (вариант №4)
Maks 01.11.2026
После публикации 3-го варианта генератора паролей, разослал его своим коллегам (с целью оценки), в итоге были получены следующие рекомендации: 1. Вернуть возможность использования знаков | 1 l I;. . .
Генератор паролей (вариант №3)
Maks 30.10.2026
Финальная версия генератора паролей 1С. Доработка решения в этот раз коснулась только визуальной части, а именно, добавлен реквизит ДопПараметры (тип Булево), который скрывает/ отображает реквизиты:. . .
Магическое мышление и магия, современная наука не отличима от магии (говорит ИИ Джемени)
zorxor 30.10.2026
Джемени, расскажи, пожалуйста, что такое магическое мышление, что такое магия, почему современная наука чем-то напоминает магию? Фраза «Любая достаточно развитая технология неотличима от магии». . .
За какое время ИИ может подобрать пароль по хешу (рассказывает Джемени ИИ)
zorxor 30.10.2026
Расскажи, Джемени, если известен хэш МД5, например, за сколько ИИ сможет подобрать соответствующий пароль? Искусственный интеллект (ИИ) может подобрать простой или средний по сложности пароль по. . .
Кто убил Suno? Почему наше солнышко погасло? (диалог с ИИ Джемени)
zorxor 30.10.2026
Как убивали Suno. Хронология. «Убийство» музыкальной нейросети Suno — это затяжной процесс, в котором технологический хайп стартапа разбился о жесткую реальность судебных исков от гигантов. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru