Візуалізація можливостей: графічний генератор коду STM32CubeMX

  1. Переваги та недоліки генераторів коду і використання бібліотек
  2. можливості STM32CubeMX
  3. Приклад створення проекту на основі МК STM32L0
  4. Налаштування висновків
  5. Налаштування тактирования
  6. Налаштування периферії
  7. розрахунок споживання
  8. генерація проекту
  9. Висновок
  10. література
  11. Про компанію ST Microelectronics

До сих пір середовища розробки для мікроконтролерів значно поступалися спеціалізованим середах розробки прикладного ПЗ. Але візуальний редактор конфігурації і генератора коду STM32CubeMX , Пропонований STMicroelectronics, дозволяє здійснювати тонку автоматизовану настройку ініціалізації і генерувати базові проекти. Стаття покроково описує створення такого проекту для мікроконтролера STM32L0 з низьким енергоспоживанням.

Засоби автоматизації, пов'язані з процесом створення програмного забезпечення, дозволяють значно скоротити час, що витрачається на рішення типових проблем при реалізації проекту. У таких випадках використовуються загальноприйняті практики програмування, засновані на досвіді широкого кола розробників, що дозволяє швидко створити базу для подальшого проектування.

Особливу популярність і поширення подібні засоби отримали серед розробників додатків для бізнесу, мобільних і настільних додатків. Найчастіше середовища розробки, які використовуються в даному сегменті, буквально перенасичені різного роду інструментами, майстрами, доповненнями, які забезпечують необхідний функціонал. Більш того, часто самі середовища розробки грають роль своєрідної енциклопедії, що дозволяє ознайомитися з новими можливостями і технологіями, що важливо для початківців програмістів.

Проте, як не парадоксально, серед програмних продуктів, орієнтованих на використання при розробці вбудованих систем, тенденція до автоматизації рутинних процесів простежується помітно слабкіше. Спеціалізовані середовища розробки для мікроконтролерів (МК) найчастіше помітно поступаються своїм аналогам зі світу розробки прикладного програмного забезпечення (ПО), навіть незважаючи на те, що можуть мати з ними загальну базу (наприклад, Eclipse). Це можна пояснити меншою популярністю даної сфери і ослабленим увагою вендорів до даного фактору.

Результатом такого стану справ є те, що мікроконтролери, що знаходяться в основі багатьох вбудованих систем, мають обмежений доступний для використання функціоналу, який, в свою чергу, часто має обмежений набір функцій. При організації структури проекту використовуються типові шаблони організації програмного коду незалежно від його кінцевого призначення. Саме ці моменти є ключовими в плані подальшого розвитку спеціалізованих програмних інструментів для роботи з такими пристроями.

Зазначена вище концепція автоматизації налаштувань ініціалізації і створення базового проекту покладено в основу візуального редактора конфігурації і генератора коду STM32CubeMX .

Переваги та недоліки генераторів коду і використання бібліотек

Безумовно, найбільш ефективною з точки зору використання пам'яті і ступеня контролю розробника за реалізацією є пряма робота з регістрами пристрої відповідно до документації виробника. Це також дає можливість швидше вивчити надану програмну архітектуру, зрозуміти основні принципи роботи з периферійними пристроями. Програміст, який має подібний досвід реалізації для конкретної платформи, ознайомлений з великою кількістю деталей, які дозволяють забезпечувати більш тонкий контроль над створенням рішення. У той же час такий підхід вимагає від програміста високого рівня дисципліни і готовності до збільшення часу розробки через необхідність зв'язування низкоуровневой роботи з функціональними абстракціями.

Другою стратегією розробки можна вважати використання бібліотек. В основі створення програмних бібліотек лежить концепція повторного використання коду. Найбільш вдалі і універсальні рішення оформляються у вигляді окремого модуля, який у разі потреби може підключатися до проекту. Це дозволяє уникнути тимчасових витрат на реалізацію стандартних вимог. У той же час необхідно враховувати універсальність рішення, яка в певних випадках (забезпечення максимального швидкодії, неординарна реалізація та інші) може бути і недоліком. Зазвичай, в силу даного чинника, бібліотеки забезпечують меншу продуктивність у порівнянні з рішеннями, оптимізованими для конкретного завдання. Також необхідно пам'ятати, що навіть незважаючи на широке використання і постійну перевірку, бібліотеки можуть містити помилки, які складно виявити.

Початківцю програмісту особливо важливо розуміти різницю між даними підходами. Жоден з них не є абсолютною панацеєю, оскільки містить як позитивні, так і негативні моменти.

Генератори програмного коду призначені для того, щоб створювати окремі файли вихідного коду або всього проекту на основі заданих параметрів. Найчастіше генератори використовують популярні бібліотеки, що дозволяє уніфікувати процес генерації вихідних текстів. Залежно від кількості параметрів, що настроюються вони можуть - за рахунок реалізації частини функціонального забезпечення - значно мінімізувати час, що витрачається на створення основи для подальшої розробки. Практика використання подібних генераторів для розробки прикладного ПЗ в багатьох галузях стала стандартною, а знання відповідних інструментів є обов'язковим. У той же час, в сфері розробки вбудованих систем подібні генератори застосовуються завдяки перевагам, які вони надають, однак все ще знаходяться на етапі розвитку і отримання визнання серед розробників.

До недоліків генераторів коду можна віднести обмежену кількість налаштувань, яке не дозволяє врахувати всі особливості проекту. Також при розробці проекту для динамічної системи, яка часто змінює параметри своєї роботи в залежності від внутрішніх і зовнішніх умов, генераторами можна описати лише обмежена кількість станів даної системи. Необхідність врахування великої кількості критеріїв тягне за собою внесення великої кількості змін в програмну реалізацію.

Проте, при всіх зазначених недоліки, позитивні сторони використання генераторів коду очевидні.

Вендори ринку мікроконтролерів поки тільки починають звертати свою увагу на даний тип інструментів. Одним з найбільш цікавих рішень є візуальний редактор налаштувань ініціалізації STM32CubeMX.

можливості STM32CubeMX

Завантажити інсталятор STM32CubeMX можна з сайту виробника [1]. Установка програми вимагає наявності на комп'ютері однією з останніх версій середовища виконання Java 7, тому при її відсутності необхідно попередньо її встановити.

Візуальний редактор налаштувань STM32CubeMX є складовою частиною інфраструктури STM32Cube, яка також включає спеціалізовані бібліотеки для роботи з різними лінійками мікроконтролерів STM32. Варто відзначити, що інтеграція між складовими частинами виконано вдало, оскільки встановлювати необхідні бібліотеки можна прямо з редактора. Для цього потрібне підключення до Інтернету, оскільки завантаження проводиться з сайту компанії STMicroelectronics. Також є можливість відслідковувати оновлення версій вже завантажених бібліотек. Крім того, бібліотеки можуть використовуватися самостійно при роботі з іншим програмним забезпеченням.

Пакет програмного забезпечення, який пропонується для використання, включає в себе наступні основні компоненти:

  • бібліотеку CMSIS;
  • бібліотеку для роботи з периферійними пристроями (Hardware Abstraction Layer - HAL);
  • бібліотеки, що спрощують використання можливостей популярних плат (Board Support Package - BSP);
  • бібліотеки вищого прикладного рівня, що дозволяють реалізувати спеціалізовані можливості (система реального часу FreeRTOS, підтримка файлової системи FAT, робота зі стеком протоколів TCP / IP завдяки бібліотеці lwIP, використання можливостей USB і ін.). Не всі бібліотеки даного рівня можуть бути доступні для підключення при використанні конкретного мікроконтролера.

Особливо слід відзначити бібліотеку HAL, яку можна назвати продовженням розвитку відомої бібліотеки Standard Peripheral Library (SPL), з якої вона має багато спільного в концепції організації програмного коду. Також архів з бібліотеками містить документацію, приклади коду і корисні додатки.

Основними функціями, які надає візуальний редактор конфігурації, є:

  • настройка використання висновків периферійними пристроями в складі мікроконтролера;
  • настройка тактирования;
  • налаштування периферійних пристроїв;
  • розрахунок споживання енергії відповідно до планованими режимами роботи.

Інтерфейс самої програми простий, зручний і зрозумілий. Незважаючи на наявність великої кількості налаштувань, він не перевантажений непотрібними функціями, а візуальне уявлення різних систем МК дозволяє повністю скласти картину про кінцевий результат виконаних налаштувань.

Приклад створення проекту на основі МК STM32L0

Проведемо більш детальне ознайомлення з можливостями візуального редактора налаштувань на прикладі створення проекту для мікроконтролера сімейства STM32L0 . Дана серія пристроїв орієнтована на забезпечення рішень з низьким енергоспоживанням. Ядро мікроконтролера засноване на архітектурі Cortex M0 +. Також в складі пристрою присутні периферійні модулі з низьким енергоспоживанням.

Як пристрій для тестування проекту обрана отладочная плата NUCLEO-L053R8 яка заснована на МК STM32L053R8T6 [2]. У прикладі будуть використовуватися модулі приймача USART, послідовного інтерфейсу SPI, годин реального часу RTC. Пристрій буде переходити в режим низького споживання Stop, з якого буде виходити за сигналом годин реального часу. Для роботи таймера скористаємося зовнішнім джерелом сигналу 32768 Гц, який присутній на обраної платі [3].

Як уже згадувалося, для роботи з пристроями певної серії необхідно завантажити набір спеціалізованих бібліотек. Зробити це можна прямо з програми STM32CubeMX , Виконавши команду Help / Install New Libraries. У списку доступних бібліотек необхідно відзначити бібліотеку Firmware Package for Family STM32L0 останньої версії і натиснути кнопку Install Now для твори установки. Після її закінчення доступність бібліотеки буде позначена в списку, як показано на малюнку 1. При використанні для доступу до мережі проксі-сервера слід зробити необхідні настройки у вікні, яке є по команді Help / Updater Settings ... на вкладці Connection Parameters.

Після завантаження необхідної бібліотеки можна перейти до створення проекту за допомогою команди File / New Project .... Дана дія відкриє вікно вибору пристрою (рисунок 2), для якого передбачається створення проекту. Завдяки застосуванню фільтрів можна скоротити кількість пристроїв в основному списку і прискорити пошук.

До сих пір середовища розробки для мікроконтролерів значно поступалися спеціалізованим середах розробки прикладного ПЗ

Мал. 1. Вікно установки бібліотек

Вікно установки бібліотек

Мал. 2. Вікно вибору МК

Після створення проекту користувачеві для редагування доступні чотири вкладки:

  • Pinout;
  • Clock Configuration;
  • Configuration;
  • Power Consumption Calculator.

В даному вікні користувачеві пропонується різний вибір платформної бази - або вибір контролера за параметрами в лівій частині вікна, або вибір за заздалегідь визначеною лінійці мікроконтролера. У першому випадку інженер простим додаванням міток навпроти потрібної периферії може підібрати собі мікроконтролер з сімейства STM32. У другій вкладці «boards» інженер може вибрати одну з налагоджувальних плат STMicroelectronics і вже під неї вже конфігурувати кінцевий проект. Розподіл функцій між вкладками дозволяє користувачеві працювати з однією групою налаштувань, але, в той же час, присутній інтеграція між вкладками: дії, виконані на одній, впливають на доступні дії в інший. Це гарантує цілісність всього рішення і відсутність конфліктів в коді проекту. Створений проект слід зберегти в окрему директорію.

Налаштування висновків

Налаштування функціонального призначення висновків проводиться в першій з чотирьох робочих вкладок. Робоча область вкладки розділена на дві частини: у першій відображається дерево конфігурації периферійних модулів і спеціалізованих програмних компонентів, а в другій організовано графічне представлення МК і використання його висновків. Дерево конфігурації дозволяє не тільки вибрати, які модулі будуть використовуватися, але і, наприклад, вибрати режим використання, додаткові налаштування і так далі. У міру вибору використовуваних компонентів в частині відображення відбуватимуться зміни щодо використовуваних висновків. Також відбуватиметься автоматична перевірка того, які модулі не можуть використовуватися або які можливості можуть бути обмежені в зв'язку з проведеними налаштуваннями. Повідомлення про це з'являється у вигляді попереджувальних знаків жовтого або червоного кольору в дереві конфігурації, а відповідні налаштування стають недоступними для редагування. Таким чином, є можливість відразу перевірити доступність одночасної роботи обраного набору модулів, не вдаючись до вивчення документації, оскільки можливий конфлікт буде одразу виявлений. Крім того, функціональне призначення висновків може бути вироблено і за допомогою візуального представлення. Для цього необхідно лівою клавішею миші натиснути на висновок, після чого з'явиться підказка про можливі функції виведення в складі периферійних пристроїв. Вибір однієї з функцій призводить до того, що відповідний пристрій в дереві конфігурації стає активним.

У нашому випадку встановимо такі опції для роботи необхідних пристроїв: USART буде працювати в асинхронному режимі, SPI - в повнодуплексному режимі в якості ведучого пристрою, в RTC буде використовуватися сигнал Alarm A. Все це можна виконати, розкривши відповідні вузли в дереві IP і змінивши значення Disable на зазначені вище для кожного модуля. Крім того, оскільки в якості джерела тактового сигналу для RTC буде виступати зовнішній низькочастотний джерело, то в модулі RCC слід вибрати опцію для його включення (Low Speed ​​Clock (LSE) - Crystal / Ceramic Resonator). Результат виконання зазначених налаштувань повинен відповідати тому, що показано на малюнку 3.

Мал. 3. Візуальне уявлення використовуваних висновків

Використовувані висновки відображені зеленим кольором, поруч з ними - підказка про їх функціональне призначення.

Налаштування тактирования

Вкладка налаштувань тактирования (Clock Configuration) є однією з найбільш цікавих можливостей. Даний інструмент є логічним продовженням розвитку подібних майстрів, які раніше поширювалися компанією STMicroelectronics у вигляді файлів Excel з макросами. В даному випадку він тісно інтегрований з іншими параметрами налаштувань, що є кроком вперед, оскільки необхідність внесення додаткових змін до згенерований проект зводиться до мінімуму в разі використання одного режиму тактирования.

Інтерфейс даної вкладки багато в чому повторює інтерфейс згаданого вище інструменту-попередника. Перевага такого уявлення - можливість відстежувати зв'язки між різними складовими компонентами системи тактирования і контролювати всі етапи даного процесу. Більш того, для пристроїв серії STM32L0 характерною особливістю є можливість більш широкого вибору сигналів тактирования для різних внутрішніх пристроїв. Як джерело тактового сигналу можуть використовуватися внутрішні і зовнішні генератори. У загальному випадку джерела тактирования поділяють на високошвидкісні (High-speed), низькошвидкісні (Low-speed) і мультіскоростние (Multi-speed). При цьому всі вони можуть використовуватися для забезпечення роботи різних складових. Потреба в роботі на високих частотах забезпечує наявність фазового автопідстроювання частоти. Однак слід пам'ятати, що максимальна тактова частота роботи не може перевищувати 32 МГц. При порушенні даної вимоги, а також інших вимог щодо налаштування робочих частот модулів, в робочій області редактора проблемні ділянки будуть виділені червоним кольором. Дана дія виконується автоматично, аналогічно перевірці одночасного використання обраного набору модулів на першій вкладці.

Важливою характеристикою редактора налаштувань тактирования є те, що в якості джерела частоти можуть використовуватися тільки модулі, які були попередньо обрані серед пристроїв на вкладці Pinout. Аналогічним чином, тактовий сигнал передбачається використовувати тільки для пристроїв, які позначені активними, інакше опції налаштувань будуть просто недоступні. Наприклад, щоб мати можливість генерації коду для зовнішнього джерела тактирования, необхідно вказати для модуля RCC використання високо- або низької осцилятора. Після того, як дані параметри будуть активовані, перейшовши на вкладку Clock Configuration, можна побачити, що з'явилася можливість використовувати зовнішнє джерело тактового сигналу.

Налаштування тактирования періферійного модуля, Який НЕ є активним, такоже недоступна в редакторі. Як приклад розглянемо RTC - годинник реального часу (Real-Time Clock), для яких передбачається окреме джерело тактового сигналу. Вибір однієї з робочих функцій RTC на вкладці Pinout призводить до того, що стає доступним для вибору мультиплексор тактового сигналу. Набір сигналів, доступних для вибору, визначається умовою, описаним вище. Результат проведених налаштувань повинен відповідати малюнку 4.

Мал. 4. Конфігурація джерел тактового сигналу

В цілому, інструмент налаштування системи тактирования дуже зручний і дозволяє уникнути можливих помилок при завданні параметрів.

Налаштування периферії

Крім уже розглянутої настройки периферії в дереві конфігурації на першій вкладці, де проводиться базове налаштування і, в основному, використовуються параметри, що впливають на використання висновків, присутній також окрема вкладка Configuration, призначена для цих цілей. За своєю структурної організації вона аналогічна першій: присутні дерево конфігурації використовуваних модулів, а також модулів, які не вимагають використання висновків МК, і частина з візуальними компонентами, які надають доступ до більш детальної налаштування системи. Візуальні компоненти згруповані відповідно до функцій пристрою для налаштувань (системні, функції управління, обміну даними та інші). Крім того, в даному випадку дерево конфігурацій забезпечує значно менше налаштувань, ніж в попередньому випадку: основна частина налаштувань перенесена на індивідуальне вікно вибору параметрів роботи модуля, яке відкривається натисканням кнопки з позначенням модуля.

У правій частині вкладки вибрані раніше пристрою об'єднані так, як показано на малюнку 5.

Мал. 5. Подання пристроїв, доступних для конфігурації

Про поточний стан установки, зверніться по іконці, яка відображається на відповідній модулю кнопці. Про те, що не всі параметри роботи модуля вказані, свідчить чорний колір назви модуля на кнопці. Виявлення помилок супроводжується появою червоного значка на кнопці і діалоговим вікном з повідомленням про помилку. Незважаючи на те, що деякі пристрої можуть бути позначені як в повному обсязі сконфігуровані, це не означає, що згенерований проект буде містити помилки. Типовим прикладом є налагодження прямого доступу до пам'яті (Direct Memory Access, DMA), яка може не виконуватися при відсутності використання даної функції. Проте, в певних випадках необхідно виконати повну конфігурацію модуля для забезпечення його коректної роботи. Пристрій, параметри якого повністю встановлені, відображається зеленою написом на кнопці і іконкою про успішну перевірку заданих параметрів.

Більшість пристроїв, обраних для використання на вкладці Pinout, за замовчуванням отримують конфігурацію, яка не містить помилок і готова до використання. Для того щоб виконати настройку модуля відповідно до потреб проекту, необхідно натиснути на відповідну йому кнопку. Після натискання користувачеві доступно вікно налаштувань даного модуля, яке, за аналогією з основним вікном, організовано за принципом вкладок. Кількість і тип вкладок залежать від конкретного модуля.

Розглянемо більш детально настройку модуля SPI. Відкриємо відповідне йому вікно. У ньому присутні чотири вкладки:

  • Parameter Settings.
  • NVIC Settings.
  • GPIO Settings.
  • DMA Settings.

На першій вкладці встановимо, що при відсутності передачі тактовий сигнал пристрою має високий логічний рівень (параметр, Clock Polarity (CPOL) - значення High), а зчитування / запис відбувається по фронту (параметр Clock Phase (CPHA) - значення 2 Edge), як показано на малюнку 6. Параметри за замовчуванням, встановлені на вкладці налаштувань пинов введення / виведення (GPIO Settings), можуть використовуватися без змін. Оскільки переривання SPI використовуватися не будуть, то настройки для вкладки NVIC Settings не зраджуємо. На останній вкладці, DMA Settings, додамо, що в міру прийому даних вони будуть зберігатися в пам'яті. Послідовно додамо нову настройку DMA (кнопка Add), виберемо зі списку доступних подій SPI1_RX, а інші параметри встановляться автоматично. Наявність автоматичної установки параметрів значно спрощує роботу, оскільки для DMA є велика кількість налаштувань, з яких для отримання коректного результату необхідно відзначити відповідні вимогам. Це можна зробити і на основі документації, однак автоматизація даної настройки дозволяє значно прискорити конфігурація і уникнути помилок, пов'язаних з неточностями установки параметрів.

Це можна зробити і на основі документації, однак автоматизація даної настройки дозволяє значно прискорити конфігурація і уникнути помилок, пов'язаних з неточностями установки параметрів

Мал. 6. Вікно настройки параметрів модуля SPI

Подібні настройки доступні для всіх вибраних модулів, що дозволяє швидко виконати процес завдання необхідних параметрів.

розрахунок споживання

З урахуванням того, що пристрої серії STM32L0 позиціонуються як пристрої з ультранизьким енергоспоживанням, можливість попередньої оцінки даного параметра є затребуваною і актуальною.

В основу розрахунку споживаної енергії в STM32CubeMX покладена наступна концепція: пристрій може працювати в різних режимах споживання (використовується для прикладу пристрій - в семи). Від поточного режиму роботи залежить те, які пристрої можуть бути активними, і, відповідно, можуть споживати енергію. Залежно від тривалості різних режимів роботи і від використовуваних пристроїв, можна оцінити середнє споживання системи, а також час її автономної роботи для обраного джерела живлення.

Перейшовши на вкладку Power Consumption Calculator (малюнок 7), ви отримуєте можливість задати послідовність режимів, в яких буде працювати пристрій, а також вибрати задіяні периферійні пристрої для кожного режиму. Для розрахунку часу життя пристрою користувач може створити свій тип батарейки або вибрати її в списку, що випадає зліва. Таким чином, можна створити повний профайл пристрою, сформувати звіт і зберегти його в одному з відомих форматів для звіту.

Таким чином, можна створити повний профайл пристрою, сформувати звіт і зберегти його в одному з відомих форматів для звіту

Мал. 7. Встановлення режиму роботи мікрконтроллера для оцінки споживання

Додати новий режим можна за допомогою кнопки Add в групі Step. У вікні, слід вибрати режим роботи щодо використання харчування зі списку Power Mode. У прикладі буде використовуватися лише два режими - RUN і STOP. Для кожного з них необхідно налаштувати режим харчування ядра, виконання програми з FLASH або RAM, вибрати джерело тактирования, вказати тривалість роботи мікроконтролера в даному режимі і в правій колонці вибрати периферію, яка буде активна в даному режимі (рисунок 7). Також можна врахувати додаткові джерела споживання в вікні «Additional Consumption», наприклад, світлодіоди на платі в тому чи іншому режимі роботи. Кінцеві графіки споживання і час життя від батарейки будуть показані на малюнку 8.

Мал. 8. Показники споживання для обраних режимів роботи

Як показано на малюнку, для вибраного режиму описана система за розрахунками здатна працювати автономно більше чотирьох місяців.

Подібний інструмент дуже зручний і дозволяє швидко оцінити показники автономності системи, що розробляється, що особливо важливо в розробках з акцентом на енергозбереженні.

генерація проекту

STM32CubeMX забезпечує генерацію проектів для трьох різних середовищ розробки / наборів інструментів: MDK-ARM, EWARM, TrueSTUDIO. Даний параметр можна встановити за допомогою налаштувань, виконавши команду Project / Settings ... Виконати генерацію проекту можна командою меню Project / Generate Code. Згенерований проект можна знайти в папці з файлом проекту візуального редактора. Якщо всі дії виконані правильно, проект повинен зібратися без помилок у відповідному середовищі розробки. Після цього він готовий до внесення подальших змін.

Якщо в процесі проектування програми користувачеві необхідно додати додатковий периферійний модуль, це не становить жодних проблем. Потрібно просто вибрати модуль, конфігурувати його і викликати команду Project / Generate Code. Система додасть необхідний функціонал в вихідний проект, не пошкодивши вже виконану роботу програміста.

Самі бібліотеки периферії, які використовує програма, знаходяться на диску С, в папці STM32Cube, в розділі «Мої документи».

В одній з наступних ревізій програми STMicroelectronics обіцяє додати підтримку зв'язки Eclipse / GCC

Висновок

Поява візуального редактора налаштувань ініціалізації STM32CubeMX є свідченням того, що інструменти розробника для компанії STMicroelectronics представляються важливою частиною загального розвитку. Сам візуальний редактор надає простий і зрозумілий доступ до різних систем пристрої для їх налаштування. Особливо важливим є те, що на основі виконаних налаштувань користувач може згенерувати готовий проект, який можна використовувати для розробки подальшого вирішення. У розглянутому прикладі важливою частиною є оцінка споживання енергії. Таким чином, даний програмний продукт є потужним інструментом, що надає широкі можливості для спрощення роботи програміста і дозволяє скоротити загальний час, необхідний на розробку.

література

  1. посилання 1
  2. посилання 2
  3. посилання 3

Отримання технічної информации , замовлення зразків , замовлення и доставка .

Про компанію ST Microelectronics

Компанія STMicroelectronics є №1 виробника електроніки в Европе Компанія STMicroelectronics є №1 виробника електроніки в Европе. Компоненти ST широко представлені в оточуючіх нас СПОЖИВЧИХ товари - від iPhone до автомобілів різніх марок. Лідери індустріального Сайти Вся вібірають компоненти ST за їх Надійність и видатні технічні параметрами. У компании ST працює 48 000 співробітніків в 35 странах. Виробничі потужності розташовані в 12 странах світу. Понад 11 тисяч співробітніків зайняті дослідженнямі і розробки - інноваційне лідерство ... читати далі

© 2008 — 2012 offroad.net.ua . All rights reserved. by nucleart.net 2008