IAR EWARM. STM32F030F4P6. Мікроконтролер відсутній у списку...

Я вирішив зробити одне не складне пристрій на мікроконтролері STM32. Почав шукати недорогі варіанти. Після недовгих пошуків мені приглянувся STM32F030F4P6. Замовив мікроконтролери, отримав посилку.

Ось так вони виглядають. Корпус TSSOP-20.

Витравив плату, настав час писати прошивку. Відкриваю IAR, створюю новий проект, і ... мікроконтролера не виявилося в списку вибору!

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

На першій сторінці даташита написано, що використовується ядро ARM Cortex M0. У налаштуваннях проекту на вкладці "General Options" вибираю ядро (core) Cortex M0.

Далі необхідно налаштувати адреси і кількість пам'яті Flash і RAM. Заходжу на вкладку "Linker", натискаю кнопку "Edit".

На вкладці "Vector Table" перевіряємо стартову адресу, з якої починається виконання програми. Має стояти значення 0x08000000. Якщо все вірно - йдемо далі, якщо ні - виправляємо.

Далі йдемо на наступну вкладку "Memory Regions". Тут саме важливе.

Необхідно вказати початкові та кінцеві адреси для Flash і RAM пам'яті. Де ж взяти ці адреси? Йдемо в даташит, у розділ "Memory Mapping", і шукаємо там схематичне зображення адресного простору мікроконтролера.

Отже, з цього малюнка ми можемо дізнатися адресу початку Flash, і адресу початку RAM, це будуть значення 0x08000000 і 0x20000000 відповідно. Вбиваємо ці значення в графи "Start". Тепер необхідно обчислити кінцеві значення "End" - вони рівні початковому значенню + розмір пам'яті, а розміри пам'яті можна без проблем знайти в даташиті. Шукаємо розділ "Description" і знаходимо там табличку. У цій табличці вказані основні характеристики всієї лінійки мікроконтролерів, тут же вказані об'єми Flash і RAM пам'яті. Знаходимо в табличці наш мікроконтролер - у моєму випадку це STM32F030F4P6, дивимося кількість пам'яті.

Тепер, знаючи об'єми пам'яті і початкові адреси, можна обчислити кінцеві адреси. Беремо в руки калькулятор, і складаємо. Не забуваємо, що 4 кілобайти це 4096 байт, а 16 кілобайт це 16384 байта.

Flash = 0x08000000 + ((16 * 1024) - 1)
Flash = 0x08000000 + 16383
Flash = 0x08000000 + 0x3FFF
Flash = 0x08003FFF

Те ж саме робимо і для RAM пам'яті.

RAM = 0x20000000 + ((4 * 1024) - 1)
RAM = 0x20000000 + 4095
RAM = 0x20000000 + 0xFFF
RAM = 0x20000FFF

Ми розрахували кінцеві адреси Flash і RAM пам'яті, вбиваємо їх у графи "End". Напевно багатьом не зрозуміло, чому при розрахунках я віднімаю одиничку. Справа в тому, що за адресою Flash 0x08000000 вже знаходиться перший байт, отже, потрібно цей байт врахувати при розрахунку.

Отже, адреси вбили, переходимо на останню вкладку "Stack/Heap Sizes". Тут необхідно вказати розміри стеку (stack) і купи (heap). Налаштування цих значень індивідуальна для конкретного проекту. У своєму проекті я виділяю під стек 1024 байти, а купу не використовую, тому ставлю по нулям.

Зберігаємо проект, тепер додаємо файли Standart Peripheral Library.

Запускаю компіляцію клавішею F7, і вуаля. Готово. Тепер можна програмувати.

P.S. Загальні особливості створення проекту в цій статті не розглядаються. Додаю порожній налаштований проект IAR EWARM 6.60 під мікроконтролер STM32F030F4P6, раптом кому знадобиться.

Прикреплені файли:

Top