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

Как работать с keil uvision 5

  • автор:

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

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

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

Размер прошивки при использовании бесплатной версии ограничен и составляет 32К, чего в большинстве случаев достаточно.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Создаем свой первый проект в Keil

В данной статье создадим первый рабочий проект в среде uVision от Keil, откомпилируем его, прошьем отладочную плату STM32VLDiscovery, рассмотрим некоторые «подводные камни», которые будут по мере работы над проектом. Ничего особенно писать не будем просто помигаем светодиодами. UPD: статья довольно старая, но информация в ней актуальна и для последней на данный момент версии Keil 5.23. Итак начнем. Для начала создаем пустой новый проект, в меню выбираем PROJECT -> New uVision Project, сохраняем его (проект имеет расширение .uvproj), выбираем в окне наш МК, в STM32VLDiscovery это STM32F100RB:

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

Далее нам предложат добавить в проект стартовый код, жмем «Yes»:

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

Keil ARM STM32

Теперь необходимо выполнить конфигурацию проекта:

В окне проекта на вкладке Target видим установки адресов памяти IROM и IRAM, эти значения устанавливаются автоматически при выборе соответствующего чипа, менять их крайне нежелательно (Здесь также желательно установить Xtal частоту, на которой работает микроконтроллер):

Идем во вкладку Output и здесь ставим галочки напротив тех типов файлов, которые мы хотим получить на выходе проекта (Debug Information необходим для отладки устройства, HEX File – прошивка микроконтроллера):

Keil project config

Переходим во вкладку C/C++, если наш проект использует include файлы, то здесь необходимо в поле Include Paths установить пути до этих файлов:

В нашем проекте мы будем использовать файл stm32f10x.h, указываем путь до него:

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

Сделаем простую мигалку светодиодами, которые висят у нас на порту С (PC8, PC9) попеременно через пол секунды, кстати в Keil нет функции delay, как в GCC для AVR, так что нам придется написать эту функцию самостоятельно используя таймер:

#include "stm32f10x.h" void initial (void) < RCC->APB2ENR |= 1 CRH &= ~GPIO_CRH_CNF8; GPIOC->CRH |= GPIO_CRH_MODE8_0; GPIOC->CRH &= ~GPIO_CRH_CNF9; GPIOC->CRH |= GPIO_CRH_MODE9_0; /*timer config*/ RCC->APB1ENR |= RCC_APB1ENR_TIM6EN; TIM6->PSC = 8000-1; TIM6->CR1 |= TIM_CR1_OPM; > void delay_ms (uint16_t value) < TIM6->ARR = value; TIM6->CNT = 0; TIM6->CR1 = TIM_CR1_CEN; while((TIM6->SR & TIM_SR_UIF)==0)<> // дождаться конца задержки TIM6->SR &= ~TIM_SR_UIF; > int main (void) < initial (); while (1) < GPIOC->BSRR |= 1 BRR |= 1 BSRR |= 1 BRR |= 1 >

Ну что ж, можно и компилировать и собирать проект, жмем F7 и у нас выпадает следующая ошибка: C:\Keil\ARM\INC\ST\STM32F10x\stm32f10x.h(96): error: #35: #error directive: «Please select first the target STM32F10x device used in your application (in stm32f10x.h file), которая говорит нам, что необходимо выбрать процессор в файле stm32f10x.h, зачем это придумали делать вручную я не знаю, открываем в проекте это файл и раскомментируем #define с нашим процессором (UPD правильнее сделать на вкладке С/С++ -> Preprocessor Symbol -> Defines вставляем «STM32F10X_MD_VL»):

После чего компиляция происходит успешно.

STM32F103. Начало работы в Keil

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

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

  • как начать разрабатывать ПО для 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 // Правильные типы данных, вместо всяких int, char и тому подобных // Далее будут ссылки на страницы референс мануала, его можно сказать по ссылке: // https://www.st.com/resource/en/reference_manual/CD00171190.pdf // Примитивнейшая функция задержки // Для орагнизации задержек (или периодических событий) // обычно применяются таймеры, но нам пока рано, так что // тупо мотаем такты void Delay( void ) < for( uint16_t i = 0; i // точка входа в программу, всегда именно "int main ( void )" int main( void ) < // ---------------- Включаем тактирование порта GPIOC // 1. С использованием SPL RCC_APB2PeriphClockCmd( RCC_APB2Periph_GPIOC, ENABLE ); // 2. С использованием CMSIS, магические числа // RCC->APB2ENR |= (1 CRH |= (0x00 ODR |= (1 BSRR = (1 ODR &= ~(1 BRR = (1 BSRR = (1 > // В конце файла для Кейла обязательна пустая строка! Хз зачем, просто нужна. 

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

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

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

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

    • Миландр. Неожиданное поведение CAN.
    • Библиотека CMSIS DSP. Так ли быстр целочисленный квадратный корень?

    CDEblog

    Блог инженера-схемотехника, конструктора и немного программиста

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

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

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

    «.\Objects\Ex3.axf: Error: L6218E: Undefined symbol assert_param (referred from stm32f30x_adc.o). Not enough information to list image symbols. Finished: 1 information, 0 warning and 1 error messages. ".\Objects\Ex3.axf" - 1 Error(s), 497 Warning(s). Target not created.»

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

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

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

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

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

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

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

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

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

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

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

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

    Создаем группы в среде Keil

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

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

    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. Добавляем файлы в проект

    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 и компилируем, если ошибок нет. Значит проект настроен верно.

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

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