Руководство пользователя keil

  • Contents

  • Table of Contents

  • Bookmarks

Quick Links

Preface

Preface

This manual explains how to use the RTX51 Tiny Real-Time Operating System and gives

an overview of the functionality of RTX51 Full. The manual is not a detailed introduc-

tion to real-time applications and assumes that you are familiar with Keil C51, A51, the

related Utilities, the DOS operating system and the hardware and instruction set of the

8051 microcontrollers.

The following literature is recommended as an extensive introduction in the area of real-

time programming:

Deitel, H.M., Operating Systems, second edition,

Addison-Wesley Publishing Company, 1990

Ripps, David, A Guide to Real-Time Programming, Englewood Cliffs, N.J,

Prentice Hall, 1988/

Allworth, S.T., Introduction to Real-Time Software Design,

Springer-Verlag Inc., New York

This user’s guide contains 6 parts:

Part 1:

Part 2:

Part 3:

Part 4:

Part 5:

Part 6:

Overview, describes the functionality of a the RTX51 real-time opeating

systems and discusses the basic features and differences of RTX51 Tiny and

RTX51 Full. Also included are the technical data of RTX51 Full and

RTX51 Tiny.

Requirements and Definitions, discusses the development tools and the

target system requirements of RTX51 Tiny, explains the terms used in the

the RTX51 Tiny manual and decribes the task definition.

Creating RTX51 Tiny Applicaitons, describes the steps necessary to cre-

ate RTX51 Tiny applications.

Library Functions, provides a reference for all RTX51 Tiny library rou-

tines.

System Debugging, describes the stack handling of RTX51 Tiny and con-

tains information about the system debugging.

Applications Examples, contains several examples using RTX51 Tiny and

describes the software development process. This information can be used

as a guideline for your real-time designs.

1

loading

Summary of Contents for Keil RTX51

Статья носит характер небольшого мануала о том, как начать программировать микроконтроллеры STMicroelectroniks на примере популярного и простого в освоении семейства stm32f1

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

Основные вопросы этой заметки:

  • как начать разрабатывать ПО для stm32 в Keil;
  • что для этого необходимо.

Начать необходимо со второго вопроса. Необходимый минимум это среда программирования (Keil), программатор и отладочная плата. Можно конечно и в симуляторе запускать программу, но это не так инетресно, так что плата и программатор нужны. Где брать писать не буду, не моя это забота.

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

Я сразу же после установки на новую машину произвожу настройку среды программирования:

Описание изображения

Вот так они выглядят. Теперь по пунктам, что и где настроено.

  • Изменена кодировка файлов на юникод, так у вас гарантированно будут отображаться русские символы в комментариях
  • Настраиваю замену табуляции на 4 пробела (это довольно холиварная тема, но я любю так), с такими настройками код гарантированно одинаково будет выглядить в любом редакторе.

Теперь установим паки (различные библиотеки) необходимые для разработки под наш чип. Минимум установлен на картинке. FreeRTOS на самом деле не обязательно устанавливать, но пусть будет, ведь после игр с различной переферией будет пытаться оседлать её.

Описание изображения

И так, все настройки сделаны, всё установлено, пробудем создать новый проект. Делается это через меню Project->New μVision Project...
Сразу после нажатия откроется окно с предложением выбрать используемый чип, его название можно посмотреть на корпусе =)

Описание изображения

Следующим этапом нам будет предложено выбрать необходимые в нашей работе паки. Отмечаем всё как на картинке.

Описание изображения

  • CMSIS (Cortex Microcontroller Software Interface Standard);
  • Startup — это ассемблерный файл для запуска нашей программы, с содержимым можно будет ознакомиться самостоятельно;
  • STDPeriph — Библиотека переферийных устройств:
    • Fraemwork — оснойной файл, подлючающий бибилотеку;
    • GPIO — для управления портами ввода-вывода;
    • RCC — для управления тактированием.

Всё выбрано, значить пожно приступать к следующему шагу. Настройка проекта. открывается через меню Project->Option for Target...

Рассмотрим наиболее интересные и необходимые вкладки.

Здесь можно выбрать версию компилятора, для простоты будем использовать версию 5.

Описание изображения

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

Описание изображения

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

Описание изображения

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

Описание изображения

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

Описание изображения

Ну вот с настройка мы разобрались.

Приступим к написанию кода.

Программа для микроконтроллера выглядит в виде бесконечного цикла. Что бы это понять предлагаю ознакомиться с кодом:

/* Точка входа в программу */
int main( void )
{
    /*
    Здесь производится инициализация основных узлов программы и микроконтроллера
    */

    while( 1 )
    {
        /*
        Вечный цикл необходим для работы, иначе программа останомиться
        Сюда обычно помещают код который выполняется постоянно 
        или оставляют цикл пустым если работают на прерываниях, можно совмещать.
        */
    }
}

Что нужно сделать чтоб ы помигать светодиодом?

  1. Включить тактирование порта к которому подключен светодиод;
  2. Настроить порт на выход;
  3. в вечном цикле переключать вывод с небольшой задержкой то в 0, то в 1.

Вот и наш учебный код:

#include "stm32f10x.h"
#include "stm32f10x_gpio.h"     // Файл с функциями управления ножками контроллера
#include "stm32f10x_rcc.h"      // Управление тактированием
#include <stdint.h>             // Правильные типы данных, вместо всяких int, char и тому подобных

// Далее будут ссылки на страницы референс мануала, его можно сказать по ссылке:
// https://www.st.com/resource/en/reference_manual/CD00171190.pdf

// Примитивнейшая функция задержки
// Для орагнизации задержек (или периодических событий)
// обычно применяются таймеры, но нам пока рано, так что
// тупо мотаем такты

void Delay( void )
{
    for( uint16_t i = 0; i <= 50000; i++ )
        for( uint16_t j = 0; j <= 25; j++ );
}

// точка входа в программу, всегда именно "int main ( void )"
int main( void )
{

    // ---------------- Включаем тактирование порта GPIOC
    // 1. С использованием SPL
    RCC_APB2PeriphClockCmd( RCC_APB2Periph_GPIOC, ENABLE );  

    // 2. С использованием CMSIS, магические числа
//    RCC->APB2ENR |= (1 << 4);                       // см 146 стр. 
    // ---------------- 

    // ---------------- Инициализируем ногу со светодиодом (PC13 - Порт С нога 13)    
    // 1. С использованием SPL
    GPIO_InitTypeDef PortC;                     // Структура с необходимыми полями
    PortC.GPIO_Mode         = GPIO_Mode_Out_PP;     // Выход пуш-пул, см 164 стр.
    PortC.GPIO_Speed        = GPIO_Speed_10MHz;     // По сути это ток который сможет обеспечить вывод
    PortC.GPIO_Pin          = GPIO_Pin_13;          // Номер ноги
    GPIO_Init(GPIOC, &PortC);                       // Применяем настройки

    // 2. С использованием CMSIS
//    GPIOC->CRH |= (0x00 << 22) | (0x01 << 20);      // см 172 стр. 
    // ---------------- 

    // Основной цикл, программа ВСЕГДА должна зацикливаться!!!
    // Не всегда наполнен чем-то вразумительным, иногда может быть пустым, 
    // например когда вся логика реализована в прерываниях.
    while( 1 )
    {
        // ---------------- Устанавливае ногу со светодиодом (PC13 - Порт С нога 13)
        // 1. С использованием SPL
        GPIO_WriteBit(GPIOC, GPIO_Pin_13, Bit_SET);     
        // 2. С использованием CMSIS и ODR регистра, см 173 стр.
//        GPIOC->ODR |= (1 << 13);                     
        // 3. C использованием CMSIS и BSRR регистра, см 173 стр.
//        GPIOC->BSRR = (1 << 13);                        
        // ---------------- 

        Delay();

        // ---------------- Сбрасываем ногу со светодиодом (PC13 - Порт С нога 13)
        // 1. С использованием SPL
        GPIO_WriteBit(GPIOC, GPIO_Pin_13, Bit_RESET);   
        // 2. С использованием CMSIS и ODR регистра, см 173 стр.
//        GPIOC->ODR &= ~(1 << 13);                       
        // 3. С использованием CMSIS и BRR регистра , см 174 стр.
//        GPIOC->BRR = (1 << 13);         
        // 4. С использованием CMSIS и BSRR регистра , см 173 стр.
//        GPIOC->BSRR = (1 << 29);                 
        // ---------------- 

        Delay();        
    }
}
// В конце файла для Кейла обязательна пустая строка! Хз зачем, просто нужна.

Код мигалки специально реализован несколькими возможными способами, используя STDPeriph и без него (только CMSIS)

Проект с этим кодом можно скачать здесь. Но лучше научиться создавать проект с нуля.

Будут вопросы пишите в комментариях, я обычно быстро отвечаю.

Как всегда — Спасибо за внимание и хорошего кодинга! =)

Статья посвящается Пановой Ксении.

Все картинки в этой статье кликабельны.

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 символов.
  3. Отступы по 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

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

int main() {
    return 0;
}

В конец файла стоит добавить пустую строку, иначе при сборке вы получите предупреждение «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()»:

#include "stm32f4xx_hal.h"

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

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

#include "stm32f4xx_hal.h"

int main() {
    HAL_Init();

    return 0;
}

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

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

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

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

#include "stm32f4xx_hal.h"

int main() {
    HAL_Init();

    // Разрешить тактирование порта A.
    __HAL_RCC_GPIOA_CLK_ENABLE();

    // Настройки порта.
    GPIO_InitTypeDef s;
    s.Pin   = GPIO_PIN_0;                // Вывод 0.
    s.Mode  = GPIO_MODE_OUTPUT_PP;       // Цифровой выход.
    s.Pull  = GPIO_NOPULL;               // Без подтяжки.
    s.Speed = GPIO_SPEED_FREQ_VERY_HIGH; // Максимальная скорость.

    // Настроить вывод 0 порт A.
    HAL_GPIO_Init(GPIOA, &s);

    // Бесконечно переключать состояние порта с максимальной скоростью.
    while(1) {
        HAL_GPIO_TogglePin(GPIOA, GPIO_PIN_0);
    }

    //return 0;
}

void SysTick_Handler(void) {
    HAL_IncTick();
}

Ссылки

  1. Скачать продукты Keil без заполнения формы.
  2. Скринкаст «Eclipse и GNU Tools для разработки под ARM-микроконтроллеры«.
  3. Микроконтроллер STM32F407VG.
  4. Отладочная плата STM32F4-Discovery.
  5. Библиотека STM32CubeF4.
  6. Руководство по STM32CubeF4 HAL.
  7. Библиотека CMSIS.
  8. Отсчет времени в STM32Cube.

Интегрированная
система предназначена:

  • для
    проектирования программного обеспечения
    путем формиро­вания
    текстов программ на одном из языков
    программирования (ассемблер
    или Си) в специализированном текстовом
    редакторе:

  • компиляции
    с получением исполнимого кода для
    микроконтрол­лера:

  • формирования
    модели работы портов ввода — вывода,
    тестирова­ния
    программ микроконтроллера путем
    симуляции их выполне­ния:

  • загрузки
    программ из компьютера в микроконтроллерную
    систему через интер­фейсы
    различных типов:

  • обмена
    данными между персональными ЭВМ и
    микроконтрол­лерной
    системой в реальном времени.

Современные
программные системы, ориентированные
на поддержку процесса проектирования,
как правило, используют концепцию
проектов.

Проект

это совокупность файлов, которые
составляют некоторую разработку
и фактически являются элементами
описания прикладной
про­граммы
для
выбранного микроконтроллера. Таким
образом, каждый файл проекта может быть
сформирован пользователем. Обычно в
проекте поддер­живается организация
прикладной программы для микроконтроллера
на ос­нове модульного подхода, то есть
прикладная программа может состоять
из произвольного количества программных
модулей (файлов), которые содер­жат
взаимные ссылки. Целевые файлы проекта
формируются автоматически системой
из исходных файлов в процессе построения
при компиляции.
При
построении
проекта на основе исходных файлов
формируются промежуточ­ные
файлы, файлы, которые используются при
симуляции, а также исполни­мые
файлы в определенных форматах.

Базовым
понятием является также понятие модели
контроллера.
Мо­дель
контроллера определяет совокупность
аппаратных ресурсов, которые учитываются
компилятором и симулятором в составе
системы. Каждая мо­дель контроллера
соответствует аппаратной структуре
определенной моди­фикации
физического микроконтроллера семейства
MCS-51.
Таким образом, модель
микроконтроллера — это совокупность
следующих параметров:

  • объемы внутренней
    и внешней памяти программ и данных;

  • номенклатура
    и количество компонентов периферии,
    используе­мых
    в данной модификации микроконтроллера:

  • конфигурационные
    параметры, используемые при симуляции,
    например,
    размер и скорость доступа для модели
    памяти EEPROM.

С
каждым проектом связывается определенная
модель микрокон­троллера,
для которого создается программа в этом
проекте. Таким образом,

параметры
модели непосредственно влияют на процесс
компиляции
про­граммы
и симуляцию ее выполнения при тестировании.

Для
систем с микроконтроллерами 8051 разработаны
мощные инструментальные средства,
позволяющие снизить до минимума время
разработки и отладки программного
обеспечения. Среди прочих лидирующие
позиции занимают программные средства,
разработанные фирмой Keil. Инструментальные
средства этой фирмы включают целый ряд
мощных приложений, таких как компилятор
языка Cи для микроконтроллеров 8051,
известный под названием Keil C51, макроассемблер
A51, совместимый с ASM-51, и наконец, удобная
графическая оболочка для разработки и
отладки программ Keil uVision.

Среда
разработки Keil uVision (в настоящее время
используются версии 3 и 4) позволяет
создавать сколь угодно сложные проекты,
состоящие из разных модулей, написанных
как на C, так и на языке ассемблера,
подключать библиотеки функций и т.д.
Кроме того, эта среда включает удобный
отладчик (симулятор), позволяющий оценить
и быстро проверить работоспособность
программы. Хотя при разработке программ
можно обойтись только командной строкой,
откомпилировав и собрав программу вне
среды Keil uVision, графическая среда разработки
все же более удобна, поскольку позволяет
автоматизировать сборку программ и
проверить их работоспособность с помощью
отладчика.

Для
разработки и отладки программ в среде
Keil желательно иметь установленную
графическую среду Keil uVision версии 3 или
4 и компиляторы C51 и A51. Можно использовать
демонстрационные версии этих программных
инструментов, доступные для скачивания
на сайте www.keil.com. Более того, для разработки
программ на языке C в среде Keil uVision можно
использовать и свободно распространяемый
компилятор SDCC, который разработан в
рамках открытого лицензионного соглашения
GNU и не имеет ограничений по размеру
исполняемого программного кода. Несмотря
на некоторые отличия в синтаксисе,
многие (если не большинство) из принципов
программирования систем с 8051, используемые
в Keil C51, работают и в SDCC.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]

  • #
  • #
  • #
  • #
  • #
  • #
  • #
  • #
  • #
  • #
  • #

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.

Finally click “OK”.

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.

A. For CMSIS Core Project:
Keil uv5 screenshot STM32 CMSIS

B. For Standard Peripheral Library based Project:

Keil uv5 screenshot STM32 SPL

Понравилась статья? Поделить с друзьями:
  • Актионис инструкция по применению в ветеринарии для коров
  • Инструкция мини атс lg ghx 616
  • Эпримек инструкция по применению в ветеринарии для крс
  • Робот пылесос haier инструкция по применению на русском
  • Фитоспорин для роз инструкция по применению осенью