Главная » Микроконтроллеры
Призовой фонд
на октябрь 2021 г.
1. Рюкзак Mean Well
Компэл
2. Инвертор авто Mean Well 150 Ватт
Компэл
3. Термос MeanWell
Компэл
4. 100 руб.
От пользователей

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


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

Pickit 2 - USB-программатор PIC-микроконтроллеров
Pickit 2 - USB-программатор PIC-микроконтроллеров
Металлоискатель MD3010II Печатная плата для усилителя "LM3886 + AD825"
вверх