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

PLL выдает не ту частоту, что требуется (STM32F103C8T6)

23.09.2019, 22:09. Показов 7505. Ответов 45
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Все здравствуйте.
Дело в следующем.
На вышеупомянутом МК настраиваю тактирование от кварца 4.608МГц (Специальная частота кварца для работы с UART)
USART1->BRR рассчитывается как 4608000/9600 = 480.
В цикле просто через определенный промежуток времени отправляю символ "M". При таких настройках все отлично работает.

Но как только я пытаюсь затактировать МК через PLL, происходит что-то странное. При умножении PLL на 10 частота становиться не 46.080МГц как ожидается, а примерно 41.76МГц.
Выяснил я это следующим путем. При переключении на PLL в терминал вместо "М" побежали кракозяблы. Подключив осциллограф, выяснил, что стартовый бит, вместо положенных при 9600 бод 104 микросекунды, длится 116 микросекунд. Начал уменьшать постепенно USART1->BRR до тех пор, пока на осциллографе первый бит опять не стал 104мкс и в порт не пошли нормальные данные. Остановился на USART1->BRR = 4350. Умножив на 9600 получил частоту МК 41.76МГц.

Я понимаю, что это моя ошибка где-то, потому что на МК STM32f030f4 та же самая картина.
Прошу, подскажите в какую сторону рыть.

Код:

C
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
#include "stm32f10x.h"
 
 
void init_HS_Ext(void)              //настройка тактирования от внешнего кварца
{
    FLASH->ACR |= FLASH_ACR_LATENCY;
    RCC->CR|=RCC_CR_HSEON;
    while (!(RCC->CR & RCC_CR_HSERDY));
    //RCC->CFGR |= RCC_CFGR_PLLXTPRE_HSE;                       //Пределитель PLL на 1, то есть без изменений.
    //RCC->CFGR |= RCC_CFGR_PLLMULL10;                          //PLL умножаем на 10
    //RCC->CR|=RCC_CR_PLLON;                                                //Включить PLL 
    //while (!(RCC->CR & RCC_CR_PLLRDY));                       //и подождать, пока она стабилизируется
    RCC->CFGR &=~RCC_CFGR_SW;                                           //сброс переключателя SW, на всякий случай.
    RCC->CFGR |= RCC_CFGR_SW_HSE;                                   //Переключить на HSE (pll)
    RCC->CFGR |= RCC_CFGR_HPRE_DIV1;                            //AHB prescaler
    RCC->CFGR |= RCC_CFGR_PPRE1_DIV2;                           //APB1 prescaler
    RCC->CFGR |= RCC_CFGR_PPRE2_DIV1;                           //APB2 prescaler 
}
 
 void UART1_Init(void)
{
            RCC->APB2ENR    |= RCC_APB2ENR_USART1EN;    //Включаем тактирование на USART1
            USART1->BRR = 480;                                      //устанавливаем битрейт для 9600 //1920
            RCC->APB2ENR |= RCC_APB2ENR_IOPAEN;         //подаем тактирование на порт А, при инициализации UART2 этого делать уже не надо
            GPIOA->CRH |= GPIO_CRH_MODE9;                       //Выход с максимальной частотой 50Мгц*/
    GPIOA->CRH |= GPIO_CRH_CNF9_1;         // Tx CNF - 10: Альтернативная фукция, выход, подтяжка
     /*Rx,Tx setup GPIOA->CRH = 0x000004B0*/
            GPIOA->CRH &= ~(GPIO_CRH_CNF9_0);
 
            GPIOA->CRH &= ~(GPIO_CRH_MODE10);  // Rx Mode 00 Вход (reset state)
            GPIOA->CRH |= GPIO_CRH_CNF10_0;    // Rx CNF  01 Висит в воздухе (reset state)
     
            USART1->CR1  |= USART_CR1_UE | USART_CR1_TE | USART_CR1_RE | USART_CR1_RXNEIE | USART_CR1_IDLEIE; // TX ON, RX ON
            USART1->CR2 = 0;
            USART1->CR3 = 0;
            NVIC_EnableIRQ (USART1_IRQn);                       //разрешить прерывания от USART1
            __enable_irq ();                                                //разрешить глобальные прерывания
}
 
void GPIO_Init (void)
{
    RCC->APB2ENR |= RCC_APB2ENR_IOPCEN;
    GPIOC->CRH |= GPIO_CRH_MODE15_1;
    GPIOC->CRH &=~(GPIO_CRH_CNF15_0 | GPIO_CRH_CNF15_1);        //CNF[01]
}   
 
 
 
int main(void)
{
    
    init_HS_Ext();
    GPIO_Init();
    UART1_Init();
    int i;
    while(1)
    {
    GPIOC->BSRR |= GPIO_BSRR_BS15;
    USART1->DR = 'M';
    for(i=0; i<0x40000; i++);
    GPIOC->BRR |= GPIO_BRR_BR15;
    for(i=0; i<0x40000; i++);
    }
    
}
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
23.09.2019, 22:09
Ответы с готовыми решениями:

STM32F103C8T6 BluePill тактирование HSE от PLL
Всем привет! Столкнулся с проблемой, что, например, если обвязать переключение на HSE, PLL проверками, то не проходит проверку лишь...

Программа выдает не совсем то,что требуется, почему?
Вот сама программа. Нужно, чтобы созданная матрица возводилась в квадрат, но возводится только первая строчка, почему ? (После кода...

Оперативная память выдаёт частоту 1066
Память Patriot Viper 3 16 ГБ Мать Asrock 970m Pro3, вставил в A2,B2 как по мануалу. Показывает в CPU-z 558 МГц При выполнении...

45
 Аватар для _SayHello
874 / 535 / 175
Регистрация: 30.07.2015
Сообщений: 1,739
24.09.2019, 22:40
Студворк — интернет-сервис помощи студентам
locm, Да действительно. Тогда неправильная настройка системы тактирования.
0
 Аватар для COKPOWEHEU
4083 / 2681 / 432
Регистрация: 09.09.2017
Сообщений: 11,922
25.09.2019, 11:40
Цитата Сообщение от locm Посмотреть сообщение
STM32F103C8T6. Код это функция SetSysClockTo72 из system_stm32f10x.c в которой RCC_CFGR_PLLMULL9 заменен на RCC_CFGR_PLLMULL16.
Проверил. Действительно на 128 МГц запускается и ядро и даже модуль UART. Жаль под рукой нет кварца на 16 МГц, можно было бы проверить, ну да ладно.
Еще из интереса проверил STM32L151 - вот он повышенных частот не любит. По даташиту максимальная 32 МГц, так он даже на 48 МГц работать не хочет. Неудачный камень для оверклока, да.
0
 Аватар для _SayHello
874 / 535 / 175
Регистрация: 30.07.2015
Сообщений: 1,739
25.09.2019, 12:12
COKPOWEHEU, интересно, как будет работать с флэшэм на оверклоке. Обычно она достаточно чувствительна на записи.

Добавлено через 3 минуты
Bodisey, ТС, тут мне намекнули, что я неправ и 103 может в множитель больше 9 и значит ваша проблема еще не решена. Вы замерили получившуюся частоту?
Что в итоге с тактированием? Приведите текущий код настройки тактирования.
0
0 / 0 / 0
Регистрация: 22.06.2017
Сообщений: 14
25.09.2019, 12:30  [ТС]
К сожалению, получившуюся частоту и точное время первого бита смогу проверить только завтра. А код тот же самый, только множитель PLL = 9, и USART1->BRR = 4320 (9600 при 41.472МГц)

C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
void init_HS_Ext(void)              //настройка тактирования от внешнего кварца
{
    
    
    while (!(RCC->CR & RCC_CR_HSERDY));
    RCC->CFGR |= RCC_CFGR_PLLXTPRE_HSE;                     //Пределитель PLL на 1, то есть без изменений.
    RCC->CFGR |= RCC_CFGR_PLLMULL9;                         //PLL умножаем на 9
    RCC->CR|=RCC_CR_PLLON;                                              //Включить PLL 
    while (!(RCC->CR & RCC_CR_PLLRDY));                     //и подождать, пока она стабилизируется
    RCC->CFGR &=~RCC_CFGR_SW;                                           //сброс переключателя SW, на всякий случай.
    RCC->CFGR |= RCC_CFGR_SW_PLL;                                   //Переключить на HSE
    RCC->CFGR |= RCC_CFGR_HPRE_DIV1;                            //AHB prescaler
    RCC->CFGR |= RCC_CFGR_PPRE1_DIV2;                           //APB1 prescaler    
    RCC->CFGR |= RCC_CFGR_PPRE2_DIV1;                           //APB2 prescaler    
    FLASH->ACR |= FLASH_ACR_LATENCY;
    RCC->CR|=RCC_CR_HSEON;
}
0
 Аватар для COKPOWEHEU
4083 / 2681 / 432
Регистрация: 09.09.2017
Сообщений: 11,922
25.09.2019, 12:36
Цитата Сообщение от _SayHello Посмотреть сообщение
COKPOWEHEU, интересно, как будет работать с флэшэм на оверклоке. Обычно она достаточно чувствительна на записи.
На чтение проблемы вроде нет. Естественно, там стоит делитель и пока его, похоже, хватает. На запись не проверял.
Цитата Сообщение от _SayHello Посмотреть сообщение
Bodisey, ТС, тут мне намекнули, что я неправ и 103 может в множитель больше 9 и значит ваша проблема еще не решена.
Самое противное, что наши с locm эксперименты - UB. То есть то, что оно сработало у нас совершенно не значит, что оно сработает у ТСа таким же образом. Кто их ST-шек знает, вдруг именно в модели ТСа присвоение любого некорректного значения приравнивается к ближайшему правильному.
Правильное решение задачи ТСа - выставить корректный делитель и считать частоту, опираясь на него.

Добавлено через 1 минуту
Цитата Сообщение от Bodisey Посмотреть сообщение
и USART1->BRR = 4320 (9600 при 41.472МГц)
Не используйте магических чисел!
C
1
USART1->BRR = 41472000 / 9600;
0
 Аватар для _SayHello
874 / 535 / 175
Регистрация: 30.07.2015
Сообщений: 1,739
25.09.2019, 12:41
Bodisey,
Еще не выбран источник тактирования PLL.
C
1
RCC->CFGR |= RCC_CFGR_PLLSRC;
По умолчанию источником вроде выбирается HSI/2.

Добавлено через 3 минуты
COKPOWEHEU, Нет locm правильно сказал, в даташите два раздела для RCC. Для Connectivity line и для всех остальных. Я ТСа неосмотрительно послал в раздел для CL. Там и правда согласно документации, самый большой множитель 9. (однако там несколько PLL, если я правильно помню f107). У автора же MD серия, там по документации делители доступны до 16. Правда есть приписочк, что не должна выходная частота превышать 72 МГц. Таким образом множители доступны, просто неправильная инициализация модуля.
0
0 / 0 / 0
Регистрация: 22.06.2017
Сообщений: 14
25.09.2019, 12:42  [ТС]
Цитата Сообщение от COKPOWEHEU Посмотреть сообщение
вдруг именно в модели ТСа
Как уже писал выше, на SSTM32f030f4 таже самая картина, поэтому это точно где-то мое упущение.

Цитата Сообщение от COKPOWEHEU Посмотреть сообщение
Не используйте магических чисел!
Да я стараюсь комментировать все подробно))

Цитата Сообщение от _SayHello Посмотреть сообщение
По умолчанию источником вроде выбирается HSI/2.
Сейчас проверю
0
Эксперт по электронике
6808 / 3233 / 337
Регистрация: 28.10.2011
Сообщений: 12,626
Записей в блоге: 7
25.09.2019, 13:00
C
1
USART1->BRR = (SystemCoreClock + 9600 / 2) / 9600;
Перед этим нужно вызвать SystemCoreClockUpdate и в дефайне HSE_VALUE из файла stm32f10x.h указать частоту кварца.

Про расчет значения регистра BRR написано в RM на страницах 803, 804. Структура регистра на странице 825. В него нужно записывать число с фиксированной точкой.
0
0 / 0 / 0
Регистрация: 22.06.2017
Сообщений: 14
25.09.2019, 13:32  [ТС]
Цитата Сообщение от _SayHello Посмотреть сообщение
Еще не выбран источник тактирования PLL.
CВыделить код
1
RCC->CFGR |= RCC_CFGR_PLLSRC;
По умолчанию источником вроде выбирается HSI/2.
Выбран PLL, иначе бы изменение множителя не сказывалось бы на работу МК.


Цитата Сообщение от locm Посмотреть сообщение
CВыделить код
1
USART1->BRR = (SystemCoreClock + 9600 / 2) / 9600;
Перед этим нужно вызвать SystemCoreClockUpdate и в дефайне HSE_VALUE из файла stm32f10x.h указать частоту кварца.
С Вашей магической формулой длина бита стала 210 мкс и отлично принимается на скорости 4800.
0
 Аватар для _SayHello
874 / 535 / 175
Регистрация: 30.07.2015
Сообщений: 1,739
25.09.2019, 13:36
Bodisey,
Цитата Сообщение от Bodisey Посмотреть сообщение
Выбран PLL, иначе бы изменение множителя не сказывалось бы на работу МК.
PLL то включен. А вот что приходит на вход PLL? Если без
C
1
RCC->CFGR |= RCC_CFGR_PLLSRC;
То на вход PLL придет HSI / 2. То есть 4 МГц, и они пройдут через множитель.

Добавлено через 1 минуту
Условно с HSE 8 МГц - разница сразу бы видна была. А так как у вас HSE 4.608 МГц - разница может быть не так заметна
0
0 / 0 / 0
Регистрация: 22.06.2017
Сообщений: 14
25.09.2019, 13:50  [ТС]
А вообще есть разница в какой последовательности настраивать тактирование? Можно ли вначале настроить все делители, затем выбирать источники, затем все включить, или надо двигаться постепенно: выбрали HSE, установили пределитель для PLL, выбрали источник для PLL, включили PLL, включили множитель PLL и так далее?
0
 Аватар для _SayHello
874 / 535 / 175
Регистрация: 30.07.2015
Сообщений: 1,739
25.09.2019, 13:55
Bodisey, надо поискать в даташите, я обычно придерживаюсь такой схемы:
1)Включил HSE -> подождал пока установится.
2) Настроил делители/множители PLL
3) Настроил делители/множители системных шин
4) Настроил тактирование PLL от HSE
5) Включил PLL -> подождал пока установится
6) НАстроил тактирование системной шины от PLL
0
Эксперт по электронике
6808 / 3233 / 337
Регистрация: 28.10.2011
Сообщений: 12,626
Записей в блоге: 7
25.09.2019, 21:24
Цитата Сообщение от Bodisey Посмотреть сообщение
С Вашей магической формулой длина бита стала 210 мкс и отлично принимается на скорости 4800.
Что в SystemCoreClock?
0
0 / 0 / 0
Регистрация: 22.06.2017
Сообщений: 14
26.09.2019, 05:06  [ТС]
Значит так. Как посоветовал shepard127, задействовал вывод МСО. Результат такой:
Цепочка HSE -> MCO частота равна 4.60841 МГц
Цепочка HSE -> System Clock Mux -> SYSCLK -> MCO частота равна 4.60841 МГц
Цепочка HSE -> PLL_DEV -> PLL Source Mux -> PLLMul -> PLLCLK -> /2 -> MCO частота равна 20.7378 МГц. И, что интересно, в этом случае частота не реагирует на изменения ни пределителя ПЛЛ, ни множителя.
Миниатюры
PLL выдает не ту частоту, что требуется (STM32F103C8T6)   PLL выдает не ту частоту, что требуется (STM32F103C8T6)  
0
0 / 0 / 0
Регистрация: 22.06.2017
Сообщений: 14
26.09.2019, 11:24  [ТС]
ВСЁ!!! Решил проблему. Решение было в файле system_stm32f10x.c.

C
1
2
3
4
5
6
7
8
9
10
11
#if defined (STM32F10X_LD_VL) || (defined STM32F10X_MD_VL) || (defined STM32F10X_HD_VL)
/* #define SYSCLK_FREQ_HSE    HSE_VALUE */
 #define SYSCLK_FREQ_24MHz  24000000
#else
#define SYSCLK_FREQ_HSE    HSE_VALUE
/* #define SYSCLK_FREQ_24MHz  24000000 */ 
/* #define SYSCLK_FREQ_36MHz  36000000 */
/* #define SYSCLK_FREQ_48MHz  48000000 */
/* #define SYSCLK_FREQ_56MHz  56000000 */
//#define SYSCLK_FREQ_72MHz  72000000
#endif
Закомментировал строку #define SYSCLK_FREQ_72MHz 72000000 и раскомментировал #define SYSCLK_FREQ_HSE HSE_VALUE, в main.c добавил два дефайна: #define __STM32F10X_MD и #define __HSE_VALUE 4608000. Теперь кристалл реагирует на смену настроек PLL и выдает нужную частоту, и соответственно тайминг битов UART, 104 мкс при скорости 9600.

Всем спасибо за помощь!!!
Миниатюры
PLL выдает не ту частоту, что требуется (STM32F103C8T6)   PLL выдает не ту частоту, что требуется (STM32F103C8T6)   PLL выдает не ту частоту, что требуется (STM32F103C8T6)  

0
Эксперт по электронике
6808 / 3233 / 337
Регистрация: 28.10.2011
Сообщений: 12,626
Записей в блоге: 7
26.09.2019, 12:57
Цитата Сообщение от Bodisey Посмотреть сообщение
И, что интересно, в этом случае частота не реагирует на изменения ни пределителя ПЛЛ, ни множителя.
Знаете почему? Вы пытаетесь изменить настройку работающего умножителя. Сначала нужно его отключить, изменить настройки и после включить. Прочитайте http://purebasic.mybb.ru/viewtopic.php?id=583
Но есть один нюанс - на момент начала выполнения функции Overclocking() умножитель частоты уже активен и через него тактируется ядро МК с периферией, а значит просто так поменять множитель не получится.
Цитата Сообщение от Bodisey Посмотреть сообщение
в main.c добавил два дефайна: #define __STM32F10X_MD и #define __HSE_VALUE 4608000.
Без этих строк не работает?
0
0 / 0 / 0
Регистрация: 22.06.2017
Сообщений: 14
26.09.2019, 13:02  [ТС]
Цитата Сообщение от locm Посмотреть сообщение
Знаете почему? Вы пытаетесь изменить настройку работающего умножителя. Сначала нужно его отключить, изменить настройки и после включить.
Ну я же не во время работы меняю настройки, а прошиваю заново МК и стартую уже с новыми настройками.


Цитата Сообщение от locm Посмотреть сообщение
Без этих строк не работает?
Да, собственно, работает...
0
Эксперт по электронике
6808 / 3233 / 337
Регистрация: 28.10.2011
Сообщений: 12,626
Записей в блоге: 7
26.09.2019, 13:07
Цитата Сообщение от Bodisey Посмотреть сообщение
Ну я же не во время работы меняю настройки
Разве? Настройки меняет код? Он выполняется при прошивке?
0
0 / 0 / 0
Регистрация: 22.06.2017
Сообщений: 14
26.09.2019, 13:28  [ТС]
Добавлено через 49 секунд
Цитата Сообщение от locm Посмотреть сообщение
Разве? Настройки меняет код? Он выполняется при прошивке?
О чем вы вообще говорите, не пойму. Вот, допустим, вот эта строка кода что делает?
C
1
RCC->CFGR |= RCC_CFGR_PLLMULL9;
0
Эксперт по электронике
6808 / 3233 / 337
Регистрация: 28.10.2011
Сообщений: 12,626
Записей в блоге: 7
26.09.2019, 14:06
Цитата Сообщение от Bodisey Посмотреть сообщение
О чем вы вообще говорите, не пойму.
О том что система тактирования настраивалась до вызова функции main пока вы не закомментировали #define SYSCLK_FREQ_72MHz 72000000 Изменять коэффициент умножения работающего блока PLL нельзя. Его нужно отключить перед этим.

Цитата Сообщение от Bodisey Посмотреть сообщение
Вот, допустим, вот эта строка кода что делает?
Задает коэффициент умножения PLL. Умножитель при этом должен быть отключен.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
26.09.2019, 14:06
Помогаю со студенческими работами здесь

Выход USB 6 В и более. Или что то с STM32f103c8t6
Доброго времени суток всем кто читает это сообщение. Друзья. Коллеги. Нужно ваше мнение по поводу следующей ситуации. Для...

Что не так с шаблоном функции. Выдает: "для индекса требуется массив или тип указателя"
#include &lt;iostream&gt; using namespace std; template &lt;typename T&gt; void zapolnenie(T i, T a, T arr) { for (i = 0; i &lt; a; i++) { ...

Видеокарта выдает большую частоту чем заявлено производителем
Видеокарта выдает большую частоту чем заявлено производителем. С чем это может быть связанно? Стоит ли обратиться в магазин?

Что делать, если не получается подключиться к STM32F103C8T6 с Linux, ST-LINK v2?
Всем привет. В общем, мучаюсь, не получается ни прочитать, ни записать, ни обнулить прошивку на STM32F103C8T6 (blue pill) Сама плата...

Ga-7vt600 rz-c s-t a atlon xp 2200+ : в биосе выдает частоту в 2,3 мгц, а в виндовс 1,8
подскажите почему в биосе выдает чястату в 2,3 мгц в в виндовс 1,8 и как ето все можно паригулировать и почему в биосе все даные...


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

Или воспользуйтесь поиском по форуму:
40
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Синхронизация спрайтов SDL3 и тел Box2D
8Observer8 04.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-sync-physics-sprites-sdl3-c. zip На первой гифке отладочные линии отключены, а на второй включены:. . .
SDL3 для Web (WebAssembly): Идентификация объектов на Box2D v3 - использование userData и событий коллизий
8Observer8 02.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-collision-events-sdl3-c. zip https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11680&amp;d=1772460536 Одним из. . .
Реалии
Hrethgir 01.03.2026
Нет, я не закончил до сих пор симулятор. Эта задача сложнее. Не получилось уйти в плавсостав, но оно и к лучшему, возможно. Точнее получалось - но сварщиком в палубную команду, а это значит, в моём. . .
Ритм жизни
kumehtar 27.02.2026
Иногда приходится жить в ритме, где дел становится всё больше, а вовлечения в происходящее — всё меньше. Плотный график не даёт вниманию закрепиться ни на одном событии. Утро начинается с быстрых,. . .
SDL3 для Web (WebAssembly): Сборка библиотек: SDL3, Box2D, FreeType, SDL3_ttf, SDL3_mixer и SDL3_image из исходников с помощью CMake и Emscripten
8Observer8 27.02.2026
Недавно вышла версия 3. 4. 2 библиотеки SDL3. На странице официальной релиза доступны исходники, готовые DLL (для x86, x64, arm64), а также библиотеки для разработки под Android, MinGW и Visual Studio. . . .
SDL3 для Web (WebAssembly): Реализация движения на Box2D v3 - трение и коллизии с повёрнутыми стенами
8Observer8 20.02.2026
Содержание блога Box2D позволяет легко создать главного героя, который не проходит сквозь стены и перемещается с заданным трением о препятствия, которые можно располагать под углом, как верхнее. . .
Конвертировать закладки radiotray-ng в m3u-плейлист
damix 19.02.2026
Это можно сделать скриптом для PowerShell. Использование . \СonvertRadiotrayToM3U. ps1 <path_to_bookmarks. json> Рядом с файлом bookmarks. json появится файл bookmarks. m3u с результатом. # Check if. . .
Семь CDC на одном интерфейсе: 5 U[S]ARTов, 1 CAN и 1 SSI
Eddy_Em 18.02.2026
Постепенно допиливаю свою "многоинтерфейсную плату". Выглядит вот так: https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11617&stc=1&d=1771445347 Основана на STM32F303RBT6. На борту пять. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru