В одной и прошлых статей [1] я уже настраивал IAR (для STM32F10x), поэтому разберем этот процесс ещё раз (не надо искать логику, повторение — мать заикания!). После запуска программы выбираем Project → Create New Project → C → main → OK. Будет предложено выбрать папку и название проекта. Для большей пользы (ква, и удобства!) мы будем не просто клепать примеры, а оформим их как библиотеки (понадобится нам какой-нибудь UART — раз и подключили!). Так что рекомендую проект назвать main, он будет базой для наших самописных буль-буль… библиотек.
Структуру папок будем настраивать в соответствии со статьями [2, 3] (далее — выжималка из них). Сворачиваем пока IAR, идем в папку с проектом (ага, вы ведь запомнили, куда он сохранился?!). Видим там файлик main.c (ворчим под нос что-то про беспорядок), создаем папку src и переносим его туда. Теперь возвращаемся в IAR, находим дерево в панели Workspace и удаляем оттуда main.c:
Затем последовательность действий следующая:
- жмем правой кнопкой мыши (ПКМ) на корень дерева, выбираем 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 → Add → Add Group… → CMSIS;
- ПКМ на src → Add → Add Group… → inc;
- ПКМ на src → Add → Add Group… → startup;
- ПКМ на src → Add → Add Group… → lib;
- ПКМ на CMSIS → Add Files… Добавляем файлы из папки CMSIS;
- ПКМ на inc → Add Files… Добавляем файлы из папки inc;
- ПКМ на startup → Add Files… Добавляем файлы из папки startup;
- ПКМ на lib → Add Files… ну вы поняли 🙂
В результате должно получиться такое дерево:
Теперь нужно настроить 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… ну и так далее, на картинке все видно:
Да-да, вы все правильно поняли: наш «ничего не делающий код» занимает 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
Прикрепленные файлы:
- iar_project.zip (34 Кб)