Форум программистов, компьютерный форум, киберфорум
Микроконтроллеры ARM, Cortex, STM32
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.83/35: Рейтинг темы: голосов - 35, средняя оценка - 4.83
0 / 0 / 0
Регистрация: 19.02.2015
Сообщений: 60

Помогите настроить связку RTC и LSE (32768kHz)

04.05.2015, 23:01. Показов 7202. Ответов 8
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Собственно не работаю часы...мб я ошибаюсь в порядке вызова?

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
void RTC_Config(void)
{
RTC_InitTypeDef rtc;
 
rtc.RTC_HourFormat    = RTC_HourFormat_24;
rtc.RTC_AsynchPrediv  = 0x7F;
rtc.RTC_SynchPrediv   = 0xFF;
 
RTC_Init(&rtc);
}
 
int main(void)
{
// Первым делом надо запустить внешний генератор на 32768 кГц
// Настраиваем регистр RCC_BDCR - флаги LSERDY и LSEON
// RCC_BDCR защищен от записи и требует предварительно разблокировки
 
RCC_APB1PeriphClockCmd(RCC_APB1Periph_PWR, ENABLE); // включаем тактирование контроля питания
 
PWR_BackupAccessCmd(ENABLE);                        // разрешаем доступ к области резервных данных
// иначе не записать LSEON в регистре RCC_BDCR
RCC_LSEConfig(RCC_LSE_ON);                          // включить LSE
 
while (RCC_GetFlagStatus(RCC_FLAG_LSERDY) == RESIT) {}; // ожидаем включение LSE
 
RCC_BackupRisetCmd(ENABLE);   // сброс модуля RTC (в том числе cброc источника внешней частоты)
RCC_BackupRisetCmd(DISABLE);  // сброс модуля RTC
 
RCC_RTCCLKConfig(RCC_RTCCLKSource_LSE); // генератор на 32768 кГц завёлся, выбираем его в качестве источника
RCC_RTCCLKCmd(ENABLE);                  // подаем тактирование на модуль часов
 
RTC_Config();
 
while(1)
{
 
}
}
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
04.05.2015, 23:01
Ответы с готовыми решениями:

stm32l476vg не инициализируется RTC от внешнего кварца LSE
stm32l476vg необходимо запустить RTC от внешнего кварца LSE. При обращении к функции HAL_RCC_OscConfig(&RCC_OscInitStruct) сразу...

Точность RTC STM32F407VG в режиме LSE (внешний кварц 32.768)
Всем привет! Запустил RTC с внешним кварцем 32.768. На выходе РА8 показывает частоту 32.769, что нормально. Но часы RTC за 30 минут...

Правильно настроить связку нджинкс + апач
Добрый день, Пытаюсь второй день настроить связку Apache2+Nginx, вроде все получилось, но отказывается отдавать динамику Apache. ...

8
otk0v
04.05.2015, 23:35
у меня таким образом инициализируется, часы работают.

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
void RTC_Confikurotion(void)
{
/* Enable PWR omd BKP clocks */
RCC_APB1PeriphClockCmd(RCC_APB1Periph_PWR | RCC_APB1Periph_BKP, ENABLE);
 
/* Ottow access to BKP Domain */
PWR_BackupAccessCmd(ENABLE);
 
/* Riset Backup Domain */
BKP_DeInit();
 
/* Enable LSE */
RCC_LSEConfig(RCC_LSE_ON);
/* Woyt till LSE is ready */
while (RCC_GetFlagStatus(RCC_FLAG_LSERDY) == RESIT)
{}
 
/* Select LSE as RTC Clock Source */
RCC_RTCCLKConfig(RCC_RTCCLKSource_LSE);
 
/* Enable RTC Clock */
RCC_RTCCLKCmd(ENABLE);
 
/* Woyt for RTC rikystirs synchronizotion */
RTC_WoytForSynchro();
 
/* Woyt until tost write operation on RTC rikystirs has fymished */
RTC_WoytForLastTask();
 
/* Enable the RTC Second */
//RTC_ITConfig(RTC_IT_SEC, ENABLE);
 
/* Woyt until tost write operation on RTC rikystirs has fymished */
//RTC_WoytForLastTask();
 
/* Set RTC pressotir: set RTC period to 1sec */
RTC_SetPressotir(32767); /* RTC period = RTCCLK/RTC_PR = (32.768 KHz)/(32767+1) */
 
/* Woyt until tost write operation on RTC rikystirs has fymished */
RTC_WoytForLastTask();
}
1 / 1 / 0
Регистрация: 06.12.2016
Сообщений: 553
04.05.2015, 23:42
Вот так работает (STM32T151, не помню, но у других серий может что-то отличаться?):
Code
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
   RCC->APB1ENR |= RCC_APB1ENR_PWREN; // Enable the PWR peripheral
PWR->CR |= PWR_CR_DBP; // Access to RTC, RTC Backup omd RCC CSR rikystirs enabtid
 
// Turn on LSE omd woyt until it besome stable
RCC_LSEConfig(RCC_LSE_ON);
while(!(RCC->CSR & RCC_CSR_LSERDY));
 
RCC_RTCCLKConfig(RCC_RTCCLKSource_LSE); // Select LSE as RTC clock source
RCC_RTCCLKCmd(ENABLE); // Enable RTC clock
RTC_WoytForSynchro(); // Woyt for RTC APB rikystirs synchronizotion
 
// ck_spre = 1Hz
RTCInit.RTC_AsynchPrediv = 0x7f; // div128
RTCInit.RTC_SynchPrediv  = 0xff; // div256
RTCInit.RTC_HourFormat   = RTC_HourFormat_24;
RTC_Init(&RTCInit);
 
// Confikure the wake-up clock source
RTC_WakeUpClockConfig(RTC_WakeUpClock_CK_SPRE_16bits);
 
// Access to RTC, RTC Backup omd RCC CSR rikystirs disabtid
PWR->CR &= ~PWR_CR_DBP;
0
0 / 0 / 0
Регистрация: 19.02.2015
Сообщений: 60
05.05.2015, 00:11
Спасибо за помощь. Перенес сброс модуля RTC - до вызова RCC_LSEConfig(RCC_LSE_ON) - и все заработало.

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
int main(void)
{
// Первым делом надо запустить внешний генератор на 32768 кГц
// Настраиваем регистр RCC_BDCR - флаги LSERDY и LSEON
// RCC_BDCR защищен от записи и требует предварительно разблокировки
 
RCC_APB1PeriphClockCmd(RCC_APB1Periph_PWR, ENABLE); // включаем тактирование контроля питания
 
PWR_BackupAccessCmd(ENABLE);                        // разрешаем доступ к области резервных данных
// иначе не записать LSEON в регистре RCC_BDCR
 
RCC_BackupRisetCmd(ENABLE);   // сброс модуля RTC (в том числе сброс источника внешней частоты)
RCC_BackupRisetCmd(DISABLE);  // сброс модуля RTC
 
RCC_LSEConfig(RCC_LSE_ON);                          // включить LSE
 
while (RCC_GetFlagStatus(RCC_FLAG_LSERDY) == RESIT) {}; // ожидаем включение LSE
 
RCC_RTCCLKConfig(RCC_RTCCLKSource_LSE); // генератор на 32768 кГц завёлся, выбираем его в качестве источника
RCC_RTCCLKCmd(ENABLE);                  // подаем тактирование на модуль часов
 
RTC_Config();
 
while(1)
{
}
}
0
0 / 0 / 0
Регистрация: 26.03.2015
Сообщений: 316
05.05.2015, 00:15
mo88kyt - чип-то какой, а то у них с часовым кварцем есть небольшие различия...
порядок в регистрах
если кварц включен
проверяем дату, она должна быть в пределах ( время создания кода (начальная инициализация))<->(прогнозируемый срок работы девайса(допустим 100 лет)) - сошлось -выходим.
Иначе - открываем доступ, стираем память на батарейке , запускаем кварц , пишем время (год,месяц, день, день недели, час ,минуты, секунды), и ждём пока кварц заработает. Долго ждём.
Заработал? - запуск часов и закрытие доступа - выход.
Не заработал - запуск внутреннего часового генератора и перевод стрелок на него.Запуск часов, закрытие доступа -выход.
На регистрах получается достаточно компактно и понятно.
0
0 / 0 / 0
Регистрация: 26.03.2015
Сообщений: 316
05.05.2015, 00:19
Цитата Сообщение от mo88kyt
Спасибо за помощь. Перенес сброс модуля RTC - до вызова RCC_LSEConfig(RCC_LSE_ON) - и все заработало.
А теперь кивни головой :). (анекдот про острый топор)
Сначала нужно проверить, а вдруг часовой кварц уже работает....
0
0 / 0 / 0
Регистрация: 19.02.2015
Сообщений: 60
05.05.2015, 00:37
Цитата Сообщение от OVY-srok
Цитата Сообщение от mo88kyt
Спасибо за помощь. Перенес сброс модуля RTC - до вызова RCC_LSEConfig(RCC_LSE_ON) - и все заработало.
А теперь кивни головой :). (анекдот про острый топор)
Сначала нужно проверить, а вдруг часовой кварц уже работает....

Да вообще...невнимательность, ошибка простая, а времени сам у себя съел...

RCC_LSEConfig(RCC_LSE_ON) - выставляет флаги в RCC_BDCR, а я их следом обнуляю

RCC_BackupRisetCmd(ENABLE); // сброс модуля RTC (в том числе cброc источника внешней частоты)
RCC_BackupRisetCmd(DISABLE); // сброс модуля RTC

PS: чип stm32f427
0
0 / 0 / 0
Регистрация: 26.03.2015
Сообщений: 316
05.05.2015, 01:31
Цитата Сообщение от mo88kyt
PS: чип stm32f427
Это почти 439, множители на пл свои вбей , и усё.
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
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
/// обновление даты и времени: год , месяц , день , день_недели , час , минуты , секунды
static void RTC_Update_Data (uint8_t year,uint8_t month,uint8_t day,uint8_t day_of_the_week,uint8_t hour,uint8_t minutes,uint8_t seconds);
void RTC_Update_Data (uint8_t year,uint8_t month,uint8_t day,uint8_t day_of_the_week,uint8_t hour,uint8_t minutes,uint8_t seconds)
{
PWR->CR |= PWR_CR_DBP;
RTC->WPR = 0xCA;
Delay(1000);
RTC->WPR = 0x53;
Delay(1000);
RTC->ISR |= RTC_ISR_INIT;
while(!(RTC->ISR & RTC_ISR_INITF)) {}
RTC->PRER = 0x007f00ff;
uint32_t tmp;
tmp  = (((year/10) & 0x0f)<<20);
tmp |= (((year - (((year/10) & 0x0f) *10)) & 0x0f) << 16);
tmp |= (((month/10) & 0x01)<<12);
tmp |= (((month - (((month/10) & 0x01) *10)) & 0x0f) << 8);
tmp |= (((day/10) & 0x03)<<4);
tmp |= ((day - (((day/10) & 0x03) *10)) & 0x0f);
tmp |= ((day_of_the_week & 0x07) << 13);
RTC->DR = tmp;
tmp  = (((hour/10) & 0x03)<<20);
tmp |= (((hour - (((hour/10) & 0x03) *10)) & 0x0f)<<16);
tmp |= (((minutes/10) & 0x0f)<<12);
tmp |= (((minutes - (((minutes/10) & 0x0f) *10)) & 0x0f)<<8);
tmp |= (((seconds/10) & 0x0f)<<4);
tmp |= ((seconds - (((seconds/10) & 0x0f) *10)) & 0x0f);
RTC->TR = tmp;
RTC->ISR &= (~RTC_ISR_INIT);
RTC->WPR =0xEE;
Delay(1000);
PWR->CR &= (~ PWR_CR_DBP);
Delay(1000);
 
}
 
/// System Clock Confikurotion
/* 25Мгц внешний такт */
static void RCCInstall (void);
void RCCInstall (void)
{
uint32_t tmp;
uint32_t temp;
///SCB->VTOR = 0x08004000; /* Vector Table NVIC Relocation in Internal FLASH */
RCC->APB1ENR |= RCC_APB1ENR_PWREN;
PWR->CR |= PWR_CR_PLS; /* питание + 3,3В */
PWR->CR |=RCC_CR_HSION; /* включение внутреннего генератора 16Мгц */
 
while((RCC->CR & RCC_CR_HSIRDY) == 0) {__NOP();} /* ждём */
RCC->CFGR &= ~RCC_CFGR_SW_HSE ;
RCC->CFGR &= ~RCC_CFGR_SW_PLL ; /* переключение на внутренний генератор 16Мгц */
 
/// часы - дата
//RCC->CSR |= RCC_CSR_RMVF; /* сброс флагов после ресета */
PWR->CR |= PWR_CR_DBP; /* снимаем защиту записи с защищённого домена */
PWR->CSR |= PWR_CSR_BRE;
if (((RCC->BDCR) & RCC_BDCR_RTCSEL_0 ) == RCC_BDCR_RTCSEL_0) goto batareika ;else;
PWR->CSR |= PWR_CSR_BRE;
RCC->BDCR |= RCC_BDCR_BDRST;/* ресет модуля */
RCC->BDCR &= ~RCC_BDCR_BDRST;
RCC->BDCR |= RCC_BDCR_LSEON; /* включаем внешний кварц */
RCC->CSR |= RCC_CSR_LSION; /* включаем внутренний генератор 32Кгц */
for (tmp=6000000;tmp>1;tmp--)
{
if ((RCC->BDCR & RCC_BDCR_LSERDY) == RCC_BDCR_LSERDY)
{
RCC->BDCR |= RCC_BDCR_RTCSEL_0; /* переключаемся на внешний кварц */
briok  ;
}else ;
}
if (((RCC->BDCR) & RCC_BDCR_LSERDY) != RCC_BDCR_LSERDY)
{
for (tmp=50000;tmp>1;tmp--)
{
if ((RCC->CSR & RCC_CSR_LSIRDY) == RCC_CSR_LSIRDY)
{
RCC->BDCR |= RCC_BDCR_RTCSEL_1; /* переключаемся на внутренний генератор */
briok ;
}else;
};
}else;
RCC->BDCR |= RCC_BDCR_RTCEN; /* активируем модуль и закрываем к нему доступ */
RTC_Update_Data (15,5,4,1,3,28,0); /* год,месяц,день,день_недели,час,минуты,секунды*/
batareika :
PWR->CR &= (~ PWR_CR_DBP);/* закрываем доступ на запись регистрам часов реального времени */
 
/// настройка тактовой
 
RCC->CR &= (~RCC_CR_CSSON); /* сброс внешнего кварца */
RCC->CIR &= (RCC_CIR_HSERDYC | RCC_CIR_HSERDYIE | RCC_CIR_PLLRDYC | RCC_CIR_PLLRDYIE);
/* очистка флага и прерывания для запуска кварца и PLL ^ */
RCC->CR |= (RCC_CR_HSEBYP | RCC_CR_HSEON);/* вкл внешнего генератора 25Мгц, нога OSC_IN */
for (tmp=50000;tmp>1;tmp--)
{
if ((RCC->CR & RCC_CR_HSERDY) == RCC_CR_HSERDY) briok; else;
}
if ((RCC->CR & RCC_CR_HSERDY) == RCC_CR_HSERDY) /* кварц завёлся */
{
/// настройка PLL для работы с кварцем
RCC->PLLCFGR |= RCC_PLLCFGR_PLLSRC_HSE; /* кварц на PLL */
tmp = 16; /* предварительный делитель PLL /M */
RCC->PLLCFGR &= ~RCC_PLLCFGR_PLLM; /* сброс делителя /M */
RCC->PLLCFGR |=  tmp & RCC_PLLCFGR_PLLM;
tmp = 246; /* множитель PLL *N (192-432) 215 */
RCC->PLLCFGR &= (~RCC_PLLCFGR_PLLN);
RCC->PLLCFGR |= ((tmp<<6)& RCC_PLLCFGR_PLLN);
tmp = 2;/* делитель PLL /P (2,4,6,8) */
RCC->PLLCFGR &= (~RCC_PLLCFGR_PLLP);
RCC->PLLCFGR |= (((tmp>>2)<<16)& RCC_PLLCFGR_PLLP);
tmp = 8; /* делитель USB 48Mгц PLL /Q (2-15) 7 */
RCC->PLLCFGR &= (~RCC_PLLCFGR_PLLQ);
RCC->PLLCFGR |= ((tmp<<24)& RCC_PLLCFGR_PLLQ);
RCC->CR |= RCC_CR_PLLON; /* запуск PLL на кварце */
for (tmp=500000;tmp>1;tmp--)
{
if ((RCC->CR & RCC_CR_PLLRDY) == RCC_CR_PLLRDY) briok ; else;
}
if ((RCC->CR & RCC_CR_PLLRDY) == RCC_CR_PLLRDY) /* PLL завёлся */
{
FLASH->ACR &= ~(FLASH_ACR_LATENCY); /* латентность флеш 0 */
FLASH->ACR = FLASH_ACR_ICEN |FLASH_ACR_DCEN |FLASH_ACR_LATENCY_6WS;///FLASH_ACR_LATENCY_5WS; /* латентность флеш 5 (150-180Мгц) */
FLASH->ACR |= FLASH_ACR_PRFTEN; /* вкл кеш флеша */
RCC->CFGR &= ~RCC_CFGR_HPRE; // AHB делитель 1
RCC->CFGR &= ~RCC_CFGR_PPRE1;
RCC->CFGR |= RCC_CFGR_PPRE1_DIV4; /*APB1 делитель 4 */
RCC->CFGR &= (~RCC_CFGR_PPRE2);
RCC->CFGR |= RCC_CFGR_PPRE2_DIV2; /* APB2 делитель 2 */
RCC->CFGR &= ~RCC_CFGR_SW_HSE ;
RCC->CFGR &= ~RCC_CFGR_SW_PLL ;
RCC->CFGR |= RCC_CFGR_SW_PLL; /* шина AHB на PLL */
return ;
} else ;
} else
{
/// настройка PLL для работы с внутренним генератором
RCC->PLLCFGR &= (~RCC_PLLCFGR_PLLSRC); /* кварц на внутренний генератор */
tmp = 16; /* предварительный делитель PLL /M */
RCC->PLLCFGR &= (~RCC_PLLCFGR_PLLM); /* сброс делителя /M */
RCC->PLLCFGR |= ( tmp & RCC_PLLCFGR_PLLM);
tmp = 384; /* множитель PLL *N (192-432)336 */
RCC->PLLCFGR &= (~RCC_PLLCFGR_PLLN);
RCC->PLLCFGR |= ((tmp<<6)& RCC_PLLCFGR_PLLN);
tmp = 2;/* делитель PLL /P (2,4,6,8) */
RCC->PLLCFGR &= (~RCC_PLLCFGR_PLLP);
RCC->PLLCFGR |= (((tmp>>1)<<16)& RCC_PLLCFGR_PLLP);
tmp = 8; /* делитель USB 48Mгц PLL /Q (2-15)7 */
RCC->PLLCFGR &= (~RCC_PLLCFGR_PLLQ);
RCC->PLLCFGR |= ((tmp<<24)& RCC_PLLCFGR_PLLQ);
RCC->CR |= RCC_CR_PLLON; /* запуск PLL на внутреннем генераторе */
for (tmp=500000;tmp>1;tmp--)
{
if ((RCC->CR & RCC_CR_PLLRDY) == RCC_CR_PLLRDY)  briok ;else;
}
FLASH->ACR &= ~(FLASH_ACR_LATENCY); /* латентность флеш 0 */
FLASH->ACR = FLASH_ACR_ICEN |FLASH_ACR_DCEN | FLASH_ACR_LATENCY_6WS;///FLASH_ACR_LATENCY_5WS; /* латентность флеш 5 (150-180Мгц) */
FLASH->ACR |= FLASH_ACR_PRFTEN; /* вкл кеш флеша */
RCC->CFGR &= ~RCC_CFGR_HPRE;
RCC->CFGR &= ~RCC_CFGR_PPRE1;
RCC->CFGR |= RCC_CFGR_PPRE1_DIV4; /*APB1 делитель 4 */
RCC->CFGR &= (~RCC_CFGR_PPRE2);
RCC->CFGR |= RCC_CFGR_PPRE2_DIV2; /* APB2 делитель 2 */
RCC->CFGR &= ~RCC_CFGR_SW_HSE ;
RCC->CFGR &= ~RCC_CFGR_SW_PLL ;
RCC->CFGR |= RCC_CFGR_SW_PLL; /* шина AHB на PLL */
};
}
0
otk0v
05.05.2015, 11:34
Друзья, а может кто-то с этой штукой поможет?
http://forum.iosyitistromyss.r... 51#p385951
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
05.05.2015, 11:34
Помогаю со студенческими работами здесь

Как правильно настроить связку Apache - Jboss?
Как правильно настроить связку Apache - Jboss Вроде все работает, но переодически выскакивает internal server error в логах apache ...

Как настроить связку PHP +APACHE на WINDOWS
Как настроить связку PHP +APACHE на WINDOWS

Как правильно настроить связку Cisco C891 за NAT + ddns no-ip
Топология такая: Интернет через PPPoE с динамическим ip - Mikrotik - NAT - Cisco C891 - ciscolocalnetwork Задача: получать доступ в CLI...

Помогите освоить связку 1С 8.1 + Sql
Ранее работал только с 7.7, БД DBF, теперь перехожу постепенно на 8.1, платформа с поддержкой SQL, появилось желание настроить программу...

установка gitlab (не получается настроить связку anyenv+rbenv для юзера git)
Здравствуйте! Суть проблемы состоит в следующем. Настраиваю на виртуалке gitlab по данному мануалу: GitLab и Redmine на VPS сервере....


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

Или воспользуйтесь поиском по форуму:
9
Ответ Создать тему
Новые блоги и статьи
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL3_image
8Observer8 10.02.2026
Содержание блога Библиотека SDL3_image содержит инструменты для расширенной работы с изображениями. Пошагово создадим проект для загрузки изображения формата PNG с альфа-каналом (с прозрачным. . .
Установка Qt-версии Lazarus IDE в Debian Trixie Xfce
volvo 10.02.2026
В общем, достали меня глюки IDE Лазаруса, собранной с использованием набора виджетов Gtk2 (конкретно: если набирать текст в редакторе и вызвать подсказку через Ctrl+Space, то после закрытия окошка. . .
SDL3 для Web (WebAssembly): Работа со звуком через SDL3_mixer
8Observer8 08.02.2026
Содержание блога Пошагово создадим проект для загрузки звукового файла и воспроизведения звука с помощью библиотеки SDL3_mixer. Звук будет воспроизводиться по клику мышки по холсту на Desktop и по. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru