Перейти к содержимому

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

  • автор:

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 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. Настройка для программирования МК Миландр.

    Данная заметка будет в виде небольшого туториала. Буду рассмотрены несколько моментов: установка keil v5 и настройка для работы с микроконтроллерами различных производителей на примере STMicroelectronics и АО «ПКК Миландр».

    Установка Keil.

    Одним Keil нравится, другие его презирают, другие просто его не использовали ни разу. Я себя отношу к первой группе людей, меня он в принципе устраивает многим, хороший компилятор, поддержка многих семейств микроконтроллеров, удобная отладка. Из минусов разве что бедный текстовый редактор, который можно сравнить с notepad++, который за счет большого числа плагинов и то имеет более продвинутый функционал. Но всё же есть подсветка синтаксиса, индикация ошибок, какое никакое, но автодополнение и навигация по коду. И ещё он платный, что не мало важно, хотя и имеется бесплатная версия с ограничением размера кода(прошивки) в 32 килобайта.

    Вот бесплатную версию мы и будем использовать.

    Для начала необходимо скачать инсталляционный пакет с сайта keil.com, предварительно заполнив небольшую анкету.

    Затем просто установить следуя инструкции установщика.

    Теперь пошла магия:

    Для поддержки различных микроконтроллеров необходимо установить необходимые пакеты с помощью Pack installer. Просто выбрав необходимого производителя и нажав Install.

    На этом в принципе вся установка и заканчивается. Далее нужно лишь настроить среду программирования под себя. К сожалению у keil’а не так много настроек, но самое основное можно настроить:

    • размер отступов;
    • цветовую схему;
    • кодировку (которую советую сразу сменить на UNICODE);
    • и др.

    Настройка для программирования микроконтроллеров Миландр.

    Вы наверно уже заметили, что в списке поддерживаемых устройств нет «нашего» ARM’а, но это легко исправить. Необходимо скачать с сайта производителя Software pack для Keil MDK 5. На сайте не всегда лежит самая новая версия пака, её можно поискать на форуме.

    После скачивания пак необходимо установить через Pack Installer: меню File -> Import. ; или открыть пак в проводнике, кеил должен предложить установить его.

    На этом в принципе процесс установки и настройки окончен.

    В следующей заметке будет рассмотрен алгоритм создания проекта для микроконтроллера 1986ВЕ9х.

    • Библиотека для работы с дисплеем 1602
    • Плата переходник IR2113SPBF в 1308ЕУ3АУ. Иногда приходится немного извращаться.

    CDEblog

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

    Последние публикации

    • Настройка и работа в vscode на сервере без интернета.
    • Altium Designer. Мои правила создания футпринтов.
    • Генератор конфигураций c/c++ для vscode из Makefile
    • Очередной драйвер SPI флэшек… Но уже с кэшем и «нормальным» api
    • Что было интересного в январе.

    Установка Keil μVision

    image00

    Использовать мы будем отладочную плату STM32F4-DISCOVERY.

    Запускаем там pack installer

    image02

    Слева выбираем наш контроллер

    image01

    А справа затем Device Specific и жмем Install.

    После загрузки пакета выбираем справа еще ARM::CMSIS также жмем Install.

    image04

    Создаем новый проект Project->New uVision Project

    Даем ему имя, выбираем контроллер

    image03

    Появляется Manage Run-Time Enveroment

    Выбираем CMSIS->CORE и Device->Startup, ставим галки напротив и жмем «ОК»

    image06

    В Target1 добавляем новую папки pl, а папку Source Group 1 переименовываем в user

    Такие же папки создаем в физическом каталоге проекта.

    Копируем файл \STM32F4xx_DSP_StdPeriph_Lib_V1.6.1\Libraries\CMSIS\Device\ST\STM32F4xx\Include\stm32f4xx.h

    в папку pl и снимаем с него атрибут «для чтения».

    Также в данную папку копируем две папки (inc и src) из \STM32F4xx_DSP_StdPeriph_Lib_V1.6.1\Libraries\STM32F4xx_StdPeriph_Driver

    Можно также снять с этих папок тот же атрибут, включая их содержимое.

    Также из любого примера в \STM32F4xx_DSP_StdPeriph_Lib_V1.6.1\Project\

    Копируем в папку pl файл stm32f4xx_conf.h

    В проекте в группу pl добавляем все файлы из папки \pl\src, кроме файла stm32f4xx_fmc.c,

    а также тот файл stm32f4xx_conf.h, который мы копировали выше.

    В папке user создаем новый пустой файл main.c

    Подключаем его в группу user в проекте

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

    Затем пропишем пути, выбрав контекстное меню на группе Target 1 и выбрав там следующий пункт

    image08

    На закладке C/C++ нажмем … справа от поля Include Paths и в открывшийся диалог добавим пути

    image07

    Добавим в main.c функцию main с бесконечным циклом

    Вызовем контекстное меню на объявлении заголовочного файла

    image11

    И внесем следующие исправления

    и /*#define USE_STDPERIPH_DRIVER */

    изменить 25000000 на 8000000 здесь

    Чтобы включить возможность писать комментарии на русском языке,

    в панели инструментов нажимаем пункт «Configuration»

    image09

    И выбираем там кодовую страницу

    image10

    Также вот здесь можно поменять размер и тип шрифта в редакторе

    image12

    Добавим код в main()

    RCC->AHB1ENR |= RCC_AHB1ENR_GPIODEN; // включим тактирование порта

    GPIOD->MODER = 0x55000000; // включим ножки 12,13,14,15 на выход

    GPIOD->OTYPER = 0; //подтянем резистор ко всем ножкам порта

    GPIOD->OSPEEDR = 0; //установим скорость LOW на все лапки порта

    GPIOD->ODR = 0xF000; // 12,13,14,15 лапки установим в 1, тем самым зажжем светодиод

    Соберём код, прошьём контроллер и посмотрим результат

    image13

    STM32 STM Урок 1. Установка Keil μVision

    Post Views: 18 259

    40 комментариев на “ STM Урок 1. Установка Keil μVision ”

    Для скачивания нужной STM32F10x_StdPeriph_Lib_V3.5.0 (например) не нужно ничего писать в строке. Идем на сайт http://www.st.com выбираем Products->Microcontrollers->STM32F1(например) и в Total Parts ищем свой МК (STM32f103c8t6 например — мой случай). Выбираем его. Идем вниз где расположены архивы MCUS EMBEDDED SOFTWARE. Уделяем внимание тем ссылкам которые начинаются с STSW-STM и среди них находим ту рядом с которой есть такое описание (с правой стороны) STM32F10x standard peripheral library. Скачиваем.

    На момент съёмки урока и написания сценария было так.
    Спасибо за подсказку!
    Думаю, многим пригодится, хотя в актуальности на данный момент этой библиотеки, есть определённые сомнения.

    Копируем файл \STM32F4xx_DSP_StdPeriph_Lib_V1.6.1\Libraries\CMSIS\Device\ST\STM32F4xx\Include\stm32f4xx.h в папку pl и снимаем с него атрибут «для чтения». Также в данную папку копируем две папки (inc и src) из \STM32F4xx_DSP_StdPeriph_Lib_V1.6.1\Libraries\STM32F4xx_StdPeriph_Driver-А где их взять то?

    Таким писарям статей нужно по рукам стучать…
    «Скачиваем отсюда библиотеку «… А дальше что ? Что с ней делать ?
    «Слева выбираем наш контроллер» … А если его нет ? Что ? Статья — ниачом..

    Посмотрите видеоурок, возможно Вам станет понятнее.
    В любом случае, спасибо за критику, хотя конечно этому уроку уже более 2х лет.
    Посмотрите последние уроки, заодно и оцените, исправился ли я за это время или нет.

    Поддерживаю! Хорошо бы в духе уроков по AVR.

    Я уже вторую неделю не могу диодом моргнуть на blue pill. И на борту программатот st-link.
    Мануалы просто трубовые . У всех !
    90% диких перепечаток .stm32 обзывают arduino . Ни у кого 5 лет подряд нет 3 бакса на программатор . Подключают всякие чёрт те што. Шьют где угодно , но только не в бесплатных от родной stm.
    От самоката плату в openocd-0.10.0 перепрошил практически сразу.
    Этот автор тоже перец . Я себе даже в дурном сне не могу представить total comander в пользовании . Зачем он в роликах щёлкает этим командером ?

    Total commander — очень удобный файловый менеджер, большинство программистов, воспинанных на нортон командере им пользуются. Видно размер, расширение, время модификации файлов. Так что предъява не принимается.

    ArduinoIDE полдня настраивается.
    В уроках по AVR вы подробно рассказывали про регистры, хотелось бы и здесь.
    Спасибо!

    Имеется контроллер STM32L476 но нет к нему библиотек ни в Keil μVision3 ни в Keil μVision4, а Keil μVision5 нет

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

    Это такой порядок. А ещё для того, чтобы посмотреть, где всё находится. Цель моих занятий — не дать проект, который работает, а показать, почему оно работает.
    Я очень рад, что у Вас всё заработало!

    Пользуясь случаем, выражаю Вам свою глубокую благодарность за эти уроки!
    Я не сомневаюсь что эти манипуляции для чего то нужны, и это заведенный Вами порядок. Но для чего они нужны и зачем заведен такой сложный порядок создания пооекта, ни одним словом не объясняется. Прошу прощения, но это сбивает с толку начинающего. Спасибо Вам еще раз!

    И Вам также спасибо за интерес к ресурсу!
    А вообще, по большому счёту, урок этот был записан очень давно, когда Keil 5 практически только появился, также невозможно было по-нормальному найти и собрать библиотеки, поэтому получилось у меня только вот так.

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

    «Цель моих занятий — не дать проект, который работает, а показать, почему оно работает.» Абсолютно не показали «почему это работает». Вот как Вы пришли к решению переименовывать папки, например? Если доступно объясните, то у остальных не будет вопросов. Также необходимо пояснять зачем эти файлы в данных папках, что они дают. Вы просто запутали начинающих. А гуру уже все умеют. Здесь надо как в детском саду:)

    Я думаю, что это элементарно и все поняли, почему мы это делаем, так как данный урок был сделан 2,5 года назад, видео по нему «претерпело» 85 тысяч просмотров, 623 лайка к 59 дизлайкам, что составляет более 90 процентов и такой вопрос прозвучал за это время впервые.
    Посему предъява не принимается.

    Это не предъява. Если кто-то спросил, значит он не понял элементарного и хочет получить ответ (и до сих пор не получил). Если трудно объяснить — не напрягайся. Ведь у тебя столько лайков. Пойдем к другим изучать элементарное.

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

    Пожалуйста поподробнее. И не надо, пожалуйста, угрожать дизлайками и разными там хейтерствами. Слава Богу, дизлайки сейчас ничем не грозаят, сейчас это в ранжирование ресурса не учитывается. Сейчас учитывается только общее время просмотра. Если Вы как-то хотите навредить какому-то каналу, единственное, что Вы можете сделать, это только поменьше его смотреть. Больше никак.
    Что именно у Вас не получилось с установкой IDE?
    Может быть то, что уроку уже 2,5 года на что-то повлияло, и сейчас уже установка как-то по-другому происходит. Я, например в ту пору ничего подобного и бесплатного по установке не нашел, поэтому и решил поделиться своими мыслями, как это делаю именно я. Мне кажется подробнее-то некуда.

    Недовольства свои мамке с папкой своим высказывай, за то-что дебила вырастили. Если не можешь мозги включить, как программировать собираешься? К тому-же, тебе никто ничего не обязан. Нравится — читай, нет — иди лесом.
    Автору СПАСИБО за ресурс.

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

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

    Александр Федоров :

    Хочу поблагодарить автора за данные уроки. Хочу задать вопрос. Для создания паяльноц станции нлвичку какую платформу выбрать stm32 или avr. Еще мне не понятно если я выберу stm32 f3 или f4, то я смогу шить только такие же контроллеры, которые установленные на отладочной плате? Ну и если stm 32то какую модель дискавери брать (или не дискавери)!?

    Здравствуйте!
    Спасибо!
    Шить можно и желательно все-таки STM. А шить с помощью ST-Link, а не Discovery. Discovery — это отладочная плата, в которой стоит и контроллер и программатор ST-Link.

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

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