Keil uvision 5 как работать
Перейти к содержимому

Keil uvision 5 как работать

  • автор:

Начало работы с STM32 в Keil MDK-ARM

STM32 — это семейство 32-разрядных микроконтроллеров фирмы STMicroelectronics.

Микроконтроллеры содержат микропроцессорное ядро ARM, точнее ARM Cortex-M. Это ядро присуще не только микроконтроллерам STM32, оно существует само по себе, и на его основе выпускается множество микроконтроллеров от разных производителей.

Keil MDK-ARM (произносится «Кеил эм-ди-кей арм») — это среда разработки для микроконтроллеров с ядром ARM Cortex-M.

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

Существует множество других сред разработки. Например, последнее время автор пользуется средой, которую описал в другой статье. Но в этой пойдет речь о Keil MDK-ARM, потому что она имеет большую популярность и достаточно проста.

Первым делом качаем последнюю версию Keil MDK-ARM с официального сайта. Она имеет ряд ограничений, которые не влияют на большинство задач. Самое существенное ограничение состоит в том, что среда не сгенерирует программу объемом больше 32 КБ, но такую программу надо постараться написать. Хотя микроконтроллеры STM32 часто имеют намного больший объем, вплоть до 2 МБ.

На момент написания статьи последняя версия Keil MDK-ARM — 5.18 (от 5 февраля 2016).

Чтобы скачать среду, надо заполнить форму на сайте Keil:

Форма для скачивания MDK-ARM

Следует ввести настоящий адрес электронной почты, иначе сайт будет ругаться. После заполнения и нажатия Submit, дается ссылка для скачивания:

Сcылка для скачивания MDK-ARM

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

Качаем и устанавливаем. Установленная среда занимает на диске около 1,3 ГБ. После установки автоматически запускается менеджер пакетов:

Менеджер пакетов

Он нужен, чтобы качать, устанавливать и обновлять различные дополнения (пакеты).

Менеджер пакетов появился в MDK-ARM версии 5, что уменьшило объем установочного файла почти в два раза (версия 4.71 была объемом 550 МВ, а версия 5.00 — 300 МБ).

В левой части менеджера мы выбираем устройства (микроконтроллеры), а в правой соответствующие им пакеты.

Допустим, нам надо вести разработку под микроконтроллер STM32F407VG, который установлен на отладочной плате STM32F4-Discovery.

Тогда находим этот микроконтроллер в списке слева и устанавливаем соответствующий пакет DFP:

Установка DFP

Можно заметить, что среди установленных пакетов есть CMSIS. CMSIS — это библиотека для ядра Cortex-M, общая для всех микроконтроллеров. Библиотека разрабатывается фирмой ARM и доступна для скачивания с официального сайта после регистрации. Можно было бы не устанавливать этот пакет, а пользоваться официальным выпуском библиотеки, но это дополнительные сложности.

Закрываем менеджер пакетов и запускаем Keil uVision5 (произносится мю-вижен):

Значек Keil uVision5

Keil uVision5 — это часть MDK-ARM, графический интерфейс среды, который включает редактор кода:

Keil uVision5

Я рекомендую произвести небольшую настройку редактора. Выбираем меню «Edit -> Configuration…», и производим следующие настройки:

Настройка Keil uVision5

  1. Кодировка UTF-8.
  2. Правая граница кода в 80 символов. по 4 пробела.

Эти настройки довольно спорные. У каждого разработчика свои предпочтения.

Теперь создаем проект. Для этого выбираем меню «Project -> New uVision Project…». В открывшемся окне выбираем расположение и имя проекта. Для проекта лучше создать отдельную папку и сохранить проект туда.

После сохранения появится окно выбора устройства. Выбираем нужный микроконтроллер и нажимаем «ОК». Если бы мы не установили нужный пакет, то микроконтроллера не было бы в списке:

Выбор микроконтроллера

В следующем окне предстоит выбрать компоненты, которые будут использоваться в проекте. Необходимо выбрать «CMSIS:CORE» и «Device:Startup»:

Компоненты CMSIS и Startup

После нажатия «OK» процесс создания проекта завершится.

В дальнейшем вы всегда сможете запустить окно выбора компонентов, чтобы добавить или удалить их. Для этого надо выбрать меню «Project -> Manage -> Run-Time Evironment…».

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

Изначальная структура проекта

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

Здесь мы видим название проекта «example», цель проекта «Target 1», пустую группу файлов «Source Group 1», компоненты CMSIS и Device.

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

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

В структуре мы видим два файла. Один с расширением «s». Он содержит исходный код на языке ассемблера. Другой с расширением «с». Он содержит исходный код на языке Си.

Собрать проект и получить файл прошивки можно нажав клавишу F7. Но в таком виде проект не будет собран и вы получите ошибку, потому что отсутствует функция «main()».

Функция «main()» — это точка входа в вашу программу, то с чего начинается программа. Ее наличие обязательно если вы пишите программу на языке Си.

Давайте создадим эту функцию. Кликнем на группе «Source Group 1» правой кнопкой и выберем «Add New Item to ‘Source Group 1’…» (перевод: добавить новый элемент в группу ‘Source Group 1’). Создадим файл «main.c»:

Создание файла main.c

В созданный файл добавим код:

В конец файла стоит добавить пустую строку, иначе при сборке вы получите предупреждение «warning: #1-D: last line of file ends without a newline».

Теперь проект можно собрать клавишей F7. В результате вы получите файл «Objects\example.axf» (по умолчанию имя файла совпадает с именем проекта). Файл располагается в папке с проектом.

Обычно разработчику требуется файл прошивки в формате Intel HEX. Чтобы получить его, надо произвести настройку цели. Чтобы увидеть настройки цели нажмите Alt-F7, перейдите на вкладку «Output» и выберите «Create HEX File».

После очередной сборки вы получите файл «Objects\example.hex».

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

Запустим выбор компонентов с помощью меню «Project -> Manage -> Run-Time Evironment…» и выберем компонент «Device:STM32Cube Hal:GPIO».

В нижней части окна мы увидим неудовлетворенную зависимость «Device:STM32Cube Hal:Common». Выберем этот компонент и увидим еще больший список зависимостей. Необходимо выбрать все требуемые зависимости:

  • Device:STM32Cube Hal:Common
  • Device:STM32Cube Hal:RCC
  • Device:STM32Cube Hal:PWR
  • Device:STM32Cube Hal:Cortex
  • Device:STM32Cube Framework:Classic

STM32Cube — это библиотека, которую предоставляет STMicroelectronics.

При выборе компонентов мы выбираем какие возможности этой библиотеки использовать.

Микроконтроллер, кроме ядра, содержит большое количество периферийных устройств: АЦП, ЦАП, таймеры, различные интерфейсы и многое другое. Каждое периферийное устройство имеет свое название. Например, устройство для работы с портами микроконтроллера называется GPIO, об этом можно узнать из документации на микроконтроллер.

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

Существует большое количество документации по STM32Cube. Но основное описание по работе с периферийными устройствами содержится в руководстве по HAL. Это руководство разработчик использует большую часть времени. Обратимся к нему, чтобы заставить шевелиться ножки микроконтроллера.

Для начала подключим HAL в нашей программе, добавив строчку перед определением функции «main()»:

В самом начале функции «main()» вызовем функцию «HAL_Init()», которая инициализирует библиотеку.

Таким образом мы получим следующий код в файле «main.c»:

Продолжение следует…

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

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

В статье я хотел еще привести конечный код и объяснить, как он работает. Могу лишь поделиться непроверенной программой:

STM32F030F4P6 Keil Первый проект

В этой статье хочу рассказать как создать проект в среде Keil uVision5 версии V5.29.0.0. для микроконтроллера STM32F030F4P6 фирмы ST для которого была сделана плата которую я описал в статье STM32F030F4P6 hand-made, так же показал в другой статье STM32F030F4P6 Blink CubeMX как сделать проект в среде CubeMX и управлять светодиодом. Чем нравиться создавать программы в среде Keil — просто, быстро, и все то, что вставляешь в код — это ты сделал самостоятельно (ну или хочется так думать — что самостоятельно). STM32F030F4P6 (и не только он) позволяет расширить свои познания о среде Keil uVision, и так как мы не планируем останавливаться на одном типе микроконтроллеров — создадим для себя основу для будущих проектов. Мы создадим пустой проект с примером настройки портов и управления светодиодом как в статье STM32F030F4P6 Blink CubeMX, но в среде uVision без CubeMx.

Цель создания этой статьи — запомнить последовательность действий при которой создается новый проект, тем кто это делает постоянно скорее всего это будет не интересно, а вот тем кто только начинает осваиваться — пригодиться точно. Я постараюсь рассказать о создании — максимально подробно. Конечно, на первых шагах — ошибки будут возникать на разных этапах создания, но не ошибается тот кто ни чего не делает ..

Итак начнем — первый проект мы будем создавать в среде Keil (см. ниже) то не обновился -обновитесь, всегда лучше использовать последние версии программного обеспечения.

Размер памяти в STM32F030F4P6 16Кб — 32 Кб разрешенного бесплатного использования программы uVision — воспользуемся этим для своих проектов.

r31_0

Запускаем Keil и начинаем создавать проект.

Делаем последовательно как указано на фото.

r1_0

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

r2_0

После ввода названия и нажатия Сохранить — выходит окно выбора микроконтроллер для созданного проекта. Мы соответственно выбираем STM32F030F4Px — т.к. у нас STM32F030F4P6

r3_0

Как только микропроцессор выбран — нажимаем Ok и попадаем в окно в котором необходимо выбрать первоначальные библиотеки и файлы которые буду установлены в проект.

r4_0

Проект у нас простой — в открытом окне (см. ниже ) добавим основное

r5_0

Открываем вкладку Device — появляются подпункты меню. Нас интересует пункт Startup. Мы хотим программировать микроконтроллер с использованием библиотек Keil поэтому меняем в строчке Device — (второй столбец на фото) STM32CubeMx на Standalone как на фото ниже

r6_0

r7_0

После выбора — устанавливаем во всем окне нужные нам библиотеки как на фото ниже.

r8_0

Выбрали — нажимаем OK и выходим в основное окно в котором будут видны подключенные файлы.

Поменяем название нашей папки на более удобное.

r9_0

Поменяли (можно не менять — по желанию).

Приступим к первоначальной настройке свойств проекта и программатора.

Для этого открываем

r10_0

Открывается первая страница — на ней устанавливаем частоту кварцевого резонатора установленного на плате — в моем случае Xtal (MHz) — 16.0 и устанавливаем «галку» на пункте Use MicroLib см. на фото ниже.

r11_0

Следующее окно которое нас интересует — Output. Устанавливает «галку» на Create Hex File — это не обязательно если шить прямо из программы Keil. Но при использовании другой программы для прошивки микроконтроллера — этот файл необходим.

r12_0

Далее переходим на вкладку для настройки программатора и отладчика программы — Debug. В правой ее части выбираем тот программатор который будем использовать с платой. Я выбирают китайский клон — это не правильно использовать не оригинальное оборудование для программирования. но дешево и просто ..

r48_0

И по этому ST-Link Debugger настойки следующие — Settings

R13_0

Если видим окно ниже с пустым Unit — проблема может быть

1. Программатор не подключен к PC

2. Программатор подключен но не исправен

3. Программатор не установлен в системе WINDOWS (не установлены драйвера и т.п.)

r14_0

В моем случае это пункт 1. Подключаем программатор в USB порт в окне с пустым Unit — нажимаем Ok и выходим в первое окно. Дожидаемся когда WINDOWS установит устройство — убедиться можно открыв — Диспетчер устройств и в дереве устройств увидеть

r32_0

Все отлично переходим дальше.

Открываем окно Debug видим ST-LINK/2

r15_0

Далее устанавливаем порт для отладки SW (если не установлен) и переходим во вкладку Flash Download и устанавливаем все галки как на фото ниже.

r16_0

«Галки» установлены добавим Programming Algorithm для этого нажимаем ADD

r17_0

В окне которое открылось добавляем алгоритм и нажимаем Add

r18_0

r19

Нажимаем OK — Ok и выходим в основное окно программы. Минимальные настройки для проекта установлены.

Добавляем в проект основные файл main.c и main.h

r20_0

Сначала main.c

r21_0

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

ЖЕЛАТЕЛЬНО (но не обязательно) для удобства хранить все по своим папкам. Я заранее их в папке проекта не создал поэтому создам из окна создания файла дл этого при выборе куда сохранить выбираю папку с проектом и создаю папку Main и в нее сохраняю и main.c main.h

r22_0

r23_0

Тоже самое с main.h

r24_0

После создания main.h — слева мы видим наш проект с созданными файлами. Начинам заполнять файлы main.c и main.h первоначальным содержимым.

r25_0

main.c содержимое файла

Конец файла main.c

НЕ ЗАБЫВАЕМ О ПУСТОЙ СТРОКЕ В КАЖДОМ ФАЙЛЕ!!

main.h содержимое файла

#ifndef MAIN_H
#define MAIN_H

Конец файла main.h

Наполнили файлы содержимым — все сохраняем

r26_0

r27

собираем проект и убеждаемся, что на этой стадии ошибок нет!!

r30_0

Мы создали пустой проект и в нем на этой стадии ошибок нет .

Все вроде просто НО !! Самое интересное начинается дальше .

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

port_ini.c и port_ini.h и сохраняем их директорию Main

r33_0

r34_0

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

Содержимое файла port_ini.c

#include «port_ini.h»
#include «stm32f0xx.h»

Конец файла port_ini.c

Содержимое файла port_ini.h

#ifndef PORT_INI_H
#define PORT_INI_H

#include «stm32f0xx.h»

#endif
Конец файла port_ini.h

И дополняем файл main.c строчкой

#include «main.h»
#include «port_ini.h»

Переходим во вкладку port_ini.c

r35_0

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

r1_1

Подключим светодиод к PA5.

Подключаем СВЕТОДИОД через РЕЗИСТОР исходя из потребления светодиода!

Порт может выдать нам 25 mA — следовательно ток светодиода не может быть больше этого значения!! Я обычно для информационных диодов рассчитываю ток в 10 mA (или что около того — все зависит от наличия нужного резистора). Закон Великого Ома объяснять не буду. Думаю, что вы сами сможете пересчитать нужный номинал резистора. С учетом того, какое напряжение питание будет использовано. В моем случае на плате только 3.3v и я буду использовать схему подключения к порту следующую;

PA5 — > резистор — > «+» светодиода «-« светодиода на GND.

Включаем светодиод — > устанавливаем порт PA5 в «1».

Выключаем светодиод -> устанавливаем порт PA5 в «0».

С какой частотой будем моргать пока не важно.

Итак настрои порт PA5 как выход в файле Port_ini.c.

Для этого добавляем в файл следующие строчки

#include «port_ini.h»
#include «stm32f0xx.h»

// Конфигурируем порты для управления

void GPIO_init(void)
<
GPIO_InitTypeDef GPIO_user; // создаем структуру
RCC_AHBPeriphClockCmd(RCC_AHBPeriph_GPIOA ,ENABLE); // включаем тактирование порта А

// Светодиод подключенный к порту выход РА 5
GPIO_user.GPIO_Pin = GPIO_Pin_5;
GPIO_user.GPIO_Speed = GPIO_Speed_Level_3;
GPIO_user.GPIO_Mode = GPIO_Mode_OUT;
GPIO_user.GPIO_OType = GPIO_OType_PP;
GPIO_user.GPIO_PuPd = GPIO_PuPd_NOPULL;
GPIO_Init(GPIOA, &GPIO_user);
>

И видим следующую картину

r36_0

Одни красные кресты .

И правильно т.к. мы решили поработать с функциями которые не обнаружены в нашем проекте.

Их необходимо добавить. Это набор стандартных библиотек от фирмы ST — STM32F0xx_StdPeriph_Driver Для этого необходимо их скачать с официально сайта ST .com или у меня ссылка.

Скачиваем архив и открываем. Содержимое архива см. ниже

r37_0

Нам нужна папка выделенная на фото выше и еще CMSIS.

Распаковываем архив и копируем эту папку в свой проект. В моем случае папка получает вид

добавлена папка Device (она находиться в папке CMSIS) и STM32F0xx_StdPeriph_Driver

m

Для нормального запуска необходимо сделать следующее

1. Прописать папки в настройках проекта.

2. Добавить в любую прописанную папку файлы — в моем случае они в папке Device.

stm32f0xx.h и stm32f0xx_conf.h и system_stm32f0xx.c- они есть в выше скачанном архиве.

Скачать этот файл — system_stm32f0xx.c и поместить его по месту хранения в проекте — в моем случае D:\Keil_pj\030\RTE\Device\STM32F030F4Px — это файл созданный в программе разработанный фирмой ST — STM32F0xx_AN4055_V1.0.1 — STM32F0xx_Clock_Configuration_V1.0.1.xls — почитайте про него обязательно!!

Так прописываем папки. Открываем настройки проекта

m1

Нажимаем на кнопку с тремя точками на против строки Include Paths — выходит окно в котором добавляем пути к папкам. В итоге должно получиться так как на фото ниже

m2

Нажимаем ОК

В строке Define вводим строчку USE_STDPERIPH_DRIVER,STM32F030xx

m4

Закрываем Keil uVision.

Пути к файлам прописали теперь копируем файл stm32f0xx_conf.h

В папку D:\Keil_pj\030\Device\ST\STM32F0xx\Include в результате она получается

m5

Остается файл system_stm32f0xx.c его копируем в папку проекта по адресу

D:\Keil_pj\030\RTE\Device\STM32F030F4Px Папка будет с двумя файлами

m7

И дальше переходим в основное окно Keil и собираем проект для проверки

m8

Если все сделано по пунктам то получим окно с предупреждением

m9

Исправляем и эту ошибку — причем она будет возникать тогда когда будем в других проектах добавлять стандартные библиотеки.

m10

В открывшимся окне добавляем файлы — нажимаем Add Files

m11

И добавляем файлы

port_ini.c

m12

port_ini.h

m13

Стандартные библиотеки которые по адресу D:\Keil_pj\030\STM32F0xx_StdPeriph_Driver

stm32f0xx_gpio.h

stm32f0xx_gpio.c

stm32f0xx_rcc.h

stm32f0xx_rcc.c

В итоге после дополнения файлов получаем

m16

m8_1

И получаем окно результата

m17

Хорошо! Ошибок нет.

Открываем port_ini.c и дополняем его.

#include «port_ini.h»
#include «stm32f0xx.h»
uint16_t delay_count;

// Конфигурируем порты для управления

void GPIO_init(void)
<
GPIO_InitTypeDef GPIO_user; // создаем структуру
RCC_AHBPeriphClockCmd(RCC_AHBPeriph_GPIOA ,ENABLE);// включаем тактирование порта А // Светодиод подключенный к порту выход РА 5
GPIO_user.GPIO_Pin = GPIO_Pin_5;
GPIO_user.GPIO_Speed = GPIO_Speed_Level_3;
GPIO_user.GPIO_Mode = GPIO_Mode_OUT;
GPIO_user.GPIO_OType = GPIO_OType_PP;
GPIO_user.GPIO_PuPd = GPIO_PuPd_NOPULL;
GPIO_Init(GPIOA, &GPIO_user);
>

//Задержка для светодиода
void delay_ms(uint16_t delay_temp)
<

Открываем port_ini.h и дополняем его

#ifndef PORT_INI_H
#define PORT_INI_H

void delay_ms(uint16_t delay_temp);
void GPIO_init(void);

Переходим в main.c и дополняем его

#include «main.h»
#include «port_ini.h»

int main(void)
<
SysTick_Config(SystemCoreClock / 1000);
// Настраиваем порты
GPIO_init();

while (1)
<
GPIO_ResetBits(GPIOA, GPIO_Pin_5); //Подаем «1» на PA5
delay_ms(500);
GPIO_SetBits(GPIOA, GPIO_Pin_5); //Подаем «0» на PA5
delay_ms(500);
>

Все сохраняем и

m18

Должно выйти окно без ошибок

m19

Хорошо! Осталось проверить — записать в микроконтроллер и увидеть как включается и гаснет светодиод

m20

Загрузка в микроконтроллер должна пройти без ошибок и должен быть создан *.hex файл для внешнего программатора

Getting started with Keil uVision: Write your first Program for Tiva LaunchPad

In the last tutorial, we have seen how to download and install keil uVision. In this tutorial, I will explain to you how to do the required configuration on a project in Keil in order to make it compatible with your microcontroller. After that, I will explain how to get started with Keil and create your first project in Keil in detail.

Introduction to keil uVision

As we have discussed in previous tutorial that keil uVision is an IDE used to build and load codes on TIVA C series microcontroller. In the previous tutorial we learned how to download and install the latest version of keil uVision and now we are at a position to learn how to write our first program in keil which can be loaded on TIVA C series microcontroller. We will do the relevant settings in a simple program to make it compatible with the microcontroller under consideration so that we can burn (load) it on the board. Lets’ get started with keil (installed in previous tutorial).

Getting started with keil uVision

Once you get done with the downloading and installation part of Keil it will appear in you search bar.

Open Keil IDE

Open the search bar in your computer and type Keil and click on Keil uVision5 as shown in the figure below.

  • Once you click on this icon keil will start loading to show you the main window. It will take some time to open the page,
  • After the IDE is loaded completely a getting started window will appear as shown in the figure below:

Create New Project

This is where all your currently open projects will appear and your main code and all the codes you run will appear in the greyed window. To work on a program or a debugging environment we first have to create a project where will save our main and startup files. If will give you a brief and concise overview of the startup files in the upcoming tutorials, you don’t have to be worried about them at this point of your understandings.

Lets’ now move to create a new project portion. On the main page, as shown in the figure above, a bar is shown with file edit and view, etc. options in it. From that bar, select Project and then select New uVision Project as shown in the figure below,

  • When you click on the New uVision Project a window will appear as shown in the figure below,

Select Tiva C series LaunchPad

This window will ask you where you want to save the project, select the designated folder and also name you project according to the working it is going to perform in future. I will use this project in the upcoming tutorial for the purpose of blinking of built in LEDs present n the F port of TIVA board.

Hence, I named the project as a blink (In accordance with the task it is going to perform). After naming the project click Ok. After saving the name another window asking you to select the device with which you want to integrate this code. This is where we select the name and type of our board. Refer to the figure below:

  • In this window two boards are present one is ARM and the other is Texas Instruments as is obvious from the above figure. TIVA C boards are manufactured by Texas Instruments hence the board we will select at this stage is Texas Instruments. When we extend this block all the downloaded board of Texas Instruments will appear as shown in the figure below,
  • As we know that TIVA c series is the only option available so we extend that too, as shown in the figure below,
  • At present only two classes of TIVA C series is installed, we can install more according to our need from pack installer as we have discussed in previous tutorials, but at present, we need TM4C123x Series because our microcontroller (TM4C123G) lies within this class. Extend TM4C123x Series to select the board of our choice from the series as shown in the figure below,
  • The microcontrollers present under this series are shown in the above figure. One thing to be noted down here is that the type of the microcontroller. we are using is TM4C123GXL but in this series you couldn’t find any board named like this. The alternative name for this board is TM4C123GH6PM this is the same as TM4C123GXL.
  • But with a different name only in the IDE. Remember this name of save it somewhere for future use, where we will be creating projects very often. See the figure below for the alternative name
  • After you select the name of the microcontroller, simply click ok. The window will then ask you to choose the runtime environment of your choice. As I have mentioned previously that the startup files need to be included in every code so this is a portion where we will choose the inclusion of startup files. The window for managing runtime environment is shown in the figure below:
  • This window will select all the files which need to be included in your programming environment. For example, if you want to include graphics in your program you have to select it from here first. At this point, we only need to include two files one is the core file that is present under the category of CMSIS and the other is a startup file that is present under the category of Devices. Click on the plus sign present with the CMSIS category from the option given select CORE and mark the checkbox in front of CORE and do the same with the devices option. Extend the plus sign and mark the checkbox of a startup as shown in the figure below:

Project Settings

We will discuss comprehensively this startup file in the upcoming tutorials. After selecting the files click on Ok and the project will be created. The created project will appear on the project explorer on the left side of the main page. Right-click on target 1 and select Manage Project items as shown in the figure below,

  • A window that manages the items of the project will appear as shown in the figure below,
  • This is where you can rename all the folder and files of your project according to your need i.e. here I will name the target 1 as TM4C123G and Source Group 1 as Src because this is where all the source files of your code will reside as shown in the figure below,
  • In the Src folder named previously we will include our main file (.c file) in which we will write our C language code to be executed on the board. On the Src folder click right and select Add new items to Group “Src” as shown in the figure below,

Keil Creating C file

Clicking on this adding item block a window will appear asking you to select the extension of your file and to write the name of your file as shown in the figure below. Select the C file (.c) option and in the name bar write the nae with which you want to save the file i.e. I named my file as main.c here. Don’t forget to type the extension of the file (.c in our case) along with the name of the file as shown in the figure below

  • After you click add on this window, a main.c file will appear under the folder of Src. When you click on the main.c file it will open in the grey environment as shown in the figure below,

Keil Configuration Settings

The only thing left in the configuration of the project to make it compatible with TM4C123G board is its flash configuration. As the name represent flash is the configuration of the port from where TIVA board will be connected to your computer. Without the configuration of flash your will not be able to burn you code on the TIVA board. It will give you a flash error. In order to avoid this ambiguity lest configure some of the flash configuration needed to communicate with TIVA board. From the top bar select Flash and then select Configure flash tools as shown in the figure below,

  • This will open a window showing a number of tools related to flash that can be configured according to the type of our microcontroller and our need. Refer to the figure below, for flash configuration tools window,
  • You have nothing to change here because most of the default properties of the flash are compatible with TIVA C series boards, On the top bar a number of options are present. From these items select the Debug options as we are concerned with debugging configuration of flash. The debug configuration of the options is shown in the figure below,
  • From this block we only have to change the simulator settings as shown in the figure below. Check the Use block present on the top right corner of the block and from the dropdown select Stellaris ICDI and then click ok. These are all the configurations needed to run a program on TM4C123G board.

Your IDE is now ready to write a code to be built on the TIVA board. We will write a code that will blink built-in LEDs present on TIVA board in our next tutorial.

Create new STM32 project in Keil uVision 5 tutorial

In this tutorial we see how to create project in KEIL MDK uVision 5 for STM32 ARM Cortex-M based MCUs. Its for beginners who want to get started in programming STM32 with Keil. This tutorial also applies for all supported devices across the STM32 Family viz. STM32F0/F1/F2/F4/F7/etc/. Keil uV 5 is much different than older Keil uV4. uVision 5 has integrated pack installer which is used to install specific MCU family packs and other libraries. To create project for STM32 MCU, you will first need to install MDK5 software packs for your microcontroller family. Either you can download it separately or do it from within the IDE.I recommend adding software packs using IDE.

Basically three(or more?) types of STM32 Keil projects can be created:

  1. One that uses CMSIS(core) only.
  2. One that is based on Standard Peripheral Library.
  3. Finally, one that is based on HAL (Hardware abstraction Layer) Library.

For the sake of this tutorial we will see how to create CMSIS and SPL based STM32F103C8 Keil uv5 project, as an example, but will work exactly the same for STM32F0, STM32F4, and other families. I will cover HAL based projects in another tutorial.

1) Installing prerequisite STM32 Keil software pack

If already installed, you can SKIP this.

Step A. Download latest Keil MDK uVision5 from Keil’s website.

Step B. Install Keil uVision 5 to default path.

STEP C. Open Keil 5 and click on “Pack Installer” icon as shown below:

STEP D. On the left half on the window, under “Devices” type “STM3F103C8”
(or other device name depending on the device present on your development board) in search box and select the MCU in the list below. Now, on the right half of the window click on the “install” button which is towards to the right of “Keil:STM32F1xxx_DFP” and “Keil:STM32NUCLEO_B” . Repeat this step if want to add support for other device family. After this, wait until pack installer finishes downloading the required pack files for selected MCU.

keil install software pack for STM32

Alternatively, you can manually download the software pack and install it directly from MDK5 Software Packs. It will be present Under “KEIL-> STMicroelectronics STM32F1 Series Device Support, Drivers” . In general for STM32Fx Devices.

STEP E. After installing from Pack Installer you will get a confirmation to reload packs. Click “Yes” as shown below:

2) Step by step Tutorial

Okay, so now we have the necessary packs installed to create our first STM32 project in Keil 5. Just follow the steps mentioned below to create a new project in Keil uV 5 or if your project is not working properly:

Step 1.

Open the Keil IDE, under main menu goto “Project->New uVision Project…” and a window prompt will open asking to save the new project. Type your desired project name and save.

new project

Step 2.

After that, a new window will appear as shown below. Make sure “Software Packs” is selected for the 1st drop down. In the search box below it, type “STM32F103C8” and then select the device from list below. For e.g.: STM32F103C8 for STM32 Blue Pill, STM32F103RB for Nucleo-F103RB, STM32F030R8 for Nucleo-F030R8 and so on.

select STM32 target MCU

Step 3.

A. For CMSIS:
Inside the “Manage Run-Time Environment Window” select the check boxes for “CORE” under “CMSIS” and “Startup” under “Device” . If you want to select any other libraries you can do so by selecting the respective checkboxes. Selecting “Startup” will automatically add all the necessary startup/boot files required for STM32F1xx device, so we don’t have to import them from external sources. The selection of libraries can be changed any time later.

Select libraries

B. For Standard Peripheral Library (SPL):
If you want to use SPL, the select the required peripheral library components as required. Note that some components have dependencies as well, so you will also need to include dependent components. For. E.g. GPIO needs RCC to enable clocks.

Select components for SPL

Step 4.

Now click on “Options for Target” button as shown below:

Keil Options for Target

Make sure the settings match as shown below.

Target settings

Step 5.

Now, click on the “Output” tab. If you want to generate hex file then you can check “Create HEX File” . You also enter a suitable name for the executable output file.

Create Hex File

Step 6.

Then click on the “Linker” tab and Under that tab check the checkbox option which says “Use Memory Layout from Target Dialog” .

keil linker options

Step 7.

Now, under the “Debug” tab, select ST-LINK as debugger since its the most common for debugging and programming STM32. Finally to click “OK” to apply settings and close window.

STM32 Keil uv5 Debug options

Step 8.

Now, in the source navigation pane on the left area, right click on “Source Group 1” and select “Add New Item to Group ‘Source Group 1′” .

add new item to source

Step 9.

A new window will pop-up to add an item as shown below. Select “C File (.c)” or C++ File (.cpp) , then enter the name of the file in the text box to the right of “Name:” and click “Add” .

add files to keil project

Step 10.

Now you can write your code in the editor. To compile your program Press “F7” key or in the main menu goto “Project->Build Target”. To check for any compilation errors you can have a look at the build output at the bottom of main window. Two screenshots of the Keil MDK uVision 5 are given below.

Keil uv5 screenshot STM32 CMSIS

A. For CMSIS Core Project:

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

Ваш адрес email не будет опубликован. Обязательные поля помечены *