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, вдруг кому пригодится.

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

Добавить комментарий

Ваш адрес email не будет опубликован.