Как правильно настроить проект в Keil uVision для работы с микроконтроллерами STM32. Какие файлы нужно добавить в проект. Как избежать ошибок компиляции при создании нового проекта. Пошаговая инструкция по настройке проекта Keil uVision для STM32.
Подготовка файлов и папок для проекта STM32 в Keil uVision
При создании нового проекта для микроконтроллеров STM32 в среде разработки Keil uVision важно правильно настроить структуру проекта и добавить все необходимые файлы. Это позволит избежать ошибок компиляции и корректно работать с периферией микроконтроллера. Рассмотрим пошаговый процесс настройки проекта:
Шаг 1: Скачивание стандартной периферийной библиотеки
Для начала необходимо скачать с официального сайта STMicroelectronics стандартную периферийную библиотеку (Standard Peripheral Library) для вашей серии микроконтроллеров STM32. Эта библиотека содержит все необходимые драйверы и файлы конфигурации.
Шаг 2: Создание структуры папок проекта
В папке проекта рекомендуется создать следующую структуру директорий:
- cmsis — для файлов CMSIS (Cortex Microcontroller Software Interface Standard)
- pl — для файлов периферийной библиотеки
- user — для пользовательских файлов (main.c и др.)
- startup — для стартовых файлов
Шаг 3: Копирование необходимых файлов
Из скачанной стандартной периферийной библиотеки необходимо скопировать следующие файлы в соответствующие папки проекта:
- В папку cmsis:
- system_stm32f3xx.c
- system_stm32f3xx.h
- stm32f3xx.h
- В папку pl:
- Папки inc и src из директории STM32F3xx_StdPeriph_Driver
- Файл stm32f3xx_conf.h из любого примера проекта
- В папку startup:
- startup_stm32f3xx.s
Настройка проекта в среде Keil uVision
После подготовки файлов необходимо правильно настроить сам проект в Keil uVision:
Шаг 4: Создание групп в проекте
В проекте Keil uVision создайте группы, соответствующие папкам проекта:- CMSIS
- PL (Peripheral Library)
- USER
- STARTUP
Шаг 5: Добавление файлов в проект
Добавьте соответствующие файлы в созданные группы проекта:
- В группу CMSIS: system_stm32f3xx.c
- В группу PL: все .c файлы из папки src
- В группу STARTUP: startup_stm32f3xx.s
- В группу USER: создайте новый файл main.c
Шаг 6: Настройка использования стандартной периферийной библиотеки
Откройте файл stm32f3xx.h и раскомментируйте строку:
#define USE_STDPERIPH_DRIVER
Это укажет компилятору использовать файлы стандартной периферийной библиотеки.
Шаг 7: Добавление стандартной библиотеки ядра
В менеджере проектов выберите пункт «Run-Time Environment» и установите флажок в поле CMSIS -> CORE.
Настройка опций проекта
Для корректной работы проекта необходимо настроить некоторые опции компилятора и компоновщика:
Шаг 8: Настройка путей включения
В настройках проекта (Options for Target) на вкладке C/C++ добавьте пути к директориям с заголовочными файлами в поле «Include Paths»:
- .\cmsis
- .\pl\inc
- .\user
Шаг 9: Определение используемого микроконтроллера
На той же вкладке C/C++ в поле «Define» добавьте определение для вашего микроконтроллера, например:
STM32F303xC
Проверка настройки проекта
После выполнения всех шагов можно проверить корректность настройки проекта:
- Откройте файл main.c и добавьте базовый код, например, инициализацию системы и бесконечный цикл.
- Попробуйте скомпилировать проект. Если ошибок нет, значит проект настроен верно.
При правильной настройке проекта вы сможете использовать все функции стандартной периферийной библиотеки для работы с микроконтроллером STM32.
Часто возникающие проблемы при настройке проекта STM32 в Keil uVision
При создании нового проекта для микроконтроллеров STM32 в Keil uVision разработчики часто сталкиваются с некоторыми типичными проблемами. Рассмотрим наиболее распространенные из них и способы их решения:
Ошибка: Undefined symbol assert_param
Эта ошибка обычно возникает, если не определен макрос USE_STDPERIPH_DRIVER. Для решения:
- Откройте файл stm32f3xx.h
- Найдите строку /* #define USE_STDPERIPH_DRIVER */
- Раскомментируйте эту строку, убрав символы /* */
Ошибка: Cannot open source input file «stm32f3xx_conf.h»
Эта ошибка указывает на то, что компилятор не может найти файл конфигурации. Для решения:
- Убедитесь, что файл stm32f3xx_conf.h скопирован в папку проекта (обычно в pl или user)
- Проверьте, что путь к этому файлу добавлен в настройках проекта (Options for Target -> C/C++ -> Include Paths)
Ошибка: Undefined symbols ___ (referencing multiple symbols)
- Проверьте, что все .c файлы из папки pl/src добавлены в группу PL в проекте
- Убедитесь, что файл system_stm32f3xx.c добавлен в группу CMSIS
Предупреждение: No clock provided for UART/USART
Это предупреждение появляется, если не настроено тактирование для периферийных устройств. Для решения:
- В функции инициализации системы (обычно SystemInit) убедитесь, что включено тактирование всех используемых периферийных устройств
- Используйте функции RCC_APB1PeriphClockCmd() или RCC_APB2PeriphClockCmd() для включения тактирования
Ошибка: Device STM32F3xx not found
Эта ошибка возникает, если в настройках проекта неправильно указан используемый микроконтроллер. Для решения:
- Откройте настройки проекта (Options for Target)
- Перейдите на вкладку «Device»
- Выберите правильную серию и модель вашего микроконтроллера STM32
Оптимизация работы с проектом STM32 в Keil uVision
После успешной настройки проекта можно применить некоторые приемы для оптимизации работы:
Использование шаблонов кода
Создайте шаблоны для часто используемых структур кода, таких как инициализация GPIO, настройка таймеров и т.д. Это ускорит разработку новых проектов.
Настройка отладки
Правильно настройте параметры отладки в Keil uVision для вашего отладчика (например, ST-Link). Это позволит эффективно отлаживать код непосредственно на целевом устройстве.
Использование средств статического анализа
Включите и настройте инструменты статического анализа кода в Keil uVision. Это поможет выявить потенциальные проблемы в коде на ранних этапах разработки.
Оптимизация кода
Используйте возможности оптимизации компилятора. Настройте уровень оптимизации в опциях проекта в зависимости от ваших требований к производительности и размеру кода.
Следуя этим рекомендациям, вы сможете эффективно настроить и использовать проект для микроконтроллеров STM32 в среде разработки Keil uVision, избегая распространенных ошибок и оптимизируя процесс разработки.
Создание проекта в Keil uVision
02.06.2018
ARM (Advanced RISC Machine — усовершенствованная RISC-машина) архитектура, разработанная компанией ARM Limited, лежит в основе множества 32-х и 64-х битных микропроцессорных ядер. В свою очередь одним из таких ядер, а именно ARM Cortex-M оснащены микроконтроллеры STM32 от компании STMicroelectronics.
В семействе Cortex-M присутствуют: Cortex-M3 (выпущен в 2004 году), Cortex-M1 (2007 год), Cortex-M0 (2009 год), Cortex-M4F (2010 год),
Cortex-M0+ (2012 год), Cortex-M7F (2014 год), Cortex-M23 (2016), Cortex-M33F(2016).
В данной статье мы рассмотрим подготовку программного обеспечения и создание первого проекта в среде Keil uVision, для микроконтроллера STM32F303RBT6. В основе этого контроллера лежит ядро Cortex-M4.
Keil uVision дает возможность создавать проекты любой степени сложности. В этой среде пишется и редактируется исходный код программы, производится внутрисхемная отладка и прошивка ПЗУ микроконтроллера. Под управлением единой оболочки собран стек различных модулей которые используются по мере необходимости и возрастании сложности реализуемых задач.
Для того что бы приступить к созданию проекта необходимо скачать архив KEIL uVision and other, в архиве находятся 9 файлов (рисунок 1):
1) mdk511.exe (установочный файл Keil uVision 5)
2) Keil.STM32F3xx_DFP.1.4.0.pack (пакет для работы с микроконтроллером STM32F303RBT6)
3) STM32F30x_Clock_Configuration_V1.0.0.xls (Визард для настройки тактирования микроконтроллера STM32F303RBT6)
7,8) USBSource, USBLib (Необходимые файлы для работы c USB)
9) Папка VCP_V1.5.0 с драйверами последовательного COM порта для микроконтроллера STM32F303RBT6
Рисунок 1
Далее устанавливаем Keil uVision 5 (проблем с установкой быть не должно, следуем инструкциям установщика) и переходим к настройкам среды.
Нажимаем на кнопку Pack Installer (рисунок 2).
Рисунок 2
Откроется диалоговое окно Pack Installer, жмем на File->Import (рисунок 3) и выбираем файл Keil.STM32F3xx_DFP.1.4.0.pack (рисунок 4).
Рисунок 3
Рисунок 4
Теперь создаем новый проект Project->New uVision Project… (рисунок 5).
Рисунок 5
Теперь нужно выбрать папку где будет расположен наш проект и присвоить ему имя. У меня это папка Keil_EX_1 и название проекта EX_1 (рисунок 6). Давайте сразу скопируем в эту папку файлы: StdPeriph, StartUP, CMSIS из скаченного архива KEIL_uVision_and_other
Рисунок 6
После нажатия на кнопку сохранить появится диалоговое окно Select Device for Target ‘Target 1’… в котором нам предложат выбрать микроконтроллер с которым мы будем работать. Нажимаем на вкладку STM32F303 (рисунок 7) после чего в раскрывшемся списке выбираем наш микроконтроллер STM32F303RB как показано на (рисунке 8).
Рисунок 7
Рисунок 8
Нажимаем на кнопку ОК и автоматически появится диалоговое окно Manage Run-Time Environment
Рисунок 9
Теперь в появившемся окне Project (рисунок 10) необходимо подготовить структуру папок для удобства работы.
Рисунок 10
Правой кнопкой мыши жмем на папку Target 1 и выбираем Manage Project items… как на (рисунке 11).
Рисунок 11
Появится диалоговое окно Manage Project items в котором теперь необходимо добавить с помощью кнопок New/Delet (1) следующие папки: StartUP, USER, CMSIS, StdPeriph (2), после жмем ОК (3) (рисунок 12).
Рисунок 12
Следующим шагом нужно добавить в созданные нами папки: StartUP, CMSIS, StdPeriph необходимые файлы с помощью команды Add Exsisting Files to Group ‘Название папки’… (рисунок 13).
Рисунок 13
В составе папки StartUP должны быть следующие файлы: startup_stm32f30x.s, core_cm4.h.
В составе папки CMSIS должен быть файл: system_stm32f30x.c.
В составе папки StdPeriph в первую очередь должен быть конфигурационный файл: stm32f30x_conf.h. Остальные в зависимости от используемой периферии. Я сразу добавил в эту папку все файлы для работы с периферией.
Перейдем к папке USER, в ней будет лежать файл исходного кода main и прочие на ваше усмотрение. Для добавления нового файла воспользуемся командой Add New item to Group ‘USER’… (рисунок 14).
Рисунок 14
Выбираем тип добавляемого файла CFile(.c) (1), присваиваем файлу имя main (2), нажимаем на кнопку добавить Add(3) (рисунок 15).
Рисунок 15
После всех манипуляций ваш проект должен выглядеть так же как на (рисунке 16), за исключением нескольких строчек кода которые я написал в main для демонстрации ошибки. Здесь нет ни чего страшного просто нужно произвести окончательные настройки проекта (рисунок 17):
(1) Нажимаем на кнопку Options for Target…
(2) Заходим во вкладку С/С++
(3) В поле Define вводим USE_STDPERIPH_DRIVER
(4) Жмем на кнопку добавить путь (1) и прописываем пути ко всем файлам проекта (2) (рисунок 18)
Рисунок 16
Рисунок 17
Рисунок 18
Заходим во вкладку Output выставляем галочку Create HEX File (рисунок 19), этот файл будет использоваться нами для прошивки микроконтроллера. Жмем ОК.
Рисунок 19
Все готово, теперь осталось только собрать проект. Жмем на кнопку Build (рисунок 20). Ошибок быть не должно.
Рисунок 20
SPL: Настройки тактирования CodeIN
03.06.2018
Для того что бы примеры для платы CodeIN правильно работали, произведите настройку тактирования микроконтроллера от внешнего источника тактового сигнала.
START: Прошивка микроконтроллера при помощи программы FLASH LOADER DEMONSTRATION
04.06.2018
Благодаря наличию на плате CodeIN переходника USB->UART (микросхема FT232RQ), присутствует возможность прошивки памяти микроконтроллера без использования программатора.
SPL: мигаем светодиодом
05.06.2018
Пример демонстрирует настройку и работу с GPIO.
Как сделать обновляемую прошивку для ARM в Keil μVision 5. Часть 1
Во время работы над проектом iCash я столкнулся со следующей проблемой : устройство надо отдать на сертификацию ( в две компании ), но там могут быть обнаружены ошибки в софте, которые надо будет исправлять. Плюс к этому, сертифицировать необходимо только часть прошивки (кассовое ядро) , и именно вот эту часть позднее ( после проверок ) надо закрепить и не обновлять, а обновлять другую, несертифицируемую ( сервисную ) часть прошивки.
Если не сделать онлайн-обновление обеих частей прошивки через интернет, то придётся :
1. Найти и исправить ошибки.
2. Поехать в сертификационные компании, забрать устройства.
3. Перепрошить эти устройства.
4. Отвезти устройства обратно.
И — по циклу. То есть, теоретически, если ошибки будут выявлять не все сразу, а постепенно — процесс сертификации существенно затянется.
Решение простое : надо сделать, так чтобы разные части ( редко изменяемые, такие как фискальное ядро, и часто изменяемые, такие как дополнительные, сервисные функции ) исполняемого кода компилировались по разным адресам для того, чтобы их можно было перепрошивать независимо друг от друга и, желательно, удалённо ( про «удалённо» читайте в соответствующей статье про использование Ethernet (lwip) поверх USB ), через интернет.
Также необходимо помнить, что код «самопрошивания» должен запускаться из RAM. Значит часть кода, относящаяся, к процессу прошивки необходимо разместить в RAM, причем этот «RAM-код» не должен вызывать код из ROM, по крайней мере во время процесса обновления.
В моём случае, я разделил адресацию кода на три части :
— загрузчик ( boot ) — отдельный проект. Он должен считать из flash-memory команду на прошивку того или иного ядра. Если команды нет — передавать управление в сервисное ядро. Код для «самоперепрошивки» — должен вызываться в RAM, вместе со всеми вызываемыми из неё функциями.
— сервисное ядро — часть основного проекта, для сервисных функций ( servcore ) — предположительно часто изменяемая часть проекта.
— кассовое ядро — часть основного проекта, для сервисных функций ( cashcore ) — редко изменяемая (только во время исправления ошибок, и позднее, при изменениях в законодательстве ) часть проекта.
Итак, в проекте кассы iCash мы использовали микроконтроллер K1921VK01T, поэтому у меня 1 Мбайт ROM и 192 Кбайта RAM. RTOS (или другие OS) не используем. Для проекта используется «чистый» Си, без плюсов.
Я решил адресовать части кода следующим образом :
— boot должен находится в первых 16 Килобайтах ROM ( адреса 0000H размером 4000H ), должен использовать RAM для вызова функций «прошивки», передавать управление (когда нет команд на прошивку) двум остальным частям прошивки.
— servcore должен находится c 4000H ROM. Оно должно уметь передавать управление в другое ядро, вызывая необходимые функции cashcore. Причём надо учитывать, что адресация функций ядра cashcore будет меняться. Любая версия servcore должна уметь взаимодействовать с любой версией cashcore, также и обратное тоже должно быть верным.
— cashcore располагается с адреса 80000H ( с половины мегабайта ). Оно должно уметь вызывать необходимые функции servcore, учитывая изменяемые адреса функций. Должно уметь использовать переменные другого ядра.
Подробнее о принятых решениях и способах реализации я напишу в следующей статье.
В этой же, опишу только реализованные мной способы привязки переменных и функций к физическим адресам памяти.
Где возможно, я использовал GUI Keil’a для настроек, в редактирование настроечных файлов «руками» лез только по необходимости, если без этого невозможно было обойтись.
Для «кода» было выделено 16 Кб с адреса ROM 0000H
В ОЗУ, на всякий случай, я зарезервировал 16 Кб, остальные 192 минус 16 Кб — под переменные и исполняемый вRAM код
В этом файле ( boot_flash.c ) находятся функции, которые перезаписывают ROM микроконтроллера.
Эти функции должны вызываться из RAM, поэтому в пункте «Code/Const» выбрана RAM, если было бы <default>, то код этого файла располагался бы вместе с остальным кодом — в ROM .
Вместо настроек в GUI Keil можно было бы вручную заполнить scatter файл вот так :
; ************************************************************* ; *** Scatter-Loading Description File generated by uVision *** ; ************************************************************* LR_IROM1 0x00000000 0x00004000 { ; load region size_region ER_IROM1 0x00000000 0x00004000 { ; load address = execution address *. o (RESET, +First) *(InRoot$$Sections) .ANY (+RO) .ANY (+XO) } RW_IRAM1 0x20004000 0x0002C000 { ; RW data boot_flash.o (+RO) .ANY (+RW +ZI) } }
Erase Full Chip — означает, что перед прошивкой первых 16 Кб будет очищаться ВЕСЬ внутренний FLASH микроконтроллера.
Прошивка будет располагаться с адреса 0H размером 4000H .
Для чего два ядра ( две отдельно обновляемые прошивки ) в одном проекте ? Для удобства процессов разработки и отладки.
Servcore и cashcore связаны друг с другом очень «плотно», функции ядер вызываются друг из друга, общие переменные и так далее. Всё это удобнее разрабатывать и отлаживать в едином проекте.
Главное — «развести» ядра по разным, непересекающимся частям памяти.
Настройки проекта с двумя прошивками.Первое ядро ( servcore ) располагается с адреса 4000H, ему отведено место вплоть до 7FFFFH ( вдруг ядро разрастётся ;-).
Второе ядро ( cashcore ) — с адреса 80000H ( 512 Кб ), размер вплоть до 512 Кб.
RAM — общая, под оба «ядра» забираем всю эту память под проект.
Options для одного из файлов, входящих в прошивку, располагаемую с адреса 80000H.«Ядра» должны быть реализованы так, чтобы адресация ( вызов функций ) происходила либо только внутри этого ядра, либо по заранее определённому адресу, который гарантированно адресует необходимую часть кода, как это сделать — читайте 2-ую часть статьи.
Ниже приведён scatter файл проекта ( там где «….0» находятся другие файлы прошивки ядра cashcore, скрыл, соблюдая коммерческую тайну 😉
; *************************************************************
; *** Scatter-Loading Description File generated by uVision ***
; *************************************************************
LR_IROM1 0x00004000 0x0007C000 { ; load region size_region
ER_IROM1 0x00004000 0x0007C000 { ; load address = execution address
*.o (RESET, +First)
*(InRoot$$Sections)
.ANY (+RO)
.ANY (+XO)
}
RW_IRAM1 0x20000000 0x00030000 { ; RW data
. ANY (+RW +ZI)
}
}
LR_IROM2 0x00080000 0x00080000 {
ER_IROM2 0x00080000 0x00080000 { ; load address = execution address
base64.o (+RO)
....o (+RO)
....o (+RO)
....o (+RO)
....o (+RO)
....o (+RO)
....o (+RO)
....o (+RO)
....o (+RO)
....o (+RO)
}
}
В этом проекте установлено не стирать ( Do not Erase ) перед прошиванием. Для того чтобы можно было зашить на чип сразу несколько проектов.
В данном случае, сначала прошиваем boot-проект, потом ..cores — проект.
Остальные цифры, я думаю, понятны из предыдущих разъяснений.
Настройка инструмента прошивки J-Link для проекта …coresВ следующих статьях я опишу, как реализовать код boot-a и взаимодействие двух «отдельных» прошивок в рамках одного проекта.
Как прожигать — Часть 2
Как обеспечить корректно взаимодействие — Часть 3
Спасибо за внимание.
Настройка проекта в Keil uvision5
- Подробности
- Категория: Микроконтроллеры STM32
- Опубликовано 29. 11.2013 14:41
- Автор: Admin
- Просмотров: 15778
Сам я начинающий в этом деле, если что не так опишу, просьба сильно не пинать)
До работы с 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. Шаг первый – скачиваем файлы настройки контроллера
Для того чтобы настроить свой первый проект вам необходимо для начала скачать архив для вашей конкретной платы с официального сайта
www.st.com
Для своей платы STM32f3Discovery я скачал архив с примерами по ссылки
http://www.st.com/web/catalog/mmc/FM141/SC1169/SS1576/LN1531/PF252054#
Далее распаковываем данный архив.
2. Создаем папки проекта
После этого в папке с проектом создаем 4 папки
- cmsis – папка содержащая файлы настройки микроконтроллера;
- pl – папка с файлами переферрий;
- user – пользовательская папка, тут главный исполняемый файл;
- startup – начальная инициализация/
У меня это выглядит так:
«F:\Projects\STM32\Ex4\cmsis»
«F:\Projects\STM32\Ex4\pl»
«F:\Projects\STM32\Ex4\startup»
«F:\Projects\STM32\Ex4\user»
3. Создаем аналогичные группы в среде Keil u vision
Аналогично в нашем проекте создаём группы с такими же названиями. Названия можно давать любые, но чтобы не путаться лучше такие же, как и сами папки.
Важно понимать, что создание группы в проекте это не создание аналогичных папок в папке проекта, а всего лишь группировка исполняемых файлов.
4. Копируем нужные файлы в папки проекта
Далее нам необходимо скопировать из нашего,ранее скаченного архива, следующие файлы.
В папку cmsis следующие 3 файла:
- » F:\Projects\STM32\Ex4\cmsis\system_stm32f30x.c»
- » F:\Projects\STM32\Ex4 \cmsis\system_stm32f30x.h»
- » F:\Projects\STM32\Ex4cmsis\stm32f30x.h»
Файл stm32f30x.h – это файл необходимый для настройки работы микроконтроллера.
В папку pl две папки из STM32F30x_StdPeriph_Driver это
inc и src, в которых находится куча файлов для работы с периферией.
Также в папку pl необходимо скопировать файл stm32f30x_conf.h из любого проекта.
В итоге имеем:
- «F:\Projects\STM32\Ex4\pl\stm32f30x_conf.h»
- «F:\Projects\STM32\Ex4\pl\inc\тут куча файлов h»
- «F:\Projects\STM32\Ex4\pl\src\ тут куча файлов c»
В папку startupкопируем следующий файл
«F:\Projects\STM32\Ex4\startup\startup_stm32f30x.s»
В папке userсоздаем наш исполняемый файл main.c
5. Добавляем файлы в проект
В среде Keil нам необходимо добавить некоторые файлы в созданные группы.
- В группу cmsis добавляем один файл system_stm32f30x.c;
- В группу pl все си-шные файлы периферии из папки src;
- В группу startup файл startup_stm32f30x.s;
- А в папке user создаем файл main.cв ручную.
На данном этапе это выглядит так:
6. Самый главные этап создания проекта
Далее нам необходимо открыть файл stm32f30x. h и убрать комментарий со следующей строки:
/* #define USE_STDPERIPH_DRIVER*/
В результате Keil начинает использовать ваши скопированные файлы.
7. Добавляем в проект стандартную библиотеку core
Для того чтобы добавить данную библиотеку необходимо менеджере проектов выбрать пунк Run-TimeEnviroment и поставить галочку в поле CMSIS.
Далее открываем наш main.c и компилируем, если ошибок нет. Значит проект настроен верно.
- < Назад
- Вперёд >
Добавить комментарий
Сравнить выпуски MDK
Главная / MDK / Сравнить выпуски MDK
*Все устаревшие ядра поддерживаются только Arm Compiler 5. Типы лицензий Привязка к узлу: FlexLM Плавающий: MDK для Holtek Cortex-M0+: MDK для Nuvoton Cortex-M0/M23: MDK для STMicroelectronics STM32F0, STM32G0 и STM32L0:
Системные требованияВсе выпуски MDK предназначены для 64-разрядных версий Microsoft Windows и имеют одинаковые системные требования. | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Важная информация
Этот сайт использует файлы cookie для хранения информации на вашем компьютере. Продолжая использовать наш сайт, вы согласие на использование наших файлов cookie.
Изменить настройки
Обновление политики конфиденциальности
Политика конфиденциальности Arm была обновлена. Продолжая использовать наш сайт, вы соглашаетесь с политикой конфиденциальности Arm.
Политика. Пожалуйста, ознакомьтесь с нашей Политикой конфиденциальности, чтобы узнать больше
о нашем сборе, использовании и передаче
ваших данных.
Создание нового проекта STM32 в учебном пособии Keil uVision 5
В этом учебном пособии мы увидим, как создать проект в KEIL MDK uVision 5 для микроконтроллеров на базе STM32 ARM Cortex-M. Это для новичков, которые хотят начать программировать STM32 с помощью Keil. Это руководство также применимо ко всем поддерживаемым устройствам семейства STM32, а именно. STM32F0/F1/F2/F4/F7/и т. д./. Keil uV 5 сильно отличается от более старого Keil uV4. В uVision 5 встроен установщик пакетов, который используется для установки определенных пакетов семейства MCU и других библиотек. Чтобы создать проект для микроконтроллера STM32, вам сначала нужно установить Пакеты программного обеспечения MDK5 для вашего семейства микроконтроллеров. Либо вы можете загрузить его отдельно, либо сделать это из IDE. Я рекомендую добавлять пакеты программного обеспечения с помощью IDE.
В основном можно создать три (или более?) типа проектов STM32 Keil:
- Тот, который использует только CMSIS (ядро).
- Тот, который основан на стандартной периферийной библиотеке.
- Наконец, тот, который основан на библиотеке HAL (уровень аппаратной абстракции).
В этом уроке мы увидим, как создать проект STM32F103C8 Keil uv5 на основе CMSIS и SPL в качестве примера, но он будет работать точно так же для STM32F0, STM32F4 и других семейств. Я расскажу о проектах на основе HAL в другом уроке.
1) Установка необходимого программного пакета STM32 Keil
Если он уже установлен, вы можете ПРОПУСТИТЬ это.
Шаг A. Загрузите последнюю версию Keil MDK uVision5 с веб-сайта Keil.
Шаг B. Установите Keil uVision 5 по пути по умолчанию.
ШАГ C. Откройте Keil 5 и щелкните значок «Установщик пакетов», как показано ниже:
ШАГ D. В левой половине окна в разделе «Устройства» введите «STM3F103C8»
( или другое имя устройства в зависимости от устройства, присутствующего на вашей макетной плате) в поле поиска и выберите MCU в списке ниже. Теперь в правой половине окна нажмите кнопку «Установить», которая находится справа от «Keil: STM32F1xxx_DFP» и «Keil: STM32NUCLEO_B». Повторите этот шаг, если хотите добавить поддержку другого семейства устройств. После этого подождите, пока установщик пакета завершит загрузку необходимых файлов пакета для выбранного MCU.
Кроме того, вы можете вручную загрузить пакет программного обеспечения и установить его непосредственно из пакетов программного обеспечения MDK5. Он будет присутствовать в разделе «KEIL-> STMicroelectronics STM32F1 Series Device Support, Drivers». В целом для устройств STM32Fx.
ШАГ E. После установки из Pack Installer вы получите подтверждение на повторную загрузку пакетов. Нажмите «Да», как показано ниже:
2) Пошаговое руководство
Итак, теперь у нас установлены необходимые пакеты для создания нашего первого проекта STM32 в Keil 5. Просто следуйте шагам, указанным ниже, чтобы создать новый проект в Keil uV 5 или если ваш проект не работает должным образом:
Шаг 1.
Откройте Keil IDE, в главном меню выберите «Проект->Новый проект uVision…», и откроется окно с запросом на сохранение нового проект. Введите желаемое имя проекта и сохраните.
Шаг 2.
После этого появится новое окно, как показано ниже. Убедитесь, что в первом раскрывающемся списке выбрано «Пакеты программного обеспечения». В поле поиска под ним введите «STM32F103C8», а затем выберите устройство из списка ниже. Например: STM32F103C8 для STM32 Blue Pill, STM32F103RB для Nucleo-F103RB, STM32F030R8 для Nucleo-F030R8 и так далее.
Наконец, нажмите «ОК».
Шаг 3.
A. Для CMSIS:
В окне «Управление средой выполнения» установите флажки «ЯДРО» в разделе «CMSIS» и «Запуск» в разделе «Устройство». Если вы хотите выбрать любые другие библиотеки, вы можете сделать это, установив соответствующие флажки. Выбор «Автозагрузка» автоматически добавит все необходимые файлы запуска / загрузки, необходимые для устройства STM32F1xx, поэтому нам не нужно импортировать их из внешних источников. Выбор библиотек может быть изменен в любое время позже.
B. Для стандартной библиотеки периферийных устройств (SPL):
Если вы хотите использовать SPL, выберите необходимые компоненты библиотеки периферийных устройств. Обратите внимание, что некоторые компоненты также имеют зависимости, поэтому вам также потребуется включить зависимые компоненты. За. Например. GPIO нуждается в RCC для включения часов.
Шаг 4.
Теперь нажмите кнопку «Параметры цели», как показано ниже:
Убедитесь, что настройки совпадают, как показано ниже.
Шаг 5.
Теперь перейдите на вкладку «Вывод». Если вы хотите сгенерировать шестнадцатеричный файл, вы можете установить флажок «Создать шестнадцатеричный файл». Вы также вводите подходящее имя для исполняемого выходного файла.
Шаг 6.
Затем щелкните вкладку «Компоновщик» и на этой вкладке установите флажок «Использовать макет памяти из целевого диалогового окна».
Шаг 7.
Теперь на вкладке «Отладка» выберите ST-LINK в качестве отладчика, так как он наиболее распространен для отладки и программирования STM32. Наконец, нажмите «ОК», чтобы применить настройки и закрыть окно.
Шаг 8.
Теперь на панели навигации источника в левой области щелкните правой кнопкой мыши «Исходная группа 1» и выберите «Добавить новый элемент в группу «Исходная группа 1»».
Шаг 9.
Появится новое окно для добавления элемента, как показано ниже. Выберите «Файл C (.c)» или «Файл C++ (.cpp)», затем введите имя файла в текстовом поле справа от «Имя:» и нажмите «Добавить».
Шаг 10.
Теперь вы можете написать свой код в редакторе. Чтобы скомпилировать вашу программу, нажмите клавишу «F7» или в главном меню выберите «Проект->Создать цель». Чтобы проверить наличие ошибок компиляции, вы можете посмотреть вывод сборки в нижней части главного окна. Два скриншота Keil MDK uVision 5 приведены ниже.
A. Для основного проекта CMSIS:
B. Для проекта на основе стандартной периферийной библиотеки :
)
все: Я обновил свою версию keil MDK до последней версии V5. 37, а затем обнаружил, что проект больше не может собираться. поскольку V5.37 не поддерживает компилятор 5 и устанавливает компилятор по умолчанию на компилятор 6, я установил компилятор 5 (версия компилятора 5, V5.06 update7) с независимым патчем, а затем добавил компилятор 5 в keil , установите компилятор 5 в качестве компилятора по умолчанию, но keil не может собрать проект, постройте вывод следующим образом:
*** Использование компилятора «V5.06 update 7 (сборка 960)», папка: «C:\_AnZhuang\keil\Keil\ARMCCv506u7\Bin» Построить цель "LED" сборка startup_stm32f40_41xxx.s... startup_stm32f40_41xxx.s: Ошибка: A9511E: Не удалось определить текущий набор инструментов. Убедитесь, что ARM_TOOL_VARIANT установлен правильно. startup_stm32f40_41xxx.s: проверьте правильность сведений о лицензии в диалоговом окне «Управление лицензиями» MDK. Дополнительная информация доступна по адресу: startup_stm32f40_41xxx.s: - ARMLMD_LICENSE_FILE: не установлено startup_stm32f40_41xxx.s: - LM_LICENSE_FILE: не установлен startup_stm32f40_41xxx. s: - ARM_TOOL_VARIANT: не установлено startup_stm32f40_41xxx.s: - ARM_PRODUCT_PATH: не установлено startup_stm32f40_41xxx.s: - Местоположение продукта: продукт не найден startup_stm32f40_41xxx.s: — Расположение набора инструментов: C:\_AnZhuang\keil\Keil\ARMCCv506u7\Bin startup_stm32f40_41xxx.s: — Выбранный вариант инструмента: mdk_lite startup_stm32f40_41xxx.s: Продукт: неизвестен startup_stm32f40_41xxx.s: Компонент: Компилятор ARM 5.06, обновление 7 (сборка 960) startup_stm32f40_41xxx.s: Инструмент: ArmAsm [4d35fa] компиляция delay.c... Ошибка: C9511E: Не удалось определить текущий набор инструментов. Убедитесь, что ARM_TOOL_VARIANT установлен правильно. Проверьте правильность сведений о вашей лицензии в диалоговом окне «Управление лицензиями» MDK. Дополнительная информация доступна по адресу: - ARMLMD_LICENSE_FILE: не установлено - LM_LICENSE_FILE: не установлен - ARM_TOOL_VARIANT: не установлено - ARM_PRODUCT_PATH: не установлено - Местонахождение товара: товар не найден - Расположение набора инструментов: C:\_AnZhuang\keil\Keil\ARMCCv506u7\Bin - Выбранный вариант инструмента: mdk_lite Продукт: неизвестен Компонент: Компилятор ARM 5. 06, обновление 7 (сборка 960) Инструмент: ArmCC [4d365d] компиляция main.c... Ошибка: C9511E: Не удалось определить текущий набор инструментов. Убедитесь, что ARM_TOOL_VARIANT установлен правильно. Проверьте правильность сведений о вашей лицензии в диалоговом окне «Управление лицензиями» MDK. Дополнительная информация доступна по адресу: - ARMLMD_LICENSE_FILE: не установлено - LM_LICENSE_FILE: не установлен - ARM_TOOL_VARIANT: не установлено - ARM_PRODUCT_PATH: не установлено - Местонахождение товара: товар не найден - Расположение набора инструментов: C:\_AnZhuang\keil\Keil\ARMCCv506u7\Bin - Выбранный вариант инструмента: mdk_lite Продукт: неизвестен Компонент: Компилятор ARM 5.06, обновление 7 (сборка 960) Инструмент: ArmCC [4d365d] компиляция stm32f4xx_syscfg.c... Ошибка: C9511E: Не удалось определить текущий набор инструментов. Убедитесь, что ARM_TOOL_VARIANT установлен правильно. Проверьте правильность сведений о вашей лицензии в диалоговом окне «Управление лицензиями» MDK. Дополнительная информация доступна по адресу: - ARMLMD_LICENSE_FILE: не установлено - LM_LICENSE_FILE: не установлен - ARM_TOOL_VARIANT: не установлено - ARM_PRODUCT_PATH: не установлено - Местонахождение товара: товар не найден - Расположение набора инструментов: C:\_AnZhuang\keil\Keil\ARMCCv506u7\Bin - Выбранный вариант инструмента: mdk_lite Продукт: неизвестен Компонент: Компилятор ARM 5. 06, обновление 7 (сборка 960) Инструмент: ArmCC [4d365d] компиляция usart.c... Ошибка: C9511E: Не удалось определить текущий набор инструментов. Убедитесь, что ARM_TOOL_VARIANT установлен правильно. Проверьте правильность сведений о вашей лицензии в диалоговом окне «Управление лицензиями» MDK. Дополнительная информация доступна по адресу: - ARMLMD_LICENSE_FILE: не установлено - LM_LICENSE_FILE: не установлен - ARM_TOOL_VARIANT: не установлено - ARM_PRODUCT_PATH: не установлено - Местонахождение товара: товар не найден - Расположение набора инструментов: C:\_AnZhuang\keil\Keil\ARMCCv506u7\Bin - Выбранный вариант инструмента: mdk_lite Продукт: неизвестен Компонент: Компилятор ARM 5.06, обновление 7 (сборка 960) Инструмент: ArmCC [4d365d] компиляция sys.c... Ошибка: C9511E: Не удалось определить текущий набор инструментов. Убедитесь, что ARM_TOOL_VARIANT установлен правильно. Проверьте правильность сведений о вашей лицензии в диалоговом окне «Управление лицензиями» MDK. Дополнительная информация доступна по адресу: - ARMLMD_LICENSE_FILE: не установлено - LM_LICENSE_FILE: не установлен - ARM_TOOL_VARIANT: не установлено - ARM_PRODUCT_PATH: не установлено - Местонахождение товара: товар не найден - Расположение набора инструментов: C:\_AnZhuang\keil\Keil\ARMCCv506u7\Bin - Выбранный вариант инструмента: mdk_lite Продукт: неизвестен Компонент: Компилятор ARM 5. 06, обновление 7 (сборка 960) Инструмент: ArmCC [4d365d] компиляция stm32f4xx_rcc.c... Ошибка: C9511E: Не удалось определить текущий набор инструментов. Убедитесь, что ARM_TOOL_VARIANT установлен правильно. Проверьте правильность сведений о вашей лицензии в диалоговом окне «Управление лицензиями» MDK. Дополнительная информация доступна по адресу: - ARMLMD_LICENSE_FILE: не установлено - LM_LICENSE_FILE: не установлен - ARM_TOOL_VARIANT: не установлено - ARM_PRODUCT_PATH: не установлено - Местонахождение товара: товар не найден - Расположение набора инструментов: C:\_AnZhuang\keil\Keil\ARMCCv506u7\Bin - Выбранный вариант инструмента: mdk_lite Продукт: неизвестен Компонент: Компилятор ARM 5.06, обновление 7 (сборка 960) Инструмент: ArmCC [4d365d] компиляция stm32f4xx_usart.c... Ошибка: C9511E: Не удалось определить текущий набор инструментов. Убедитесь, что ARM_TOOL_VARIANT установлен правильно. Проверьте правильность сведений о вашей лицензии в диалоговом окне «Управление лицензиями» MDK. Дополнительная информация доступна по адресу: - ARMLMD_LICENSE_FILE: не установлено - LM_LICENSE_FILE: не установлен - ARM_TOOL_VARIANT: не установлено - ARM_PRODUCT_PATH: не установлено - Местонахождение товара: товар не найден - Расположение набора инструментов: C:\_AnZhuang\keil\Keil\ARMCCv506u7\Bin - Выбранный вариант инструмента: mdk_lite Продукт: неизвестен Компонент: Компилятор ARM 5.06, обновление 7 (сборка 960) Инструмент: ArmCC [4d365d] компиляция led.c... Ошибка: C9511E: Не удалось определить текущий набор инструментов. Убедитесь, что ARM_TOOL_VARIANT установлен правильно. Проверьте правильность сведений о вашей лицензии в диалоговом окне «Управление лицензиями» MDK. Дополнительная информация доступна по адресу: - ARMLMD_LICENSE_FILE: не установлено - LM_LICENSE_FILE: не установлен - ARM_TOOL_VARIANT: не установлено - ARM_PRODUCT_PATH: не установлено - Местонахождение товара: товар не найден - Расположение набора инструментов: C:\_AnZhuang\keil\Keil\ARMCCv506u7\Bin - Выбранный вариант инструмента: mdk_lite Продукт: неизвестен Компонент: Компилятор ARM 5. 06, обновление 7 (сборка 960) Инструмент: ArmCC [4d365d] компиляция разное.с... Ошибка: C9511E: Не удалось определить текущий набор инструментов. Убедитесь, что ARM_TOOL_VARIANT установлен правильно. Проверьте правильность сведений о вашей лицензии в диалоговом окне «Управление лицензиями» MDK. Дополнительная информация доступна по адресу: - ARMLMD_LICENSE_FILE: не установлено - LM_LICENSE_FILE: не установлен - ARM_TOOL_VARIANT: не установлено - ARM_PRODUCT_PATH: не установлено - Местонахождение товара: товар не найден - Расположение набора инструментов: C:\_AnZhuang\keil\Keil\ARMCCv506u7\Bin - Выбранный вариант инструмента: mdk_lite Продукт: неизвестен Компонент: Компилятор ARM 5.06, обновление 7 (сборка 960) Инструмент: ArmCC [4d365d] компиляция system_stm32f4xx.c... Ошибка: C9511E: Не удалось определить текущий набор инструментов. Убедитесь, что ARM_TOOL_VARIANT установлен правильно. Проверьте правильность сведений о вашей лицензии в диалоговом окне «Управление лицензиями» MDK. Дополнительная информация доступна по адресу: Если вам нужна дополнительная помощь, предоставьте этот полный отчет об ошибке своему поставщику. - ARMLMD_LICENSE_FILE: не установлено - LM_LICENSE_FILE: не установлен - ARM_TOOL_VARIANT: не установлено - ARM_PRODUCT_PATH: не установлено - Местонахождение товара: товар не найден - Расположение набора инструментов: C:\_AnZhuang\keil\Keil\ARMCCv506u7\Bin - Выбранный вариант инструмента: mdk_lite Продукт: неизвестен Компонент: Компилятор ARM 5.06, обновление 7 (сборка 960) Инструмент: ArmCC [4d365d] компиляция stm32f4xx_gpio.c... Ошибка: C9511E: Не удалось определить текущий набор инструментов. Убедитесь, что ARM_TOOL_VARIANT установлен правильно. Проверьте правильность сведений о вашей лицензии в диалоговом окне «Управление лицензиями» MDK. Дополнительная информация доступна по адресу: Если вам нужна дополнительная помощь, предоставьте этот полный отчет об ошибке своему поставщику. - ARMLMD_LICENSE_FILE: не установлено - LM_LICENSE_FILE: не установлен - ARM_TOOL_VARIANT: не установлено - ARM_PRODUCT_PATH: не установлено - Местонахождение товара: товар не найден - Расположение набора инструментов: C:\_AnZhuang\keil\Keil\ARMCCv506u7\Bin - Выбранный вариант инструмента: mdk_lite Продукт: неизвестен Компонент: Компилятор ARM 5. 06, обновление 7 (сборка 960) Инструмент: ArmCC [4d365d] компиляция stm32f4xx_it.c... Ошибка: C9511E: Не удалось определить текущий набор инструментов. Убедитесь, что ARM_TOOL_VARIANT установлен правильно. Проверьте правильность сведений о вашей лицензии в диалоговом окне «Управление лицензиями» MDK. Дополнительная информация доступна по адресу: Если вам нужна дополнительная помощь, предоставьте этот полный отчет об ошибке своему поставщику. - ARMLMD_LICENSE_FILE: не установлено - LM_LICENSE_FILE: не установлен - ARM_TOOL_VARIANT: не установлено - ARM_PRODUCT_PATH: не установлено - Местонахождение товара: товар не найден - Расположение набора инструментов: C:\_AnZhuang\keil\Keil\ARMCCv506u7\Bin - Выбранный вариант инструмента: mdk_lite Продукт: неизвестен Компонент: Компилятор ARM 5.06, обновление 7 (сборка 960) Инструмент: ArmCC [4d365d] "..\OBJ\LED.axf" - 13 ошибок, 0 предупреждений. Цель не создана. Прошло время сборки: 00:00:01
из вывода сборки, это означает, что лицензия keil неверна. Но я пробовал все типы лицензионных кодов, которые генерируются кейгеном, и все эти лицензии не увенчались успехом.
у кого такая же проблема как у меня? и любые решения или советы попробовать? огромное спасибо.
- c
- arm
- keil
У меня была та же проблема, я пытался определить путь в переменной окружения, устанавливая его в разные каталоги,…; Ни один из них не работал.
В итоге столкнулся с этой страницей собственной документации: https://developer.arm.com/documentation/ka005073/1-0/?lang=en
Попробуйте установить компилятор ARM V5 по этому пути: [Путь установки Keil]\ARM\ARM_Compiler_5.06u7
Для меня это: C:\Keil_v5\ARM\ARM_Compiler_5.06u7
Затем добавьте путь к Keil’s ArmCC Path следующим образом: Путь Keil ArmCC: добавить компилятор
1
https://developer.arm.com/documentation/ka005073/latest
Здесь говорится, что компилятор не следует устанавливать в каталог по умолчанию.