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, раптом кому знадобиться.
Прикреплені файли:
- Zlodey_STM32F030F4P6.zip (298 Кб)