Як треба дружитися з STM32

Як треба дружитися з STM32

Ні, ні, ні, все не так!


Давайте дружитися з STM32 правильно!

Найголовніша помилка, зроблена автором - це неправильно обраний інструментарій. Починати дружити з контролерами STM32 треба, безумовно, з плат STM32Fx-Discovery. На них вже є программатор-налагоджувальник, весь необхідний обвіс, ноги для підключення периферії і плюшки у вигляді світлодіодів, екранів, датчиків і ЦАП-ів залежно від плати. Ціна дискаверей починається від 10 доларів. Це копійки за миттєвий і безпроблемний старт. Тобто. вам взагалі нічого більше з заліза купувати не треба (mini-USB шнур, вважаю, вдома знайдеться), щоб помигати світлодіодом, вивчити системи просторової орієнтації, попрацювати з виведенням звуку і графіки і зробити USB-пристрій.

Додатковий бонус - программатором з дискавері можна програмувати зовнішні МК, роз'єм для цього є на платі.

Але, припустимо, не лежить у вас душа до дискавері. Гаразд, я розумію. Дивимося тоді, на чому ж побудовані зневадники ST-Link V1/V2. А побудовані вони на мікроконтролері STM32F103C8T6 (@ eta4ever, так, так, він самий). Відповідно, якщо у тебе є плата на цьому МК, то її можна перетворити на программатор ST-Link V2. Для заливки прошивки можна скористатися або інструкцією від STM (AN2557 STM32F10x in-application programming using the USART) або тією ж дискавері, якщо є під рукою і утилітою STM32 ST-LINK utility. Або купіть зневадник. Коштує він 25 доларів, але річ корисна, якщо збираєтеся хоч скільки серйозно цим займатися.

До речі, ще щодо плати. Китайці продають багато готових плат, начебто ось таких. Хустка така за 6 доларів - зовсім непогано. Краще тільки така хустка за 4 долари. Отже, замовляємо такі хустки, після отримання перетворюємо одну на программатор, а з іншими розважаємося. Ну чи не казка?

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

- з "єднати РА5 і РВ13 це лінія SWCLK

- між РВ14 і РВ12 резистор 220 Ом

- РВ14 лінія SWDIO

- РА0 підключити до ділителя з двох резюків 4,7кОм між GND і + 3,3V

Прошиваємо ось цією прошивкою.

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

Пару слів про IDE. CooCox непоганий, зручний і все таке, але у них дуже туго з ресурсами і вони не встигають підтримувати нові мікроконтролери, та ще до того ж у них пріоритет, схоже, LPC. Я так нарвався з підтримкою МК на платі STM32F0-Discovery. Чекав обіцяної підтримки кілька місяців, але плюнув і пішов на IAR. Іаровське середовище називається EWARM (Embedded Workbench for ARM), безкоштовної версії вистачає за очі (обмеження коду 8 кб, я жодного разу не потикався в нього), скачується звідси. Ще КуКокс грішить тим, що вони ламають щось періодично в нових релізах і стабільність середовища невисока - може просто закрити всі вікна без збереження змін. Хто в общазі не жив, де світло вирубувалося раз на годину і не має звички натискати Ctrl + S кожні 30 секунд, може потрапити дуже сильно. IAR теж не без гріхів, в першу чергу бісить уродська розмітка коду і відсутність виділення активного/неактивного коду в залежності від директив препроцесора, але жити з цим можна. Важливо, що просто так взяти і побудувати проект під STM32 не вийде (вибачте, не буду вставляти картинку з Бороміром). Якщо захочете, напишу детальну ^-бай-^ інструкцію (з картинками!) про те, як створити свій власний проект з нуля.

P.S. А все-таки, дикавері! Тому що на чомусь ще взяти і ось так з нуля зробити фіг вийде:

Image