Реклама ⓘ
Главная » Микроконтроллеры
Призовой фонд
на май 2024 г.
1. 1000 руб
Сайт Паяльник

Похожие статьи:


Реклама ⓘ

IAR и STM32 CORTEX M0. Часть 0x01. Подготовка платформы IAR

В одной и прошлых статей [1] я уже настраивал IAR (для STM32F10x), поэтому разберем этот процесс еще раз (не надо искать логику, повторение — мать заикания!). После запуска программы выбираем Project → Create New ProjectC → main → OK. Будет предложено выбрать папку и название проекта. Для большей пользы (ква, и удобства!) мы будем не просто клепать примеры, а оформим их как библиотеки (понадобится нам какой-нибудь UART — раз и подключили!). Так что рекомендую проект назвать main, он будет базой для наших самописных буль-буль... библиотек.

Структуру папок будем настраивать в соответствии со статьями [2, 3] (далее — выжималка из них). Сворачиваем пока IAR, идем в папку с проектом (ага, вы ведь запомнили, куда он сохранился?!). Видим там файлик main.c (ворчим под нос что-то про беспорядок), создаем папку src и переносим его туда. Теперь возвращаемся в IAR, находим дерево в панели Workspace и удаляем оттуда main.c:

iar-1-1

Затем последовательность действий следующая:

  • жмем правой кнопкой мыши (ПКМ) на корень дерева, выбираем Add → Add Group → src → OK;
  • ПКМ на src, Add → Add Files... Находим наш main.c и нажимаем открыть;
  • Сворачиваем IAR, в папке src создаем папки CMSIS, inc, lib, startup;
  • Копируем в папку CMSIS файл system_stm32f0xx.c (лежит в архиве после статьи);
  • Копируем в папку inc файлы stm32f0xx.h, system_stm32f0xx.h (лежат в архиве);
  • Копируем в папку startup файл startup_stm32f0xx.s (в архиве);
  • Копируем в папку lib... ничего не копируем, мы еще не написали библиотек :-)

Лирическое отступление. Папки CMSIS, inc и startup я специально вынес в отдельный архив, потому что хотя их теоретически и можно найти на официальном сайте, но мне пришлось потратить не один час, выискивая их по разным уголкам. Если сейчас их можно где-то найти в нормальном виде (на офсайтах), просьба отписаться в комментах.

А мы продолжаем:

  • Возвращаемся в IAR;
  • ПКМ на src → AddAdd Group... → CMSIS;
  • ПКМ на src → AddAdd Group... → inc;
  • ПКМ на src → AddAdd Group... → startup;
  • ПКМ на src → AddAdd Group... → lib;
  • ПКМ на CMSIS → Add Files... Добавляем файлы из папки CMSIS;
  • ПКМ на inc → Add Files... Добавляем файлы из папки inc;
  • ПКМ на startup → Add Files... Добавляем файлы из папки startup;
  • ПКМ на lib → Add Files... ну вы поняли :-)

В результате должно получиться такое дерево:

iar-1-2

Теперь нужно настроить CMSIS, выбрать камушек и прописать пути:

  • ПКМ на корень дерева → Options..., откроется окно настроек:

  • General Options → вкладка Target → опция Device → кнопка справа → ST → STM32F030 → ST STM32F030×6;
  • General Options → вкладка Library Configuration → галка Use CMSIS;
  • C/C++ Compiler → вкладка Preprocessor. В поле Additional include directories добавляем две строки «.\inc» и «..\inc» (без кавычек);
  • Output Converter → вкладка Output → галка Generate additional output → Output format: binary;

Теперь нажимаем OK. На этом подготовка платформы закончена. Копируем в правое окно простейший код:

#include "stm32f0xx.h"

int main() {
 return 0;
}

И пытаемся скомпилировать: F7. Если вы все сделали правильно, должно скомпилироваться без ошибок. Однако, информация по дефолту скудная: непонятно, сколько наш код весит и сколько оперативки потребляет. А с учетом наших ограничений, вопрос не праздный, потому жмем ПКМ → Options... ну и так далее, на картинке все видно:

iar-1-4

Да-да, вы все правильно поняли: наш «ничего не делающий код» занимает 712 байт флеша (readonly code memory) и килобайт оперативки (readwrite code memory)! Ужас, будь это авр, мы бы удавились с такой расточительности :)) Но у нас не авр, так что давайте приступим к программированию... хотя... стойте, а что программировать-то будем?..

Список литературы:

1. http://easyelectronics.ru/arm-uchebnyj-kurs-iar-ewarm-sozdanie-proekta-chast-3-podklyuchenie-colink-tancy-s-bubnom-i-bez.html
2. http://easyelectronics.ru/arm-uchebnyj-kurs-iar-ewarm-sozdanie-proekta-chast-3-podklyuchenie-colink-tancy-s-bubnom-i-bez.html
3. http://easyelectronics.ru/arm-uchebnyj-kurs-iar-ewarm-sozdanie-proekta-chast-2-cmsis-i-standard-peripherals-library.html

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

Теги:

Опубликована: 0 0
Я собрал 0 1
x

Оценить статью

  • Техническая грамотность
  • Актуальность материала
  • Изложение материала
  • Полезность устройства
  • Повторяемость устройства
  • Орфография
0

Средний балл статьи: 1.6 Проголосовало: 1 чел.

Комментарии (3) | Я собрал (0) | Подписаться

+1
Vitemk #
наш «ничего не делающий код» занимает 712 байт флеша
Ну он не совсем "ничего не делает". В файле startup*.s (ну или где-то рядом) прописана инициализация тактирования. В моём недавнем проекте, её отключение освободило примерно 400 байт флеша.
А часть ОЗУ зарезервирована под стек. Размер настраивается.
Ответить
0

[Автор]
DySprozin #
Спасибо за пояснение, добавлю в статью ремарку.
В догонку: а как же работает ваш проект без инициализации тактования?
Ответить
+1
Vitemk #
Ну во-первых даже без инициализации, по умолчанию камень работает на внутреннем генераторе.
Во-вторых, я написал свой код иниц. тактирования.
Ответить
Добавить комментарий
Имя:
E-mail:
не публикуется
Текст:
Защита от спама:
В чем измеряется электрическое сопротивление?
Файлы:
 
Для выбора нескольких файлов использйте CTRL

Программатор Pickit3
Программатор Pickit3
USB осциллограф DSO-2090 UNI-T UT-61A
вверх