Keil как добавить startup файл

Обновлено: 07.07.2024

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)

4,5,6) StdPeriph, StartUP, CMSIS (необходимые файлы для работы с ядром Cortex-M)

7,8) USBSource, USBLib (Необходимые файлы для работы c USB)

9) Папка VCP_V1.5.0 с драйверами последовательного COM порта для микроконтроллера STM32F303RBT6


Далее устанавливаем Keil uVision 5 (проблем с установкой быть не должно, следуем инструкциям установщика) и переходим к настройкам среды.

Нажимаем на кнопку Pack Installer (рисунок 2).


Откроется диалоговое окно Pack Installer, жмем на File->Import (рисунок 3) и выбираем файл Keil.STM32F3xx_DFP.1.4.0.pack (рисунок 4).



Рисунок 3

Теперь создаем новый проект Project->New uVision Project. (рисунок 5).


Теперь нужно выбрать папку где будет расположен наш проект и присвоить ему имя. У меня это папка Keil_EX_1 и название проекта EX_1 (рисунок 6). Давайте сразу скопируем в эту папку файлы: StdPeriph, StartUP, CMSIS из скаченного архива KEIL_uVision_and_other


После нажатия на кнопку сохранить появится диалоговое окно Select Device for Target 'Target 1'. в котором нам предложат выбрать микроконтроллер с которым мы будем работать. Нажимаем на вкладку STM32F303 (рисунок 7) после чего в раскрывшемся списке выбираем наш микроконтроллер STM32F303RB как показано на (рисунке 8).



Рисунок 7

Нажимаем на кнопку ОК и автоматически появится диалоговое окно Manage Run-Time Environment (рисунок 9), просто жмем Cancel и идем дальше.


Теперь в появившемся окне Project (рисунок 10) необходимо подготовить структуру папок для удобства работы.


Правой кнопкой мыши жмем на папку Target 1 и выбираем Manage Project items. как на (рисунке 11).


Появится диалоговое окно Manage Project items в котором теперь необходимо добавить с помощью кнопок New/Delet (1) следующие папки: StartUP, USER, CMSIS, StdPeriph (2), после жмем ОК (3) (рисунок 12).


Следующим шагом нужно добавить в созданные нами папки: StartUP, CMSIS, StdPeriph необходимые файлы с помощью команды Add Exsisting Files to Group 'Название папки'. (рисунок 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).


Выбираем тип добавляемого файла CFile(.c) (1), присваиваем файлу имя main (2), нажимаем на кнопку добавить Add(3) (рисунок 15).


После всех манипуляций ваш проект должен выглядеть так же как на (рисунке 16), за исключением нескольких строчек кода которые я написал в main для демонстрации ошибки. Здесь нет ни чего страшного просто нужно произвести окончательные настройки проекта (рисунок 17):

(1) Нажимаем на кнопку Options for Target.

(2) Заходим во вкладку С/С++

(3) В поле Define вводим USE_STDPERIPH_DRIVER

(4) Жмем на кнопку добавить путь (1) и прописываем пути ко всем файлам проекта (2) (рисунок 18)




Заходим во вкладку Output выставляем галочку Create HEX File (рисунок 19), этот файл будет использоваться нами для прошивки микроконтроллера. Жмем ОК.


Все готово, теперь осталось только собрать проект. Жмем на кнопку Build (рисунок 20). Ошибок быть не должно.


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

Во-первых, CMSIS. Это замечательная библиотека, единый стандарт для всех Cortex. CMSIS позволяет легко переносить код с одного контроллера с ядром ARM Cortex на любой другой. Короче, в CMSIS стандартизирован доступ к разной периферии разных микроконтроллеров STM. Библиотека состоит из нескольких файлов, которые нам надо будет добавить в проект, но об этом немного позднее.

Во-вторых, библиотека Standard Peripheral Library. В SPL очень удобно, в виде структур, реализована настройка всевозможной периферии, а также есть множество функций для работы с ней. Эту библиотеку достаточно подробно будем изучать при обсуждении какой-либо конкретной периферии в будущих статьях. А сейчас кратенько рассмотрим ее структуру в общих чертах. Для любого модуля микроконтроллера есть 2 файла: заголовочный файл и, собственно, файл с исходным кодом. В первом содержатся структуры для настройки периферии, во втором функции для обращения к ней. Так что, создавая проект для работы, например, с АЦП, мы будем включать в проект два файла из Standard Peripheral Library.

Возможно, кто-то сомневается, стоит ли использовать эту библиотеку. Речь, конечно о SPL (по поводу CMSIS думаю ни у кого не может быть сомнений 🙂 ). Так вот, я для себя однозначно решил, что стоит. Ну на самом деле, к чему изобретать велосипед, библиотека написана и очень удобна, гораздо удобнее, чем напрямую ковыряться в многочисленных регистрах. НО! При всем этом, надо все-таки иметь представление какой регистр за что отвечает, и как с ними работать. Для этого не лишним будет просматривать раздел даташита на конкретную периферию при работе с ней.

Итак, скачиваем CMSIS и Standard Peripheral Library (SPL) и шагаем дальше:

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

Идем в Project -> New uVision Project. Появляется окошко для выбора папки, в которой будет создан проект. Также надо дать нашему проекту имя. Пусть будет, например, test, это ведь просто тестовый проект. Скриншот приводить не буду, тут все и так понятно. Теперь нам надо выбрать микроконтроллер. Я остановил свой выбор на STM32F103CB:

В левой части видим окошко Project. Там будут отображаться все файлы, добавленные в наш проект. Я обычно переименовываю группы, которые по умолчанию называются Target 1 и Source Group 1 в STM32 и StartUp соответственно. Сразу же добавим еще пару групп – для библиотек, а также для наших файлов, в которых будет собственно сам код. У меня после модификации все выглядит вот так:

Теперь аналогично добавим файлы библиотеки SPL. Пока они нам не понадобятся, но пусть будут. Добавим, например stm32f10x_rcc.c и подхватим includ’ом stm32f10x_rcc.h (файлы, содержащие все связанное с тактированием различной периферии). И наконец добавим наш созданный файл test.c в папку Source Files в дереве проекта.

И вот тут еще одни грабли. Все папки, которые добавляем в Include Paths не должны содержать пробелов. Так что мои Header Files, Source Files и Project Files плавно превращаются в Header_Files, Source_Files и Project_Files.

Еще один шаг к созданию проекта сделан, в принципе, осталось совсем чуть-чуть. В файл test.c закинем следующий тестовый код, который абсолютно ничего не делает 🙂

Чтобы это не вылетало, открываем stm32f10x_conf.h, ищем:

то надо всего лишь сделать так, чтобы файл test.c не заканчивался строкой кода. Проще говоря, ставим курсор после последней скобки в этом файле и жмем Enter. Warning сразу же пропадает.

Ну вот, первые шаги сделаны. Мы создали пустой проект, который абсолютно ничего не делает полезного (бесполезного впрочем тоже 🙂 ). Но для начала уже неплохо, в следующих статьях будем заполнять проект кодом. Кстати, если у кого-нибудь возникли какие-либо трудности при создании проекта, пишите в комментарии, не стесняйтесь! И не пропустите статью нашего курса по STM32CubeMx, описывающую аналогичный процесс создания базового проекта.

Когда вы первый раз заходите с помощью соцсетей, мы получаем публичную информацию из вашей учетной записи, предоставляемой провайдером услуги соцсети в рамках ваших настроек конфиденциальности. Мы также автоматически получаем ваш e-mail адрес для создания вашей учетной записи на нашем веб сайте. Когда она будет создана, вы будете авторизованы под этой учетной записью. Когда вы первый раз заходите с помощью соцсетей, мы получаем публичную информацию из вашей учетной записи, предоставляемой провайдером услуги соцсети в рамках ваших настроек конфиденциальности. Мы также автоматически получаем ваш e-mail адрес для создания вашей учетной записи на нашем веб сайте. Когда она будет создана, вы будете авторизованы под этой учетной записью.

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

А в дефайнах проекта там не надо писать что-то типа USE_STDPERIPH_LIBRARY?

А можно ещё узнать где брать эти библиотеки, например на F4

Добавлю вечером ссылку на библиотеку для F4, а так в интернете все что угодно можно найти)

можно и удалить)

Теоретически да, поэтому и не удаляем

Наверняка где-то в пути к файлу пробелы или русские буквы

Разобрался. Файл был для асемблера, в настройках переделал на С

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

Постараюсь написать, но не уверен, что в ближайшее время получится..

В наборе МК при создании проекта у меня нет тулсета ARM, только C51. При этом в File->Device Database все присутствует. Есть ли советы как починить?

Подскажите пожалуйста, как настроить комбинации горячих клавиш Ctrl+C, Ctrl+V.

Правой кнопкой в окне Project (там где все файлы) и потом в меню Add group

Точно для ARM Keil?

точно для ARM, такой же как на рисунке на этой страничке

Файл startup.s включен в проект?

блин..), спасибо, извините

Помогите плиз.
Всё ругается

А что за контроллер? Кидай проект, я посмотрю )

Здравствуйте 🙂
Делал по аналогии с вашим мануалом под контроллер stm32f30 .

uVision 5 под arm

Аа.. тогда даже не знаю, что сказать, сам пятым не пользуюсь, и вообще постоянно люди жалуются, что в пятом что-то не работает. Ставь uVision 4))

Я скачал новую версию Keil с офф. сайта и там в списке нет stm32. Что я не очень понял как тогда начать?

Это точно Кейл для ARM процессоров?

Спасибо. Да вроде уже разобрался. Теперь качнул MDK-ARM v4.73. До этого был С51 v9.52. Но об этом в статья явно не писано :)) Я как новичек не знал, что все так разделено.

Почему-то в скаченной с офф.сайта MDK-ARM v4.73 теперь вообще ни чего нет в списке.

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

А можно как-то обойтись без библиотек и насколько это будет сложно?
А то не хочется разбираться в чужих библиотеках.

Спасибо. Всё с первого раза получилось))

.\Example.axf: Error: L6200E: Symbol SystemInit multiply defined (by system_stm32f4xx_1.o and system_stm32f4xx.o).

Подскажите, пожалуйста, в чем причина этой ошибки? У меня 7 их вылазит при построении.

мда. Стартую не с нуля и стартануть не могу. Хоть бы написали, как установить IDE, как добавить в неё библиотеки микроконтроллеров и т.д. Бьюсь об неё уже час, первый проект создать не могу. В кокосе уже бы давным давно программу писал.

Я даже растерялся поначалу, прочитав.

Вообще 90 процентов статьи посвящено именно тому как добавить файлы библиотек в новый проект, как прописать к ним пути и т. д.

А уж писать про установку IDE на сайте, ориентированном все-таки на программистов или людей, которые хотят ими стать, по меньшей мере странно.

Немного не так поняли. Например, в окне select device for target у меня была всего одна строка с одним устройством. Микроконтроллеров stm32 там не было. Чтобы они там появились, надо зайти в прилагающуюся к IDE утилиту и там установить библиотеки. Вроде всё просто, а провозился с этим с полчаса. Вот первые грабли, дальше не получилось что- то ещё и ещё. Как итог- старт не состоялся, я остаюсь на CooCox. Как говорится, хорошая попытка, keil.

Вполне вероятно, что Кейл не тот, у них же есть IDE под разные архитектуры.

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

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

После долгих попыток наконец-то удалось установить причину всех моих неудач. Ниже представлены несколько шагов, которые делаю я для создания проекта. Эти шаги облегчат процесс создание своих первых проектов на микроконтроллерах семейства 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 и компилируем, если ошибок нет. Значит проект настроен верно.

[Перепечатано] Подготовка к работе с STM32 [Настройка Keil, создание шаблона Keil, загрузка конфигурации ST-Link V2]

2017/03/02 10:26:23o0 галогеноводород 0oКоличество чтений: 12011

Название: подключение ST-Link V2, настройка Keil, создание шаблона файла;

Среда программирования: Win10 64-bit, Keil 5.11, версия периферийной библиотеки ST: 3.5.0;

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

После загрузки и установки драйвера ST-Link V2 (если у вас его нет, вы можете найти его прямо в магазине Baodian);

Прежде всего, если ваш загрузчик выглядит так:


Затем вы можете установить соответствующий интерфейс в соответствии со следующим:



Соответствующий контакт подключения, как показано на рисунке (подключите любой контакт с тем же именем):

ST-Link V2

STM32

Эти два файла используются для разработки STM32 в Keil 5, CMSIS является стандартом интерфейса (он должен быть установлен) Keil.STM32F1xx_DFP - пакет библиотеки прошивки keil5, используемый для файлов разработки STM32.

(Каждый пытается найти файл самостоятельно, опасаясь, что он будет гармонизирован.)

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

Сначала создайте новую папку и назовите ее «Demo».

Вам необходимо скачать файл "STM32F10x_StdPeriph_Lib" на официальном сайте ST:

1: Как показано в [Продукты] -> [Микроконтроллер] -> [Инструмент и ПО] ->

【STM32Стандартные периферийные библиотеки】 -> Выберите подходящую загрузку Вот серия STM32F10X





После распаковки загруженного «STM32F10x_StdPeriph_Lib_V3.5.0», мы помещаем“Libraries”Копировать в“Demo”Папка. Опять же в“Demo”Создайте четыре пустые папки в используемой папке, названной следующим образом:


Просто распакует папку“STM32F10x_StdPeriph_Lib”В [Project] -> [Template], Main.c, stm32f10x_it.c, stm32f10x_cong.h, stm32f10x_it.c, stm32f10xit.h пять файлов копируются в папку «Пользователь».


“User”Папки используются для хранения пользовательских подпрограмм;

“Project”Папка используется для хранения соответствующих файлов при сборке проекта;

“Obj”Файл используется для хранения объектного файла, сгенерированного во время компиляции;

“List”Используется для хранения файлов списков и карт, созданных во время компиляции;

“Libraries”Это файл функции библиотеки.

1: создать новый проект

Откройте Keil 5, выберите [Проект] -> [Новый проект µVision]


Создайте проект, сохраните его в разделе [Project] в файле [Demo], а затем выберите модель процессора. Основной UP - F103RC.


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

2: установить параметры

Вызовите [ManageProject Items],


Откроется окно [ManageProject Items] для его редактирования.


Измените «ProjectTagets» на «STM32F103RCT6 Flash» и добавьте четыре группы, а именноUser、Lib、CMSIS、Startup,Как показано ниже:

3: Добавить соответствующий файл пользователя в «Пользователь»

Выберите «Пользователь» в «Группе» и добавьте несколько пользовательских файлов в «Пользователь».

В автономном разделе «Файлы» «Добавить файлы» выберите путь для поиска «Пользователь» в папке «Демо»,


Добавьте «main.c» и «stm32f10x.c», как показано ниже.


4: Добавить библиотечные файлы в "Lib"

Выберите «Lib», чтобы добавить библиотечные файлы, найдите путь к файлу: [Demo] -> [Libraries] -> [STM32F10x_StdPeriph_Driver] -> [src] Добавьте необходимые библиотеки библиотек вызова по очереди, если новичок не знаком с тем, какие файлы библиотеки могут все Добавить в.


5: Добавить связанные с ядром файлы STM32F в CMSIS

Выберите «CMSIS», чтобы добавить файлы, связанные с ядром STM32F,

Нажмите путь [Библиотеки] -> [CMSIS] -> [CM3] -> [CoreSupport], добавьте «cpre_cm3.c» под файлом;

В соответствии с путем [Библиотеки] -> [CMSIS] -> [CM3] -> [DeviceSupport] -> [ST] -> [STM32F10x] добавьте «system_stm32f10x.c» под файлом

После добавления, как показано:


6: Добавить файлы запуска

Чтобы добавить файл запуска на отдельном компьютере «Запуск», следуйте по пути [Библиотеки] -> [CMSIS] -> [CM3] -> [DeviceSupport] -> [ST] -> [STM32F10x] -> [запуск] -> [рука]


Поскольку STM32F103RCT6 относится к Flash-памяти большой емкости (256 КБ), добавьте файлы здесь“startup_stm32f10x_hd.s“,

Если Flash имеет среднюю емкость (128 КБ или 64 КБ), добавьте“startup_stm32f10x_md.s“,

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


7: настроить интерфейс компонентов


1: настройка параметров цели


Появится интерфейс настройки


2: Создать HEX-файл

Нажмите вкладку [Output] и сгенерируйте HEX-файл, как показано ниже


3: Выберите путь к выходной папке целевого файла (Obj)

Выберите путь к выходной папке целевого файла (Obj), как показано на рисунке ниже.


4: Выберите путь к папке из списка вывода

Выберите выходной путь к файлу списка.


5: Настройки вкладки C / C ++

Выберите вкладку C / C ++ и введите «USE_STDPERIPH_DRIVER, STM32F10X_HD» в текстовом поле «Определить», как показано на рисунке:


«USE_STDPERIPH_DRIVE» определяет использование периферийной библиотеки, и определение будет включать файл * _conf.h для использования периферийной библиотеки.

«STM32F10X_HD» соответствует файлу автозагрузки startup_stm32f10x_hd.s, который является флэш-памятью большой емкости.

6: добавить * .h путь к файлу


7: Добавить путь [Библиотеки] -> ……

Добавить путь [Библиотеки] -> [STM32F10x_StdPeriph_Driver] -> [inc]

Добавить путь [Библиотеки] -> [CMSIS] -> [CM3]

После добавления пути, как показано на рисунке, нажмите ОК:


Шаблон для такого проекта готов,

Скопируйте файл «Demo», переименуйте его в «LedText» и замените следующий код на main.c

(Когда новый проект будет создан в будущем, содержимое файла «Main.c» файла шаблона можно заменить)

void delay_us ( unsigned int us )

unsigned char n;

void delay_ms ( unsigned int ms )

void GPIO_Configuration( void )

GPIO_SetBits(GPIOA,GPIO_Pin_1); //PA1 = 1

GPIO_SetBits(GPIOA,GPIO_Pin_2); //PA2 = 1

GPIO_SetBits(GPIOB,GPIO_Pin_1); //PB1 = 1

GPIO_ResetBits(GPIOA,GPIO_Pin_1); //PA1 = 0

GPIO_ResetBits(GPIOA,GPIO_Pin_2); //PA2 = 0

GPIO_ResetBits(GPIOB,GPIO_Pin_1); //PB1 = 0

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


В этом предложении будет предложено добавить круглые скобки после основной функции с пустой строкой. Решение состоит в том, чтобы добавить пустую строку после круглой скобки ">" в конце основной функции.

Следует также отметить, что при создании проекта каждый раз, когда вы добавляете файл «* .c» в «Lib», вам необходимо включить соответствующий файл «* .h» в «stm32f10x_conf.h». На этом этапе следует отметить, что файл «stm32f10x_conf.h» должен быть включен в начало файла.


Нажмите наВведите настройки [Опция для цели]


Выполнив «Шаг 4», как показано на рисунке, введите настройку «Настройки» следующим образом:



При загрузке мастер UP имеет такую ​​проблему, как показано на следующем рисунке:


Войдите в каталог установки keil [ARM] -> [ST-LINK] Откройте «ST-LinkUpgrade.exe», появится инструмент обновления ST-LINK,


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


Нажмите на значок загрузки «LOAD» на рисунке, загрузка прошла успешно.


Дополнить возникшие проблемы и решения:

1: В коде, скопированном в Keil, как решить проблему, из-за которой китайский комментарий искажен?

Этот тип проблемы является проблемой кодирования текста, решение заключается в следующем: [Правка] -> [Конфигурация]


Установите следующим образом [Редактор] -> [Кодировка] -> [Китайский **** (упрощенный)]:

Читайте также: