Руководства, Инструкции, Бланки

Keil Uvision 5 руководство на русском img-1

Keil Uvision 5 руководство на русском

Рейтинг: 4.4/5.0 (1927 проголосовавших)

Категория: Руководства

Описание

Keil uVision

Keil uVision

Среда разработки, представляющая собой набор утилит для выполнения полного комплекса мероприятий по написанию программного обеспечения для микроконтроллеров.

Keil uVision позволяет работать с проектами любой степени сложности, начиная с введения и правки исходных текстов и заканчивая внутрисхемной отладкой кода и программированием ПЗУ микроконтроллера. От разработчика скрыта большая часть второстепенных функций, что сильно разгружает интерфейс и делает управление интуитивно понятным. Однако при возрастании сложности реализуемых задач, всегда можно задействовать весь потенциал модулей, функционирующих под управлением единой оболочки. Среди основных программных средств Keil uVision можно отметить.
1. Базу данных микроконтроллеров, содержащую подробную информацию обо всех поддерживаемых устройствах. Здесь хранятся их конфигурационные данные и ссылки на источники информации с дополнительными техническими описаниями. При добавлении нового устройства в проект все его уникальные опции устанавливаются автоматически.
2. Менеджер проектов, служащий для объединения отдельных текстов программных модулей и файлов в группы, обрабатываемые по единым правилам. Подобная группировка позволяет намного лучше ориентироваться среди множества файлов.
3. Встроенный редактор, облегчающий работу с исходным текстом за счет использования многооконного интерфейса, выделения синтаксических элементов шрифтом и цветом. Существует опция настройки в соответствии со вкусами разработчика. Редактирование остается доступным и во время отладки программы, что позволяет сразу исправлять ошибки или отмечать проблемные участки кода.
4. Средства автоматической компиляции, ассемблирования и компоновки проекта, которые предназначены для создания исполняемого (загрузочного) модуля программы. При этом между файлами автоматически генерируются новые ассемблерные и компиляторные связи, которые в дальнейшем позволяют обрабатывать только те файлы, в которых произошли изменения или файлы, находящиеся в зависимости от изменённых. Функция глобальной оптимизации проекта позволяет достичь наилучшего использования регистров микроконтроллера путем неоднократной компиляции исходного кода. Компиляторы uVision работают с текстами, написанными на Си или ассемблере для контроллеров семейств ARM, MSC51, C166 и многих других. Кроме того возможно использование компиляторов других производителей.
5. Отладчик-симулятор, отлаживающий работу скомпилированной программы на виртуальной модели микропроцессора. Довольно достоверно моделируется работа ядра контроллера и его периферийного оборудования: портов ввода-вывода, таймеров, контроллеров прерываний. Для облегчения комплексной отладки разрабатываемого программного обеспечения возможно подключение программных моделей нестандартного оборудования.
6. Дополнительные утилиты, облегчающие выполнение наиболее распространенных задач. Число и набор меняется от версии к версии. Выделяют следующие из них:
• Source Browser, содержащую базу данных программных символов для быстрого поиска;
• Find in Files, предназначенную для поиска заданного кода во всех файлах указанной папки или проекта;
• Tools Menu, позволяющую использовать утилиты сторонних производителей;
• PC-Lint, анализирующую исходный текст программы с выделением потенциально опасных мест;
• Flash tool, программирующую FLASH-память микроконтроллеров.

Среда программирования разработана компанией Keil, которая была основана в Мюнхене в 1982 году братьями Гюнтером и Рейнхардом. В октябре 2005 года Keil вошла в состав американской корпорации ARM. На сегодняшний день она представляет широкий спектр различных средств для разработки программ, включающих Cи-компиляторы, макроассемблеры, отладчики, симуляторы, линкеры, IDE-приложения и оценочные платы для различных семейств микроконтроллеров.

Программа Keil uVision является платной и стоит очень больших денег. По ссылке ниже, после заполнения анкеты можно скачать демонстрационную версию. Разумеется, в ней присутствует ряд ограничений и основное из них – 32 КБ на размер программы.

Среда разработки Keil uVision представлена на английском языке.

Программа работает на персональных компьютерах под управлением только операционной системы Windows версий 2000, XP, Vista и 7.

Распространение программы: Shareware (платная). Есть демоверсия с рядом ограничений, в т.ч. на размер кода - не более 32 КБ.

Комментарии (1) | Подписаться

Юрий 26.03.2015 13:53 #

Как подключить Silicon JTAG (USB) to android phone? Есть ли приложение - программатор через JTAG для андроида? Нужен для перезаписи программ в полевых условиях.

МиниПК MK809V - 4 ядра, Android 4.4.2

1999-2016 СМИ Сайт-ПАЯЛЬНИК 'cxem.net'

При использовании материалов сайта, обязательна
ссылка на сайт ПАЯЛЬНИК и первоисточник

Другие статьи

Как добавить микросхему в Keil uVision 4? Микроконтроллеры

Как добавить микросхему в Keil uVision 4? - Микроконтроллеры

30.01.2014, 01:08 Как добавить микросхему в Keil uVision 4?

1) KEIL считается лучшим для кортексов (просто слышал, сам не сравнивал).
2) Он также поддерживает разные типы компиляторов. Для того чтобы их объединить - нужно переписать всю папку с компилятором к определенной платформе в одну версию KEIL'а. Например, для объединения C51 и ARM в один редактор KEIL нужно папку ARM из одного KEIL'а переписать в папку KEIL/ другого, где находится папка C51. Надеюсь, здесь прозрачно?
3) Далее нужно подправить строчки файла tools.ini, добавив всю группу параметров из одного KEIL'а (донора, в нашем случае под ARM) в другой tools.ini.
После перезагрузки KEIL будет понимать и компилить и те и другие проекты.
Единственный глюк, который был замечен - это "вылет" IDE при загрузке проекта под одну платформу при открытом проекте с другой платформой. Лечилось закрытием старого проекта и открытием проекта под другую платформу, но через меню "Open project", а не из сохраненных пунктов "recent projects".
Но и также ничего не мешает использовать 2 кейла в системе.

Настройка проекта в Keil uvision5

Настройка проекта в Keil uvision5

Сам я начинающий в этом деле, если что не так опишу, просьба сильно не пинать)

До работы с STM микроконтроллерами, упорно изучал AVR. После приобретения своей первой платы STM32f3discovery, своим первым проектом, конечно же, хотел помигать светодиодами. Думал ща приду домой, включу и сразу начну программировать и без проблем делать всякие там проекты. Но не тут то было. После создания проекта постоянно вылетали всякие ошибки, компилятор постоянно ругался на недостающие файлы.

Наиболее часто вылетала ошибка типа этой:

После долгих попыток наконец-то удалось установить причину всех моих неудач. Ниже представлены несколько шагов, которые делаю я для создания проекта. Эти шаги облегчат процесс создание своих первых проектов на микроконтроллерах семейства STM32.

Среда Keil имеет свои «внутренние» файлы, которые она использует по умолчанию. К примеру фалы отвечающие за конфигурацию периферии и др. Для того чтобы компилятор использовал скипированные файлы необходимо сделать

1. Шаг первый – скачиваем файлы настройки контроллера

Для того чтобы настроить свой первый проект вам необходимо для начала скачать архив для вашей конкретной платы с официального сайта

Для своей платы STM32f3Discovery я скачал архив с примерами по ссылки

Далее распаковываем данный архив.

2. Создаем папки проекта

После этого в папке с проектом создаем 4 папки
  • cmsis – папка содержащая файлы настройки микроконтроллера;
  • pl – папка с файлами переферрий;
  • user – пользовательская папка, тут главный исполняемый файл;
  • startup – начальная инициализация/

У меня это выглядит так:

3. Создаем аналогичные группы в среде Keil u vision

Аналогично в нашем проекте создаём группы с такими же названиями. Названия можно давать любые, но чтобы не путаться лучше такие же, как и сами папки.

Важно понимать, что создание группы в проекте это не создание аналогичных папок в папке проекта, а всего лишь группировка исполняемых файлов.

4. Копируем нужные файлы в папки проекта

Далее нам необходимо скопировать из нашего,ранее скаченного архива, следующие файлы.

В папку cmsis следующие 3 файла:
  1. " F:\Projects\STM32\Ex4\cmsis\system_stm32f30x.c"
  2. " F:\Projects\STM32\Ex4 \cmsis\system_stm32f30x.h"
  3. " F:\Projects\STM32\Ex4cmsis\stm32f30x.h"

Файл stm32f30x.h – это файл необходимый для настройки работы микроконтроллера.

В папку pl две папки из STM32F30x_StdPeriph_Driver это

inc и src, в которых находится куча файлов для работы с периферией.

Также в папку pl необходимо скопировать файл stm32f30x_conf.h из любого проекта.

В итоге имеем:
  1. "F:\Projects\STM32\Ex4\pl\stm32f30x_conf.h"
  2. "F:\Projects\STM32\Ex4\pl\inc\тут куча файлов h"
  3. "F:\Projects\STM32\Ex4\pl\src\ тут куча файлов c"

В папку startupкопируем следующий файл

В папке userсоздаем наш исполняемый файл main.c

5. Добавляем файлы в проект

В среде Keil нам необходимо добавить некоторые файлы в созданные группы.
  1. В группу cmsis добавляем один файл system_stm32f30x.c;
  2. В группу pl все си-шные файлы периферии из папки src;
  3. В группу startup файл startup_stm32f30x.s;
  4. А в папке user создаем файл main.cв ручную.

На данном этапе это выглядит так:

6. Самый главные этап создания проекта

Далее нам необходимо открыть файл stm32f30x.h и убрать комментарий со следующей строки:

В результате Keil начинает использовать ваши скопированные файлы.

7. Добавляем в проект стандартную библиотеку core

Для того чтобы добавить данную библиотеку необходимо менеджере проектов выбрать пунк Run-TimeEnviroment и поставить галочку в поле CMSIS.

Далее открываем наш main.c и компилируем, если ошибок нет. Значит проект настроен верно.

Keil uvision 5 руководство на русском

Установка MDK, создание проекта, основы Keil uVision.

Часть 1. Установка MDK, создание проекта, основы Keil uVision

Сегодня мы начнём учиться программировать ARM-контроллеры STM32 на ядре Cortex-M3. Эти камни уже гораздо серьёзнее, чем восьмибитные пики и атмелы, поэтому для полного использования всех их возможностей без языка высокого уровня нам при программировании не обойтись (если мы конечно не мазохисты), но для лучшего понимания происходящего, начнём мы всё же с ассемблера, а потом уже подмешаем Си (тем более, что до полного использования возможностей этих камней нам пока как до Луны пешком).

Сред разработки под ARM-ы в настоящее время существует достаточно много, мы будем пользоваться одной из таких сред (кстати, одной из самых популярных), которая называется Keil uVision.

Первое, что нужно сделать - это скачать с официального сайта Keil и установить себе на компьютер пакет MDK-ARM. В настоящее время в его состав входит Keil uVision версии 5.11. Бесплатная версия, естественно, урезана и позволяет скомпилить максимум 32 Кбайта кода, но нам, простым радиохламерам, для любительских нужд этого более чем достаточно (ну, а если недостаточно, то, я думаю, все знают что делать ).

Помимо пакета MDK-ARM нужно скачать и установить пакет для работы с контроллерами STM32, который называется Keil.STM32F1xx_DFP.1.0.5.pack. После установки этого пакета в среде uVision появится база данных контроллеров STM.

Всё, после выполнения этих двух действий можно приступать к разработке программ.

Итак, запускаем Keil uVision и выбираем пункт меню "New uVision Project. "

В появившемся окне проводника выбираем папку, в которой проект будет расположен, придумываем ему какое-нибудь имя и жмём кнопку "Сохранить".

После этого появится база различных контроллеров STM32, в которой нужно будет выбрать свой камень (в моём случае это stm32F103C8) и нажать "Ok".

Дальше нам предложат подключить к нашему проекту различные готовые куски кода и библиотеки драйверов. Достаточно поставить напротив соответствующего компонента галочку и он будет включен в наш проект. Это очень сильно облегчает жизнь программиста, но мы пока не будем этим пользоваться. Пока мы ставим перед собой цель разобраться как это всё работает и нас интересует проект на асме с чистого листа, поэтому не ставим никакие галочки, а просто жмём кнопку "OK".

Проект создан и окно uVision теперь выглядит вот так:

Слева расположен многофункциональный менеджер проекта, в котором в зависимости от выбранной внизу вкладки открывается либо структура проекта (вкладка Project), либо библиотека документации (вкладка Books), либо список используемых в проекте функций (вкладка Functions), либо шаблоны для часто используемых структур (вкладка Templates). Пользоваться менеджером просто и удобно, - когда мы выбираем камень, в библиотеку документации автоматически добавляются нужные книжки, список используемых в проекте функций также составляется автоматически. В области справа показывается содержимое открытых файлов проекта.

Добавим в наш проект asm-файл, в котором мы будем писать код. Щёлкаем по Source Group 1 правой кнопкой мыши и выбираем пункт Add New Item to Group 'Source Group 1'.

После этого появится окошко, в котором нам предложат выбрать тип добавляемого файла и попросят этот файл как-нибудь назвать. Выбираем тип файла Asm File, назовём его, скажем, Proga1 и жмём кнопку Add. В менеджере проекта появляется наш файл. Если по нему два раза щёлкнуть мышкой - он откроется в окошке справа.

Пока этот файл пустой, но прежде чем писать в него какой-либо код, давайте вернёмся ещё раз к менеджеру проекта. Если щёлкнуть правой кнопкой мыши на Target1 и выбрать пункт меню Options for Target 'Target1', то откроется окошко с настройками нашего проекта. Кое-какие из этих настроек нам придётся подправить, а кое-какие просто интересно посмотреть.

На вкладке Device можно поменять модель контроллера.

На вкладке Target указаны начальные адреса и размеры используемых областей памяти. В случае с нашим STM32F103C8 мы имеем внутри кристалла 64 кБ (0x10000) flash-памяти (IROM1 - internal ROM), которая расположена по адресам, начиная с 0x08000000, а также 20 кБ (0x5000) ОЗУ (IRAM - internal RAM), которая расположена по адресам, начиная с 0x20000000. Эти данные устанавливаются автоматически при выборе контроллера, но если вдруг они случайно испортились, то их всегда можно подглядеть в доке на камень, открыв карту памяти (memory map).

На вкладке Output нужно не забыть поставить галочку напротив пункта Create HEX File. Здесь же можно выбрать отдельную папку для сохранения всяких вспомогательных файлов, создающихся при компиляции проекта. (кнопка Select Folder for Objects. )

На вкладке Listing настраиваются параметры создаваемых файлов листинга, которые также можно направить в отдельную папку, чтобы не засорять папку проекта.

На вкладке User можно настроить запуск различных пользовательских программ и скриптов в процессе построения проекта

Вкладки С/С++ и Asm предназначены для настройки процедур препроцессинга и ассемблирования и пока нам не интересны.

На вкладке Linker настраивается линковщик. Здесь возможны три варианта:

1) Ничего не менять. В этом случае стартовые адреса областей памяти (flash и RAM) будут взяты те, что прописаны на вкладке Linker напротив пунктов R/O Base, R/W Base. Кроме того, линковщик захочет чтобы точка входа была обозначена меткой Reset_Handler, а начало таблицы прерываний - меткой __Vectors. Это можно увидеть в командной строке линковщика (Linker Control String). Запись --entry Reset_Handler говорит о том, что метку Reset_Handler нужно считать точкой входа, а запись --first __Vectors - о том, что секцию с именем __Vectors нужно расположить в памяти первой. Соответственно, если наши названия не будут совпадать с теми, которые ожидает линковщик, - мы при компиляции получим ошибки и ворнинги. Кроме того, мы должны экспортировать эти метки, директивой EXPORT.

2) Поставить галочку напротив Use Memory Layout from Target Dialog. Если посмотреть в командную строку линковщика, то можно увидеть, что теперь набор команд выглядит по другому. В таком варианте линковщик будет использовать адреса областей памяти, указанные на вкладке Target. Причём он сначала на основе этих данных автоматически создаёт так-называемый scatter-файл (файл с расширением .sct), а потом компилит проект на основе scatter-файла. Если мы откроем scatter-файл в блокноте, то увидим, что теперь компилер хочет, чтобы секция, помещаемая в самое начало flash-памяти (там должна размещаться таблица векторов прерываний, но об этом позже) называлась RESET. Но в этом случае линковщику уже не нужно чтобы мы что-то куда-то экспортировали и не обязательно, чтобы метка, обозначающая точку входа, называлась именно Reset_Handle. Зато теперь нам нужно либо в программе обозначить точку входа директивой ENTRY, либо на вкладке Linker в окошке Misc controls добавить директиву --first, указав после неё имя нашей метки, отмечающей точку входа. Кроме того, теперь линковщик выдаёт при компиляции ворнинг из-за того, что хочет найти секции, обозначенные как InRoot$$Sections. Но у нас таких секций и нет, поэтому на этот ворнинг можно смело забить (а чтоб не надоедал - можно выключить его, добавив в строку Disable Warnings на вкладке Linker).

3) Ну и наконец, последний вариант - можно самому создать этот самый scatter-файл, который расскажет линковщику где какие области располагать. Для этого галочка Use Memory Layout from Target Dialog должна быть снята, а в папке с проектом нужно создать файл с раширением sct. Подробно о том, чем этот файл заполнять и как использовать описано в пятой главе мануала RealView Compilation Tools. а нам для простейшей программы хватит и вот такого:

Здесь ROM_Start_Address - адрес начала flash-памяти (в нашем случае 0x08000000), ROM_Size - размер flash-памяти (в нашем случае 0x10000), RAM_Start_Address - адрес начала оперативы нашего камня (в нашем случае 0x20000000), RAM_Size - размер оперативы (в нашем случае 0x10000).

Директива *.o (First_Section_Name, +First) в секции ER_IROM1 означает, что надо во всех объектных файлах поискать область с именем First_Section_Name и разместить её самой первой в секции ER_IROM1. Для контроллеров STM32 первой во flash-памяти должна быть область с адресом вершины стека и таблицей адресов прерываний.

Директива .ANY (+RO) означает, что далее в этой секции будут размещены все остальные области, помеченные в исходнике как READONLY, причём без разницы в каком порядке.

Директива .ANY (+RW +ZI) в секции RW_IRAM1 означает, что в этой секции будут размещены все области, помеченные в исходнике как READWRITE, причём без разницы в каком порядке.

После того, как файл создан и заполнен нужно на вкладке Linker, в строке Scatter File указать путь к этому файлу. Для удобства, справа есть кнопочка ". " при нажатии на которую откроется проводник и вам останется только выбрать этот файл в проводнике.

Обратите внимание, что после выбора scatter-файла набор команд в строке Linker control string изменится. Оттуда пропадут команды, размечающие области памяти и распределяющие различные секции по этим областям, поскольку теперь предполагается, что это сделано в scatter-файле.

На вкладке Debug нужно выбрать как вы будете отлаживать свой проект. Если у вас есть отладочная плата, то нужно поставить флажок, напротив пункта Use: и далее выбрать из выпадающего списка свою отладочную плату. Если отладочной платы у вас нет, то нужно поставить флажок напротив пункта Use Simulator. Это даст возможность пользоваться для отладки встроенным в IDE симулятором.

Последняя вкладка, Utilites, предназначена для настройки программирования чипа из IDE, и, соответственно, при отсутствии одного из поддерживаемых этой IDE программаторов также не сильно нам интересна.

Полную информацию по настройкам компилятора, ассемблера и прочим можно узнать, почитав литературу из раздела Tools Users Guide на вкладке Books в менеджере проекта, а с минимальными настройками мы только что разобрались. На этом пока всё, а в следующий раз давайте попробуем написать в созданном ранее asm-файле какую-нибудь маленькую программулинку.

Часть 1. Установка MDK, создание проекта, основы Keil uVision.

Создание проекта в Keil

Создание проекта в Keil

Решил потестить Keil, ибо в нем есть чудо отладчик. После кокоса, пришлось нехило попотеть для того, чтобы просто создать проект. Поэтому оставляю подробную напоминалку.

Для начала нужно скачать кейл он бесплатный до 32кБ. После установки, нужно будет докачать поддержку для своего камня, этот шаг более менее очевиден.

Создадим проект в нем выбираем свой камень, в моем примере используется stm32f103t8, если списка камней нет — значит см. пункт выше.

Понадобится скачать либу. Тут остановимся. То что юзается в кокосе в основном CMSIS и SPL, поэтому здесь я решил идти тем же путем. В CMSIS находятся описания регистров самого микроконтроллера, аналог mega8.h у атмела, внутри SPL находятся функции для работы с периферией GPIO, USART и т.п. И то и другое лучше всего качать с официальных сайтов CMSIS с сайта arm, SPL с ST. Стандартная либа отличается для разных семейств например STM32F10x_StdPeriph_Lib_V3.5.0 для F100.

Когда читаешь информацию про либы вроде понятно, тухляк начинается когда нужно разобраться. В итоге проще запомнить что файлы SPL в основном называются так: stm32f10x_gpio.h stm32f10x_gpio.c, и т.п. К CMSIS относится stm32f10xx.h который тянет за собой еще кучу файлов, если компилятор ругается что не нашел какой то файл, полюбому, не указан путь к CMSIS, поэтому ищем файл и прописываем пути.

Вкладка Output ставим галочку Create Hex

Вкладка C/C++ — лезем в include paths, добавляем пути ко всем библиотекам я предпочитаю копировать библиотеку в папку проекта

В дефайнах указываем тактовую частоту и использовать библиотеку SPL
HSE_VALUE=16000000, USE_STDPERIPH_DRIVER

В misc control дописываем —c99 чтобы можно было инициализировать переменные в любом месте

Выбираем программатор, в моем случае St link, для серии 103 можно поменять внешний вид отладчика

Ищем файл stm32f10x_conf.h у меня он был X:\STM32F10x_StdPeriph_Lib_V3.5.0\Project\STM32F10x_StdPeriph_Template
кидаем в папку проекта

Пишем исходник Не забываем что все сишные файлы нужно включать в проект, т.е. как мы подключали main, подобным образом add existing.

2 комментария: Создание проекта в Keil

Создание проекта в Keil uVision

Один из вопросов, который возникает, при переходе на STM32:
«Какую среду разработки выбрать?»
Наверное самые популярные — это Coocox. IAR и Keil uVision. я пользуюсь последней.
Главное её преимущество перед другими — это мощный симулятор, с поддержкой периферии и множеством виртуальных приборов.
Все эти плюшки "упрощают жизнь" опытному разработчику и помогают новичку разбираться с богатой периферией современных МК. Ниже изображён скриншот интерфейса.

Для того чтобы её установить, качаем MDK-ARM с официального сайта.


И устанавливаем его.
Всё хорошо, но при создании проекта не получится выбрать нужный МК. Исправить это можно, установив необходимый пакет, например, для линейки STM32F1 xx этот пакет называется Keil.STM32F1xx_DFP.x.x.x.pack


Теперь когда среда установлена, приступим к созданию проекта.


Желательно создать отдельную папку для проекта так, как файлов будет много.


Если в проекте не используется библиотека StdPeriph достаточно подключить файл стартапа и ядро CMSIS .


Теперь необходимо создать или добавить нужные файлы.


После того как все необходимые файлы включены в проект, можно перейти к настройке проекта.


Если МК тактируется от кварца, необходимо указать его частоту.


Частоту тактирования SYSCLK. которая тактирует все шины МК, можно выбрать, в файле system_stm32f10x.c. для этого достаточно раскомментировать нужную.


Название функций, в которых обрабатываются прерывания, можно посмотреть в файле startup .


Приготовления закончены и можно переходить непосредственно к отладке, предварительно скомпилировав проект.


Для того чтобы начать отладку необходимо нажать кнопку, показанную на скриншоте.


Далее, пользуясь кнопками изображенными ниже, можно отлаживать программу.

На самом деле функционал программы гораздо шире, а в статье описан лишь тот минимум, который необходим для того, чтобы начать работу.

Похожие новости

Урок 1: Cоздание проекта в keil uvision 4 - Уроки по программированию stm32f1xx - Уроки по программированию stm32fxxx - Каталог статей - Статьи по stm

После установки и запуска программы, мы получаем окно следующего вида:

Теперь нам нужно создать проект. Для этого жмём Project -> New uVision project
Появится окно для сохранения созданного проекта. Придумайте ему осмысленное название и поместите в отдельную папку. Жмите Сохранить. Выскочит окно выбора микроконтроллера:

Для STM32VLDiscover выбираем микроконтроллер: STMicroelectropnics -> STM32F100RB. Жмём Ок. Появится окно с вопросом, создать ли стартовый файл. Жмём Да .

Теперь наш проект выглядит так:

Обратите внимание на вкладку Target 1 справа. Там хранятся наши файлы.
Теперь нам надо добавить в наш проект стандартные файлы: CMSIS и main.c
Скачать CMSIS можно например отсюда: CMSIS (Или с сайта с разделе Каталог файлов ) Создаём в папке с проектом 2 папки, одну назовём CMSIS. другую main. В папке main создаём текстовый файл, который сразу переименовываем в main.c. Далее щёлкаем по надписи Target 1 в keil, выбираем Add Group. Так создаём 2 группы. одну называем CMSIS. другую main. Основную можно переименовать в startup. В группу main добавляем файл main.c, а в группу CMSIS добавляем файлы system_stm32f10x.c и core_cm3.c. В итоге наш проект должен выглядеть так:

Теперь нужно прописать местоположение наших файлов в проекте. Если вы будете переносить проект на другой ПК, то эту процедуру нужно будет делать вновь. Щёлкаем правой кнопкой мыши по Target 1 и выбираем Options for Target "Target 1". Откроется окно вида:

Выбираем вкладку C/C++, Жмём на кнопку возле строки с надписью Include Paths. Там прописываем местоположение ваших добавленных файлов. Проще это делать нажимая на кнопку справа от строки, куда вы прописываете адрес. Должно получиться что-то типа такого:

Теперь ещё один штрих. Нам предстоит раскомментить правильную конфигурацию на наш МК. Для этого открываем наш main.c. Добавляем в него текст:
#include <stm32f10x.h>
int main(void)
<

>
Пытаемся собрать нажав на F7.
Возле main.c появится плюсик. Нажимаем на него и открываем файл stm32f10x.h .
В нём находим строки:

Здесь необходимо раскомментить строку, относящуюся к вашему устройству.
Расшифровка обозначений:
LD - Это МК STM32F101xx, STM32F102xx и STM32F103xx, имеющие на борту флеш память между 16кБ и 32кБ.
LD_VL -Это МК STM32F100xx, имеющий на борту флеш память между 16кБ и 32кБ.
MD - Это МК STM32F101xx, STM32F102xx и STM32F103xx, имеющие на борту флеш память между 64кБ и 128кБ.
MD_VL -Это МК STM32F100xx, имеющий на борту флеш память между 64кБ и 128кБ.
HD - Это МК STM32F101xx и STM32F103xx, имеющие на борту флеш память между 256кБ и 512кБ.
HD_VL -Это МК STM32F100xx, имеющий на борту флеш память между 256кБ и 512кБ.
XL - STM32F101xx and STM32F103xx МК с памятью между 512кБ и 1024кБ.
CL - STM32F105xx и STM32F107xx микроконтроллеры.

Для stm32Discovery необходимо ещё настроить SWD. Для этого опять заходим в окно Options for Target "Target 1" выбираем debug. меняем точку с Use simulator на Use и в качестве то, что использовать выбираем ST-Link Debugger. Жмём Settings. Тут выбираем SWD и жмём Ок. Во вкладке Utilites также выбираем ST-Link Debugger. Жмём Ок. Теперь проект настроен. Можно писать программу.

Драйвера на ST-Link можно взять отсюда:
ST-Link

Подключение библиотеки std_periph для stm32f2xx версии V1.1.2.


Если вы используете микроконтроллер серии stm32f2xx, то описанный выше способ подключения не подойдёт. Потому, что во-первых эта серия использует другие библиотеки, во вторых со временем структура этой библиотеки всё-таки меняется от версии к версии.
Скачать эту библиотеку можно в официального сайта .
Там нам нужна папка Libraries. В ней находятся нужные нам CMSIS и StdPeriph. Если с ссылкой что-то произошло или не хочется качать много мегабайт, то вот зеркало на архив, содержащий только библиотеки.
Для подключения библиотек, как и раньше требуется в группу std_periph добавить все файлы *.c. Только в CMSIS надо добавить только файл из папки CMSIS\Device\ST\STM32F2xx\Source\Templates под названием system_stm32f2xx.c.
Найдите в архиве и добавьте к проекту файл stm32f2xx_conf.h.
В main.c пропишите:

#include "stm32f2xx.h"
#include "stm32f2xx_conf.h"

Далее не забудьте раскомментировать в файле stm32f2xx.h строку USE_STDPERIPH_DRIVER. Помните, что файл по-умолчанию установлен только на чтение.
Выбирать тип камня не надо. Он только один STM32F2XX.
На этом с особенностями инициализации под stm32f2xx всё.

STM32F4xx_Поваренная книга анархиста

Буэнос диас!
Итак, что у нас в меню:

Тестовая плата STM32F4DISCOVERY
Библиотека STM32F4xx_DSP_StdPeriph_Lib_V1.3.0

STM32F4DISCOVERY


STM32F4DISCOVERY — плата для быстрого и удобного изучения микроконтроллеров серии STM32F4, ориентированных на мультимедийные приложения.

На плате установлен 32-битный ARM-микроконтроллер STM32F407VGT6 семейства Cortex-M4F со следующими характеристиками:
• Корпус LQFP100 (100 ножек)
• Напряжение питания: 1.8 — 3.6 В
• Частота: до 168 МГц
• Память программ (Flash): 1 МБайт
• ОЗУ (RAM): 196 Кбайт
• 4 Кбайт backup SRAM (аналог EEPROM)
• Поддержка инструкций DSP и чисел с плавающей точкой
• 16-битные таймеры: 2 базовых таймера, 8 таймеров общего назначения, 2 продвинутых таймера, 2 watchdog
• 2 32-битных таймера общего назначения
• USB 2.0 full-speed device/host/OTG со своим PHY на борту
• USB 2.0 high-speed/full-speed device/host/OTG с отдельным DMA, со своим full-speed PHY на борту, есть поддержка ULPI
• 10/100 Ethernet MAC с отдельным DMA, поддержка PHY-микросхем с интерфесами IEEE 1588v2, MII/RMII
• 3x SPI (37.5 МБит/с), 2 из них с мультиплексированными полнодуплексными I2S для качественной передачи звука
• 3x I2C с поддержкой SMBus/PMBus
• 4x USART, 2x UART: 10.5 МБит/с, интерфейс ISO 7816, LIN, IrDA, modem control
• 2x CAN (2.0B Active)
• SDIO (для SD-карт)
• DCMI — [от 8 до 14]-битный параллельный интерфейс камеры (до 54 МБайт/с)
• Аналоговый генератор случайных чисел
• Встроенный модуль расчёта CRC
• 82x GPIO (выводы I/O)
• RTC (Real-Time Clock)
• 3 12-битных АЦП, 2.4 миллиона выборок в секунду, 16 каналов, 7.2 миллиона выборок в секунду в режиме тройного чередования
• 2 12-битных ЦАП
• Контроллер DMA с 16 каналами и поддержкой FIFO и пакетной передачи
• Параллельный интерфейс LCD, режимы 8080/6800
• FSMC — контроллер статической памяти с поддержкой Compact Flash, SRAM, PSRAM, NOR и NAND
• Возможность отладки по JTAG или SWD


Что ещё установлено на плате:
• Отладчик ST-Link для отладки и прошивки МК, выведен разъём SWD для программирования других плат и контролллеров
• Есть выводы для внешнего питания 5 и 3 В
• Есть кнопка сброса
• Четыре светодиода и одна кнопка, доступные для программирования
• Все 100 выводов МК выведены по бокам платы штырьками по два ряда
• LIS302DL — MEMS-датчик движения, 3х-осевой цифровой акселерометр
• MP45DT02 — цифровой MEMS-микрофон
• CS43L22 — аудио-ЦАП со встроенным драйвером динамиков класса D
• Для USB OTG выведен разъём micro-USB. Если плату с заводской прошивкой подключить через этот разъём к компьютеру, то она будет вести себя как джойстик класса USB HID.

STM32 ST-LINK Utility


Данную программу удобно использовать для прошивки микроконтроллера при помощи hex файла.
Подсоединяем плату к ПК при помощи кабеля USB – miniUSB. Нажимаем на панели инструментов Connect.

Keil uVision4


Монстр программирования. Умеет делать абсолютно все, даже то, что не умеет ;-)

Создадим новую папку, куда будем помещать все наши проекты. Например, STM32. В этой папке создадим папку для первого проекта. Назовем ее 00_Test. Так же в папке STM32 создадим папку _Lib – сюда мы поместим фалы библиотек CMSIS и Standard Peripheral Library, и каждый новый проект будет ссылаться на эту папку в поиске библиотек.
В папке 00_Test создадим папки:
Project – здесь будут служебные файлы, которые будет создавать программа Keil uVision4 для данного, конкретного проекта.
user – файлы пользовательского кода (программа, которая будет зашиваться в микроконтроллер). В этой папке создаем текстовый файл main.c. Напишем в нем коротенький код

#include «stm32f4xx.h»
int main(void)
<
while(1) <>
>

Этот код нам понадобится потом.

P.S. имена папок, а так же структура проекта – личное дело программиста, но надо стремиться к упорядоченному структурированию, чтобы проект был “читабельным” для других программистов. Папку Project можно и не создавать, но тогда все служебные файлы будут “замусоривать” корневой каталог папки 00_Test.

Будем использовать 2 библиотеки:

1. CMSIS (выпускает фирма ARM)
2. Standard Peripheral Library (выпускает фирма STMicroelectronics)

Обе библиотеки бесплатны и доступны для скачивания (эти две библиотеки объединены в одном архиве) на www.st.com/

Причем есть два варианта библиотеки.

1. Библиотека для микроконтроллера STM32F407VGT6 вообще STM32F4xx_DSP_StdPeriph_Lib_V1.3.0 (stm32f4_dsp_stdperiph_lib.zip)

www.st.com/web/en/catalog/tools/FM147/CL1794/SC961/SS1743/PF257904?s_searchtype=keyword

Мы будем пользоваться библиотекой STM32F4xx_DSP_StdPeriph_Lib_V1.3.0

Заходим в папку
STM32F4xx_DSP_StdPeriph_Lib_V1.3.0
v
Libraries
v
И копируем две папки CMSIS и STM32F4xx_StdPeriph_Driver в нашу папку _Lib

Удаляем в папке CMSIS (которую мы скопировали в _Lib) все, кроме папки Device.

Заходим в папку
STM32F4xx_DSP_StdPeriph_Lib_V1.3.0
v
Project
v
STM32F4xx_StdPeriph_Examples
v
ADC
v
ADC_DMA
v
Копируем файл stm32f4xx_conf.h в нашу папку STM32F4xx_StdPeriph_Driver
Далее проделаем следующие манипуляции:

_Lib
v
CMSIS
v
Device
v
ST
v
STM32F4xx
v
Include
v
В свойствах файлов stm32f4xx.h и system_stm32f4xx.h снимаем галочку “Только чтение”

Запускаем программу Keil uVision4 и создаем новый проект.


Далее программа предлагает автоматически создать файл конфигурации данного микроконтроллера – startup_stm32f40xx.s. Соглашаемся.


Переименуем папку Source Group 1 (в которую программа поместила файл конфигурации микроконтроллера startup_stm32f40xx.s) в startup. Для этого щелкаем один раз левой кнопкой мыши по имени папки и нажимаем F2 – имя папки теперь доступно для переименования. Аналогичным образом переименовываем имя проекта из Target 1 в 00_Test.

Добавим ранее созданный файл main.c. в папку user. Для этого дважды щелкаем левой кнопкой мыши по заголовку папки (или при помощи правой кнопки вызываем контекстное меню).



Итак, мы создали на жестком диске папку проекта 00_Test. В этой папке создали еще две папки: Project и user.
Project – тут программа будет размещать свои служебные файлы и главный файл проекта Test.uvproj
user – тут мы будем размещать файлы кода, который будем загружать в микроконтроллер.
В среде программирования Keil uVision4 создали новый проект 00_Test. В структуре проекта сейчас две папки: startup и user
startup – в этой папке находится файл конфигурации микроконтроллера
user – в этой папке содержатся файлы из папки user, которая была создана ранее на жестком диске.

На жестком диске больше никаких папок создавать не будем. Но в среде программирования в структуре проекта создадим еще две папки: CMSIS и StdPeriphLib. В этих папках будут содержаться наши библиотеки.

Подключим к этим папкам необходимые файлы из папки _Lib.

Для StdPeriphLib:
_Lib
v
STM32F4xx_StdPeriph_Driver
v
src
v
все файлы (кроме файла stm32f4xx_fmc.c)

В опциях проекта необходимо указать пути к этим папкам библиотек





Запускаем компиляцию проекта – F7.

Если все правильно, то ошибок не должно быть.

Напишем несложный код для мигания светодиодом

Обращаю внимание, что код должен заканчиваться пустой строкой (строка №45).

Запустим компиляцию (F7). Теперь можно “зашить” проект в микроконтроллер:


Если все было сделано правильно, то на тестовой плате должен мигать зеленый светодиод. Чтобы выйти из окна отладчика, нажимаем Ctrl+F5.

УРА.
Продолжение следует…