Руководство По Keil На Русском.doc
Хотел вначале толкнуть речугу за ядро, но потом подумал, что этой то инфы на каждом углу, да и рано пока еще. А вот создать простейший проект будет полезней. Также я решил краешком поддерживать и описывать не только STM32F103, но и LPC1343. LPC я буду уделять меньше времени, скорей показывать различия и аналогии. Но, думаю, проблем в освоении не возникнет.
Среда разработки Я тут однозначно остановился на Keil uVision 4. Эта IDE, пожалуй, является одной из самых мощных и самых массовых не только на ARM, но и на С51 и ряде других камней. Собственный, весьма неплохой, Си компилятор. Весьма продвинутая и функциональная IDE, плюс в нагрузку там идет мощный симулятор, в том числе с поддержкой периферии, а также всяких виртуальных приборов. Не как в Proteus, конечно. Схему там не нарисуешь, но вот поглядеть на виртуальный логический анализатор или UART можно запросто. Плюс удобная система создания мастеров кода на ровном месте (всякие визарды аля CVAVR тут дружно пьют йад).
E Sky E 500 Инструкция На Русском.Doc. Руководство по eBook Library на русском языке в переводе Africanec.
А также Keil поддерживает огромное число разных отладочных систем и JTAG адаптеров. В том числе и, который юзаю я. Недостатки тоже есть. Во-первых, Keil uVision идет только под винду.
Так что линухоиды либо извращаются с виртуалками (но не факт что получится), либо обламываются и корячат из подручного материала что то свое. Впрочем, им не привыкать к геморою со спец софтом:) Во-вторых, Keil платный. И стоит он весьма неслабых денежек. Кряки, конечно же, валяются на каждом углу.
Мы же честные и на наше счастье в Keil есть демо режим, дающий нам ограничение в 32кила. Под наши заморочки с Cortex M3 хватит вполне (а в LPC1343 больше и нету, кстати;) ). Итак, тащим Keil с оффсайта Чтобы не шариться там, сразу двигаем на, заполняем ее и получаем ссылку на скачивание. Скачали, ставим, запускаем. Открывается главное окно Keil Дальше стандартно. STMicroelectronics - STM32F103C8 STMicroelectronics - STM32F103C8 Там же, в окошке справа, покажут его краткий фарш.
Жмем «ОК» и Keil тут же спрашивает сделать ли стартовый файл с инициализирущим кодом. Говорим «да». У нас открывается новый проект, в нем есть папочка Target 1 — файлы проекта. Пока там лишь одна группа исходников и один файл: Переименуем Target 1 и Source Group 1 во что-нибудь более осмысленное.
Я их обозвал как STM32 и Startup соответственно. Добавляем еще две Source Group (это не критично, но так будет логичней и не будет бардака). Одну назовем MainCode, вторую CMSIS. Дважды кликаем по группе MainCode и у нас открывается диалог добавления файлов.
Файлов пока нет, то мы идем в папку проекта, создаем там подпапку Main и в ней делаем простой текстовый файл с именем main.c Теперь его можно добавить в кодовую группу. Тут же появился в дереве проекта файл main.c Теперь надо добавить в проект библиотеку CMSIS Что такое CMSIS Проект никуда не убежит, потому сделаю небольшое отступление и опишу что есть CMSIS. Итак, CMSIS это стандартная для всех кортексов библиотека. Как бы единый стандарт описаний ресурсов.
Благодаря ей легко таскать код с одного вида ARM Cortex контроллеров на другой. Конечно периферия у всех армов разная, даже в пределах одной линейки, но вот доступ к регистрам периферии из Си стандартизирован и описан в CMSIS. А то, что едино для всех Cortex M3 — ядро, контроллер прерываний и системный таймер, то едино и во всех CMSIS и при переносе с контроллера на контроллер правки не требует вообще. Библиотека состоит из нескольких файлов: Описание ядра стандартные для всех Cortex M3.
corecm3.c. corecm3.h Описание конкретного контроллера (семейства точнее), лежит в CMSIS библиотеке конкретного семейства и качается с официального сайта производителя контроллера.
stm32f10x.h — файл описание периферии, а также структуры доступа к ним. Все самое нужное и важное лежит тут. systemstm32f10x.c — функции CMSIS.
Их немного (SystemInit, SystemCoreClockUpdate, SystemCoreClock), касаются они только стартовой инициализации контроллерной периферии и работе с установками тактовой частоты. Они стандартны для всех CMSIS для M3 семейства. systemstm32f10x.h — заголовочные файлы для функций CMSIS. В файле stm32f10x.h все регистры периферии увязаны в такую конструкцию: Вначале описаны типы. 1 2 3 4 #define LPCGPIO0 ((LPCGPIOTypeDef.) LPCGPIO0BASE ) #define LPCGPIO1 ((LPCGPIOTypeDef.) LPCGPIO1BASE ) #define LPCGPIO2 ((LPCGPIOTypeDef.) LPCGPIO2BASE ) #define LPCGPIO3 ((LPCGPIOTypeDef.) LPCGPIO3BASE ) #define LPCGPIO0 ((LPCGPIOTypeDef.) LPCGPIO0BASE ) #define LPCGPIO1 ((LPCGPIOTypeDef.) LPCGPIO1BASE ) #define LPCGPIO2 ((LPCGPIOTypeDef.) LPCGPIO2BASE ) #define LPCGPIO3 ((LPCGPIOTypeDef.) LPCGPIO3BASE ) Но система та же самая.
И доступ будет такой же. Например, к регистру DIR порта 1. Peripherials -General Purpose IO - GPIOA Peripherials-General Purpose IO - GPIOA Вылезет вот такая вот штука: Там сразу видно все режимы в котором находится порт, а также регистры конфигурации. Начинаем шагать по программе, наблюдая за содержимым порта. Видим, что сначала на порт подались такты и надпись внизу изменилась на Clock Enabled. Потом переключился режим одного из выводов на выход.
А дальше, с каждой итерацией цикла while, в регистре ODR начала прыгать туда сюда галочка, указывая на то, что внешний уровень меняется. Первая программа работает. Пока в эмуляции.
В следующий раз расскажу как и чем прошивать этот контроллер. Файлы к статье Чтобы тебе не шариться по инету, вот я тут положил:. Post navigation. А Это расшифровка отдельных битов каждого из регистров по функциям! Производитель уже заранее позаботился о том, чтобы нам не пришлось ломать голову над режимами и помнить где какие биты стоят. Например, хотим мы выставить порт GPIOG.1 в режим MODE0 (он так в даташите зовется). Так нам даже биты не придется считать!
И никаких магических чисел в коде! Делаем так:1 GPIOG-CRL = GPIOCRLMODE10; //Битте! GPIOCRLMODE10 — это не режим, а битовая маска, где вы смогли найти режим MODE0 в даташите, там про это ни слова. Соответсвенно GPIOG-CRL = GPIOCRLMODE10; присвоит значение битовой маски регистру GPIOGCRL, сбросив все остальные биты.
Можно установить это бит в единичку с помощью лог. Сложения (у вас дальше в примере так и сделано) GPIOG-CRL = GPIOCRLMODE10;, но это не определит режим работы вывода порта полностью, т.к остался не инициализированным бит MODE1 (GPIOCRLMODE11). Вот пример дефайнов режимов: /.! Вроде бы все6 как написано сделал, но: Build target ‘STM32F100’ compiling main.c linking 1Proj.axf: Error: L6630E: Invalid token start expected number or ( but found n at position 5 on line 5 1Proj.axf: Error: L6629E: Unmatched parentheses expecting ) but found n at position 5 on line 5 1Proj.sct(5): error: L6292E: Ignoring unknown attribute ‘null’ specified for region LR. 1Proj.sct(5): error: L6228E: Expected ‘‘, found ‘)’. 1Proj.sct: Error: L6372E: Image needs at least one load region. Target not created Заодно- разъясните, что такое axf и sct?
Дяденьки, а разве культурно так делать? В названии сайта пишете «электроника для всех».
И тут же в статье у вас линуксоиды — «обламываются». И макинтошники наверное тоже? Не говоря уже о всяких там бсдунах. Получается что не очень то электроника поданая под вашим соусом и для всех,? А потом еще и учите юзать платный продукт. Который стоит столько что это получается ну совсем не для всех. Особенно в России.
Потому что в любительско-малотиражной практике покупать кайло совершенно неоправданно. А 32 Кб всем не хватит. Ну, как и 640Кб — почему-то не хватило. К чему это я? К тому что нынче полно кроссплатформенных тулзей (тот же CodeSourcery gcc для армов например), которые можно законно и бесплатно использовать, да еще и под разными системами.
Не логичнее ли обучать их использованию, если уж хочется чтобы электроника была действительно для.всех. и сразу.легально.?
Без пираси и махинаций, за которые нынче еще и reboot. Без ценза по типу операционки, толщине кошелька достаточной для покупки кайлы и подобным несуразицам. Лично я вот пользуюсь этак тремя разными типами операционок и такая подмена понятий мне не нравится.
И кстати я бы не сказал что Windows наиболее удобная для меня операционка. В ней многие вещи удобные для программирования, особенно программирования железок делаются довольно сложно. В.никсах, например, есть чудная либа libusb, позволяющая удобно работать с юсб из своих программ без попадания на написание ядерных драйверов. Под винду она конечно тоже есть, но есть и куча грабелек отсутствующих под другими платформами. В итоге с USB в виде как он есть — проще всего работать под другими операционками, особенно если впадлу писать ядерные дрова. А в современных виндах до кучи придется еще и с подписями на самописные помучаться. Возможности, уважаемый, возможности.
С кейлом просто — поставил и работай. Можно и эмуляции гонять и периферию щупать и без гемороя в два тыка ставится и цепляет большинство адаптеров. То что стоит дофига — не беда. Контора если надо купит и лицензию.
А для любительского применения 32кила хватит более чем за глаза. Надо больше чем 32кила?
Значит это уже не обучение, а серьезный проект. Тут либо раскошеливаемся, либо осваиваем опенсорц. Ну или не прикидываемся белыми и пушистыми и ищем кряк. Другого не дано. Кстати, цена в 2800 баксов это реально фигня.
Такое, если сильно надо, можно и для домашних разработок прикупить. Окупается за 5-6 заказов на раз. Ну и, к примеру, какая опенсорцная среда позволит запустить процесс в эмуляции аки Кейл? Вывести диаграмму работы порта (что невозможно сделать без эмуляции кроме как на лог анализаторе или цифровом осциллографе — цена вопроса около 30тыр. Будете плакаться, что и цифровой осциллограф не по карману? И опять «Не для всех»?). А еще работа из коробки.
Поставил и не паришься. Все же эти опенсорцыне поделия может и функцоинальные, но представляют собой набор разрозненных утилиток которые еще надо увязать в адекватную рабочую среду (шо поделать, это unix way =) ). 2/3 материала в таком случае будет составлять инструкция как просто заставить ЭТО работать. А 90% комментариев будет на тему «у меня не работает,что делать» Почитайте комменты к статьям про программаторы. Там народ в линухе не может даже заставить работать уже изьезженную вдоль и поперек и простую как мычание avdrdue, а вы тут про армы заикнулись. Да там такой набор подпорок и решений, что книги писать можно о том как это все комбинировать и соединять. А вот готового из коробки продукта нет (и походу и не будет).
Ну, разве что, ограниченная со всех сторон ардуино какая. Да и мне куда интересней ковырять непосредственно процы, а не отвлекаться на еблю с системой. Не думать о том как скрестить ежа с ужом. Так что линуксоиды/макинтошники обламываются дальше. Ну или продираются через тернии своих священных путей дальше. Выбирая из моего материала только то что относится непосредственно к исследуемому железу, а не к его средствам разработки. Ну вообще то я склоняюсь больше к мнению iforgotmylogin, поэтому и просил написать статью про Eclipse+gcc.
Однако я понимаю, что таких людей немного кто умеет это делать по линухом. Сам дома сижу на gentoo linux он сильно упрощает жизнь в плане обычного программирования(и не только программирования). Но армы программировать дома не пытался потому как не было программатора, щас он появился и буду разбираться. Замечание iforgotmylogin довольно острое, но действительно когда читаешь то создаётся впечатление что open source не существует и что платный софт, чем то лучше чем бесплатный. При этом считаю новые статьи очень полезными и авторы молодцы что нашли время на то чтобы поделиться опытом. Ну вообще то в gentoo linux для установки eclipse например нужно просто написать в консоли -хочу eclipse-sdk (emerge -av eclipse-sdk).
На что ОС ответит у меня вот такие флаги стоят для сборки, собираем? Говоришь да и ОС, устанавливает java, сама скачивает, определяет зависимости, собирает(благодаря системе портов, пока что не встречал нужных мне программ которых нет в системе портов). В других ОС мы долго ищем ссылку для скачивания eclipse, находим качаем, понимаем что нету явы, опять ищем где скачать яву, устанавливаем при этом отвечаем на глупые вопросы куда поставить прогу, и прочее. Вместо того чтоб спокойно играть в КС.
Руководство По Keil На Русском.doc Скачать
А флаги при этом обеспечивают тонкие хирургические настройки и оптимизацию софта именно для моего железа. Поэтому у меня эта ОС вызывает ассоциации с тонким скальпелем и микроскопом. Чего-то я опять туплю Переделываю библиотеку для общения с двухстрочным дисплеем с AVR на STM. Koд вроде весь поправил как надо, но не могу слинковать проект.
Вставил инклудом заголовочный файл lcd.h в main.c, в коде пока воткнул одну единственную функцию lcdinit. Компилятор все собирает нормально, а Линкер ругается: firstprb.axf: Error: L6218E: Undefined symbol lcdinit (referred from main.o). Target not created Подскажите пожалуйста, что мне где надо прописать, чтоб оно слинковалось? Или обязательно второй модуль как библиотеку в отдельном пректе делать? Все разобрался Я когда с кусками кода из библиотеки в майне экспериментировал, lcd.c отключал от проекта.
А обратно включить забыл. В окне-то он открыт, а в списке нет Щас все собрал буду проверять в железе Еще дурацкий вопрос: Дисплей WH1202A, работает от 5V.
Чтоб гонять данные выбрал старшие разряды GPIOB с 9 по 15, которые к 5V толерантны. Назначил в режиме входа как Floating Input, а в режиме выхода как Open Drain Output. Думаю линии притянуть к 5V через 10К резюки. Вправильном направлении я мыслю или нет? Вот строчки из мануала: CNFy1:0: Port x configuration bits (y= 0. 7) These bits are written by software to configure the corresponding I/O port.
Refer to Table 18: Port bit configuration table on page 148. In input mode (MODE1:0=00): 00: Analog mode 01: Floating input (reset state) 10: Input with pull-up / pull-down 11: Reserved In output mode (MODE1:0 00): 00: General purpose output push-pull 01: General purpose output Open-drain 10: Alternate function output Push-pull 11: Alternate function output Open-drain MODEy1:0: Port x mode bits (y= 0. 7) These bits are written by software to configure the corresponding I/O port. Refer to Table 18: Port bit configuration table on page 148. 00: Input mode (reset state) 01: Output mode, max speed 10 MHz. 10: Output mode, max speed 2 MHz. 11: Output mode, max speed 50 MHz.
Точнее CNF: 01: Floating input (reset state) MODE: 00: Input mode (reset state) Если вы не меняли эти биты то у вас все правильно. В примере ДИ выход как раз и настраивается как Open drain и для мигания светодиодом его надо подтягивать к питанию. У меня во всяком случае контроллер инициализируется в соответствии с мануалом. Добрый вечер! Помогите разобраться!
Взял Ваш готовый проект Keilp1, все вроде настроил, компилю, а тут такая вещь выдается: Build target ‘STM32’ linking STM32p1.axf: error: L6031U: Could not open scatter description file STM32p1.sct: No such file or directory STM32p1.axf: Not enough information to list image symbols. STM32p1.axf: Not enough information to list the image map. STM32p1.axf: Finished: 2 information, 0 warning, 0 error and 1 fatal error messages. Target not created Где может быть косяк??? Пробовал создать новый проект, ошибок не пишет, но и не мигает(((. Это такой хитрый регистр. BSRR = Bit Set/Reset Register Порт у стм32 16ти разрядный, а архитектура 32х разрядная.
У регистра BSRR получается как бы две 16ти разрядные половины старшая и младшая. Так как он Set/Reset то запись бита в старшую половину устанавливает, а в младшую сбрасывает (или наоборот, не помню, надо ДШ смотреть).
Биту 0 порта соответствуют биты регистра BSRR 0 и 16 запись в бит 0 сбрасывает лог уровень, заись в бит 16 устанавливает. Есть там еще и регистры отдельно для сброса и для установки. Нафига такая избыточность я хз. Вот такой вот пердимонокль:).
Подскажите, откуда у нас берется адрес какого либо регистра, например который принадлежит порту GPIOA, если у нас есть только значение начального смещения? И почему работает такая конструкция: GPIOA-BSSR = 0x0001; Ведь согласно записи #define GPIOA ((GPIOTypeDef.) GPIOABASE) получается, что GPIOA это набор указателей и мы просто присваиваем им адрес а не записываем значение по этому адресу(чтобы записать значение по адресу в указателе нужно ставить звездочку перед ним: p-указатель с каким либо адресом,.p=10 — записываем значение по адресу из указателя).
Помогите найти ошибку в рассуждениях. Почему только начальное смещение? Есть же там же: #define GPIOABASE (APB1PERIPHBASE + 0xNNNN), где мы привязываем к GPIOBASE реальное смещение от начала базового смещения области периферии. Из которого уже идут наши регистры GPIOA А еще есть тип GPIOTypeDef который дает компилятору понять, как нам надо скакать от этого адреса. А дальше мы просто по этому адресу определяем указатель на структуру типа GPIOTypeDef. Ведь что такое структура?
Структура это всего лишь начальный указатель и инфа о расположении данных. Вот мы к ней и обращаемся. А операнд - означает, что мы оперируем указателем на структуру. Blbla-blblbla эквивалентно (.blbla).blblbla. С Discovery разобрался. На 103м камне тут реализован отладчик ST-Link, он чудно работает.
Но с примером, что-то не клеится. Таргет проекта поменял на STM32F100RB, тот, что установлен на демо-плате. В интернетах пишут, что с совместимостью всё просто чудесно, можно даже прошивку 103 камня запихнуть в 100 и всё будет работать.
Ан нет, видимо что-то я упустил, но что?- Железка у меня уходит в инициализации в ХардФаулт и всё тут, вываливается из SetSysClockTo72. Почему падает примерно понятно, не способен он держать такую частоту, но откуда взялась такая канитель? Нигде в настройках ничего подобного не нашёл. И мало того, он же и не выйдет на 72MHz никогда, он же от кварца работает, который вообще 8MHz =( Что делать, где косяк? Огромное спасибо за информацию. Наконец появились дешевые, мощные процы, которые можно ставить везде один раз обкатав среду, программатор. Сегодня купил STM32VLDISCOVERY (за 320р).
На нем стоит STM32F100RB + встроенный программатор ST-Link. Подключил к Keil uVision4.
Скачал с сайта ST STM32VLDISCOVERY firmware package (в нем есть проект для Keil). Скомпилировалось удачно. В режиме симулятора не отлаживается. Пишет:. error 65: access violation at 0x0000000C: no ‘read’ permission).
Заработало в режиме Debug через ST-Link Debugger. Светодиоды мигают вслед за нажатием F10. Изменил код прошивки и заметил следующую вещь: Если нажать на Debug и сделать несколько шагов, то прошивка прошивается. Если нажать на Download code to flash memory, то прошивка не прошивается.
Проблему обошел так: 1) кейл генерит hex файл, кот. Прошиваю с помощью STM32 ST-LINK Utility 2) Для отладки симулятором поменял в настройках девайс на STM32F103RB. Обратно не меняю и полученную прошивку так и шью. И вообще я подозреваю, что все процы STM32F10X одинаковые и отличаются только частотой и наличием/отсутствием 1-2 периферий. Где-то прочитал, что кто-то догадался замениль живой STM32F100RB на STM32F103RB на плате DISCOVERY.
Я думаю, что это предел развития науки и техники. Больше уже ничего не надо.
Добрый день не могли бы вы подробнее хоть немного описать как вы настраивали библиотеки компилятора Кейл4.по вашей картинке не поняно что у вас пропсано. Какая то папка mainи та кдалее. Нам надо указать пути к хидерам CMSIS. У STM32 они раскиданы по двум папкам “CMSIS CoreSupport ” и “CMSIS DeviceSupport ST STM32F10x ”.Иначе компилятор их не найдет.
Вот мои пути: вот тут совсем ничего не понял( что при установке Кейла он их не прописыает? Их нужно дополнительно откуда то качать? И никак не получается сделать структуру в Кейлевыводит ошибку на эту строчку TIMTimeBaseInitTypeDef TIMTimeBaseStructure; что то я упусил и не добавил? Пытаюсь создать проект в keil’e для stm32f203ret.
Простейшая программа имеет отличия по сравнению с stm32f10x из-за другого оформления обращения к GPIO в 2хх серии. Скомпилировать без ошибок удалось, но debugger выдаёт «error 65»! Стартует с нулевого адреса. В настройках стоит флажок Run to main.
В чем может быть проблема? Неужели keil не поддерживает 2хх-е серии?
Если проблема действительно в этом, какие Вы можете порекомендовать поддерживающие 205-ю серию отладчиком программы? Поясните что за ошибка —. error 65: access violation at 0x40021000: no ‘read’ permission. error 65: access violation at 0x40021000: no ‘write’ permission. error 65: access violation at 0x40021004: no ‘read’ permission. error 65: access violation at 0x40021004: no ‘write’ permission появляется на каждое нажатие F11? Что такое off-chip и on-chip во вкладке Target?
Правильно ли сделал что указал контроллеру границы памяти ОЗУ и ПЗУ? У меня 107VC. А то по умолчанию там что то левое стояло? Куда ты там смотрел?
Смотрел я правильно, только немного не досмотрел. Так вот, кому интерестно, пересмотрел я каждый чип отдельно, там есть пункт «Simulated Features», где и указано что симулируется а что нет и выяснил, что на данный момент симулируются не все перечисленные выше чипы а только STM32F101XX, STM32F103XX, STR711XXX, STR710XXX, STR712XXX, STR730XXX, STR731XXX, STR735XXX, STR736XXX, STR750XXX, STR751XXX, STR752XXX, STR755XXX, STR910XXX, STR911XXX, STR912XXX. Например: здесь камень симулируется с периферией а уже здесь НЕ симулируется. Подскажите пожалуйста в файле из папки CMSIS — stm32f10x.h при выборе типа семейства: #if!defined (STM32F10XLD) &&!defined (STM32F10XLDVL) &&!defined (STM32F10XMD) &&!defined (STM32F10XMDVL) &&!defined (STM32F10XHD) &&!defined (STM32F10XXL) &&!defined (STM32F10XCL) /. #define STM32F10XLD./ /.! Как понимаю, проект скомпилирован отдельно для Симулятора и для исполнения. Причем для исполнения при запуске из FLASH (прога лежит в FLASH памяти) и из RAM (прога скомпилена так, что кладется в адресное пространство ОЗУ), но из RAM далеко не всегда можно запустить.
Банально может не хватить этой самой памяти. Серьезно я там так глубоко не ковырялся.
Запуск в RAM обычно нужен либо для очень быстрой работы (флеш медленней), либо если код подгружается откуда то извне, а потом ему передается управление. Например через ОС. » Запуск в RAM обычно нужен либо для очень быстрой работы (флеш медленней)» — а вот нифига же ж! Исполняется код из рамы медленнее, чем из флеша.
К флешу обращение идет через отдельную шину I-code bus (или просто I-bus), а к раме — через системную матрицу шин (D-code). Как пишут в «Insider’s guide» (пункт 2.3.5.): Although code can be loaded and executed from the SRAM, the instructions would be fetched using the system bus, which incurs an extra wait state.
It is likely that code would run slower from SRAM than from on-chip FLASH memory located in the code region. При загрузке кода в камень — да, рама быстрее. А еще ее использование позволяет не жечь флеш множественными циклами при отладке: This speeds the download process and saves continual burning of the FLASH memory. (там же, п.4.1) В русском переводе эту фразу просто коряво транслировали: Поскольку загрузка статического ОЗУ осуществляется более быстро, то эта возможность может оказаться полезной на фазе проектирования для исполнения кода программы из статического ОЗУ.
Ощущение, что среда делалась в прошлом веке и с тех пор мало изменилась. Вот просто слов нет насколько все сделано не так как надо. Ну допустим прикрутили они подсказку, которая выводит список параметров функции (memcpy), но выводит она только типы параметров, а названия параметров не выводит, хотя они есть (но только в теле функции). Когда создаешь новый проект стартапный и системный файлы для контроллеров не копируются в проект и не определяется дефайном семейство контроллеров и тем более тактирование — все вручную надо. Ну хоть бы визард какой сделали что ли, как в Keil (хотя он у меня почему то и не появляется там).
Дополнения кода (code complete) сделаны тоже кое как. Русские буквы в окне компиляции не отображаются и шрифт русский не поставить. Выводится список ошибок компиляции и позиционируется в конец — до первой ошибки нужно мотать каждый раз. И такое там все.
Может он как компилятор и хорош, но после Delphi, где среда довольно удобно сделана, очень неуютно в такой среде. И еще засек — стартует 21 секунду среда.
Описание Keil uVision Keil uVision Среда разработки, представляющая собой набор утилит для выполнения полного комплекса мероприятий по написанию программного обеспечения для микроконтроллеров. Keil uVision позволяет работать с проектами любой степени сложности, начиная с введения и правки исходных текстов и заканчивая внутрисхемной отладкой кода и программированием ПЗУ микроконтроллера. От разработчика скрыта большая часть второстепенных функций, что сильно разгружает интерфейс и делает управление интуитивно понятным. Однако при возрастании сложности реализуемых задач, всегда можно задействовать весь потенциал модулей, функционирующих под управлением единой оболочки. Среди основных программных средств Keil uVision можно отметить. Базу данных микроконтроллеров, содержащую подробную информацию обо всех поддерживаемых устройствах. Здесь хранятся их конфигурационные данные и ссылки на источники информации с дополнительными техническими описаниями.
При добавлении нового устройства в проект все его уникальные опции устанавливаются автоматически. Менеджер проектов, служащий для объединения отдельных текстов программных модулей и файлов в группы, обрабатываемые по единым правилам.
Подобная группировка позволяет намного лучше ориентироваться среди множества файлов. Встроенный редактор, облегчающий работу с исходным текстом за счет использования многооконного интерфейса, выделения синтаксических элементов шрифтом и цветом. Существует опция настройки в соответствии со вкусами разработчика. Редактирование остается доступным и во время отладки программы, что позволяет сразу исправлять ошибки или отмечать проблемные участки кода. Средства автоматической компиляции, ассемблирования и компоновки проекта, которые предназначены для создания исполняемого (загрузочного) модуля программы. При этом между файлами автоматически генерируются новые ассемблерные и компиляторные связи, которые в дальнейшем позволяют обрабатывать только те файлы, в которых произошли изменения или файлы, находящиеся в зависимости от изменённых.
Функция глобальной оптимизации проекта позволяет достичь наилучшего использования регистров микроконтроллера путем неоднократной компиляции исходного кода. Компиляторы uVision работают с текстами, написанными на Си или ассемблере для контроллеров семейств ARM, MSC51, C166 и многих других. Кроме того возможно использование компиляторов других производителей. Отладчик-симулятор, отлаживающий работу скомпилированной программы на виртуальной модели микропроцессора.
Довольно достоверно моделируется работа ядра контроллера и его периферийного оборудования: портов ввода-вывода, таймеров, контроллеров прерываний. Для облегчения комплексной отладки разрабатываемого программного обеспечения возможно подключение программных моделей нестандартного оборудования. Дополнительные утилиты, облегчающие выполнение наиболее распространенных задач. Число и набор меняется от версии к версии. Выделяют следующие из них:. Source Browser, содержащую базу данных программных символов для быстрого поиска;. Find in Files, предназначенную для поиска заданного кода во всех файлах указанной папки или проекта;.
Tools Menu, позволяющую использовать утилиты сторонних производителей;. PC-Lint, анализирующую исходный текст программы с выделением потенциально опасных мест;. Flash tool, программирующую FLASH-память микроконтроллеров. Среда программирования разработана компанией Keil, которая была основана в Мюнхене в 1982 году братьями Гюнтером и Рейнхардом. В октябре 2005 года Keil вошла в состав американской корпорации ARM. На сегодняшний день она представляет широкий спектр различных средств для разработки программ, включающих Cи-компиляторы, макроассемблеры, отладчики, симуляторы, линкеры, IDE-приложения и оценочные платы для различных семейств микроконтроллеров. Программа Keil uVision является платной и стоит очень больших денег.
По ссылке ниже, после заполнения анкеты можно скачать демонстрационную версию. Разумеется, в ней присутствует ряд ограничений и основное из них – 32 КБ на размер программы.
Среда разработки Keil uVision представлена на английском языке. Программа работает на персональных компьютерах под управлением только операционной системы Windows версий 2000, XP, Vista и 7.
Распространение программы: Shareware (платная). Есть демоверсия с рядом ограничений, в т.ч. На размер кода - не более 32 КБ. Комментарии (1) Подписаться Юрий 13:53 # Как подключить Silicon JTAG (USB) to android phone? Есть ли приложение - программатор через JTAG для андроида?
Нужен для перезаписи программ в полевых условиях. МиниПК MK809V - 4 ядра, Android 4.4.2 1999-2016 СМИ Сайт-ПАЯЛЬНИК 'cxem.net' При использовании материалов сайта, обязательна ссылка на сайт ПАЯЛЬНИК и первоисточник. Как добавить микросхему в Keil uVision 4? Микроконтроллеры Как добавить микросхему в Keil uVision 4? - Микроконтроллеры, 01:08 Как добавить микросхему в Keil uVision 4?
1) KEIL считается лучшим для кортексов (просто слышал, сам не сравнивал). 2) Он также поддерживает разные типы компиляторов. Для того чтобы их объединить - нужно переписать всю папку с компилятором к определенной платформе в одну версию KEIL'а.
Например, для объединения C51 и ARM в один редактор KEIL нужно папку ARM из одного KEIL'а переписать в папку KEIL/ другого, где находится папка C51. Надеюсь, здесь прозрачно? 3) Далее нужно подправить строчки файла tools.ini, добавив всю группу параметров из одного KEIL'а (донора, в нашем случае под ARM) в другой tools.ini. После перезагрузки KEIL будет понимать и компилить и те и другие проекты.
Единственный глюк, который был замечен - это 'вылет' IDE при загрузке проекта под одну платформу при открытом проекте с другой платформой. Лечилось закрытием старого проекта и открытием проекта под другую платформу, но через меню 'Open project', а не из сохраненных пунктов 'recent projects'. Но и также ничего не мешает использовать 2 кейла в системе. Настройка проекта в Keil uvision5 Настройка проекта в Keil uvision5 Сам я начинающий в этом деле, если что не так опишу, просьба сильно не пинать) До работы с STM микроконтроллерами, упорно изучал AVR. После приобретения своей первой платы STM32f3discovery, своим первым проектом, конечно же, хотел помигать светодиодами. Думал ща приду домой, включу и сразу начну программировать и без проблем делать всякие там проекты.
Но не тут то было. После создания проекта постоянно вылетали всякие ошибки, компилятор постоянно ругался на недостающие файлы. Наиболее часто вылетала ошибка типа этой: После долгих попыток наконец-то удалось установить причину всех моих неудач. Ниже представлены несколько шагов, которые делаю я для создания проекта.
Эти шаги облегчат процесс создание своих первых проектов на микроконтроллерах семейства STM32. Среда Keil имеет свои «внутренние» файлы, которые она использует по умолчанию. К примеру фалы отвечающие за конфигурацию периферии и др. Для того чтобы компилятор использовал скипированные файлы необходимо сделать 1. Шаг первый – скачиваем файлы настройки контроллера Для того чтобы настроить свой первый проект вам необходимо для начала скачать архив для вашей конкретной платы с официального сайта Для своей платы STM32f3Discovery я скачал архив с примерами по ссылки Далее распаковываем данный архив. Создаем папки проекта После этого в папке с проектом создаем 4 папки. cmsis – папка содержащая файлы настройки микроконтроллера;.
pl – папка с файлами переферрий;. user – пользовательская папка, тут главный исполняемый файл;.
startup – начальная инициализация/ У меня это выглядит так: 3. Создаем аналогичные группы в среде Keil u vision Аналогично в нашем проекте создаём группы с такими же названиями. Названия можно давать любые, но чтобы не путаться лучше такие же, как и сами папки. Важно понимать, что создание группы в проекте это не создание аналогичных папок в папке проекта, а всего лишь группировка исполняемых файлов.
Копируем нужные файлы в папки проекта Далее нам необходимо скопировать из нашего,ранее скаченного архива, следующие файлы. В папку cmsis следующие 3 файла:. ' F: Projects STM32 Ex4 cmsis systemstm32f30x.c'.
' F: Projects STM32 Ex4 cmsis systemstm32f30x.h'. ' F: Projects STM32 Ex4cmsis stm32f30x.h' Файл stm32f30x.h – это файл необходимый для настройки работы микроконтроллера. В папку pl две папки из STM32F30xStdPeriphDriver это inc и src, в которых находится куча файлов для работы с периферией. Также в папку pl необходимо скопировать файл stm32f30xconf.h из любого проекта. В итоге имеем:. 'F: Projects STM32 Ex4 pl stm32f30xconf.h'. 'F: Projects STM32 Ex4 pl inc тут куча файлов h'.
'F: Projects STM32 Ex4 pl src тут куча файлов c' В папку startupкопируем следующий файл В папке userсоздаем наш исполняемый файл main.c 5. Добавляем файлы в проект В среде Keil нам необходимо добавить некоторые файлы в созданные группы. В группу cmsis добавляем один файл systemstm32f30x.c;. В группу pl все си-шные файлы периферии из папки src;.
В группу startup файл startupstm32f30x.s;. А в папке user создаем файл main.cв ручную.
На данном этапе это выглядит так: 6. Самый главные этап создания проекта Далее нам необходимо открыть файл stm32f30x.h и убрать комментарий со следующей строки: В результате Keil начинает использовать ваши скопированные файлы.
Добавляем в проект стандартную библиотеку core Для того чтобы добавить данную библиотеку необходимо менеджере проектов выбрать пунк Run-TimeEnviroment и поставить галочку в поле CMSIS. Далее открываем наш main.c и компилируем, если ошибок нет. Значит проект настроен верно. Keil uvision 5 руководство на русском Установка MDK, создание проекта, основы Keil uVision.
Установка MDK, создание проекта, основы Keil uVision Сегодня мы начнём учиться программировать ARM-контроллеры STM32 на ядре Cortex-M3. Эти камни уже гораздо серьёзнее, чем восьмибитные пики и атмелы, поэтому для полного использования всех их возможностей без языка высокого уровня нам при программировании не обойтись (если мы конечно не мазохисты), но для лучшего понимания происходящего, начнём мы всё же с ассемблера, а потом уже подмешаем Си (тем более, что до полного использования возможностей этих камней нам пока как до Луны пешком).
Сред разработки под ARM-ы в настоящее время существует достаточно много, мы будем пользоваться одной из таких сред (кстати, одной из самых популярных), которая называется Keil uVision. Первое, что нужно сделать - это скачать с официального сайта Keil и установить себе на компьютер пакет MDK-ARM. В настоящее время в его состав входит Keil uVision версии 5.11.
Бесплатная версия, естественно, урезана и позволяет скомпилить максимум 32 Кбайта кода, но нам, простым радиохламерам, для любительских нужд этого более чем достаточно (ну, а если недостаточно, то, я думаю, все знают что делать ). Помимо пакета MDK-ARM нужно скачать и установить пакет для работы с контроллерами STM32, который называется Keil.STM32F1xxDFP.1.0.5.pack. После установки этого пакета в среде uVision появится база данных контроллеров STM. Всё, после выполнения этих двух действий можно приступать к разработке программ. Итак, запускаем Keil uVision и выбираем пункт меню 'New uVision Project. ' В появившемся окне проводника выбираем папку, в которой проект будет расположен, придумываем ему какое-нибудь имя и жмём кнопку 'Сохранить'. После этого появится база различных контроллеров STM32, в которой нужно будет выбрать свой камень (в моём случае это stm32F103C8) и нажать 'Ok'.
Дальше нам предложат подключить к нашему проекту различные готовые куски кода и библиотеки драйверов. Достаточно поставить напротив соответствующего компонента галочку и он будет включен в наш проект. Это очень сильно облегчает жизнь программиста, но мы пока не будем этим пользоваться. Пока мы ставим перед собой цель разобраться как это всё работает и нас интересует проект на асме с чистого листа, поэтому не ставим никакие галочки, а просто жмём кнопку 'OK'.
Проект создан и окно uVision теперь выглядит вот так: Слева расположен многофункциональный менеджер проекта, в котором в зависимости от выбранной внизу вкладки открывается либо структура проекта (вкладка Project), либо библиотека документации (вкладка Books), либо список используемых в проекте функций (вкладка Functions), либо шаблоны для часто используемых структур (вкладка Templates). Пользоваться менеджером просто и удобно, - когда мы выбираем камень, в библиотеку документации автоматически добавляются нужные книжки, список используемых в проекте функций также составляется автоматически. В области справа показывается содержимое открытых файлов проекта. Добавим в наш проект asm-файл, в котором мы будем писать код. Щёлкаем по Source Group 1 правой кнопкой мыши и выбираем пункт Add New Item to Group 'Source Group 1'.
После этого появится окошко, в котором нам предложат выбрать тип добавляемого файла и попросят этот файл как-нибудь назвать. Выбираем тип файла Asm File, назовём его, скажем, Proga1 и жмём кнопку Add. В менеджере проекта появляется наш файл. Если по нему два раза щёлкнуть мышкой - он откроется в окошке справа. Пока этот файл пустой, но прежде чем писать в него какой-либо код, давайте вернёмся ещё раз к менеджеру проекта. Если щёлкнуть правой кнопкой мыши на Target1 и выбрать пункт меню Options for Target 'Target1', то откроется окошко с настройками нашего проекта. Кое-какие из этих настроек нам придётся подправить, а кое-какие просто интересно посмотреть.
На вкладке Device можно поменять модель контроллера. На вкладке Target указаны начальные адреса и размеры используемых областей памяти. В случае с нашим STM32F103C8 мы имеем внутри кристалла 64 кБ (0x10000) flash-памяти (IROM1 - internal ROM), которая расположена по адресам, начиная с 0x08000000, а также 20 кБ (0x5000) ОЗУ (IRAM - internal RAM), которая расположена по адресам, начиная с 0x20000000. Эти данные устанавливаются автоматически при выборе контроллера, но если вдруг они случайно испортились, то их всегда можно подглядеть в доке на камень, открыв карту памяти (memory map). На вкладке Output нужно не забыть поставить галочку напротив пункта Create HEX File. Здесь же можно выбрать отдельную папку для сохранения всяких вспомогательных файлов, создающихся при компиляции проекта. (кнопка Select Folder for Objects.
) На вкладке Listing настраиваются параметры создаваемых файлов листинга, которые также можно направить в отдельную папку, чтобы не засорять папку проекта. На вкладке User можно настроить запуск различных пользовательских программ и скриптов в процессе построения проекта Вкладки С/С и Asm предназначены для настройки процедур препроцессинга и ассемблирования и пока нам не интересны. На вкладке Linker настраивается линковщик. Здесь возможны три варианта: 1) Ничего не менять. В этом случае стартовые адреса областей памяти (flash и RAM) будут взяты те, что прописаны на вкладке Linker напротив пунктов R/O Base, R/W Base.
Кроме того, линковщик захочет чтобы точка входа была обозначена меткой ResetHandler, а начало таблицы прерываний - меткой Vectors. Это можно увидеть в командной строке линковщика (Linker Control String). Запись -entry ResetHandler говорит о том, что метку ResetHandler нужно считать точкой входа, а запись -first Vectors - о том, что секцию с именем Vectors нужно расположить в памяти первой. Соответственно, если наши названия не будут совпадать с теми, которые ожидает линковщик, - мы при компиляции получим ошибки и ворнинги.
Кроме того, мы должны экспортировать эти метки, директивой EXPORT. 2) Поставить галочку напротив Use Memory Layout from Target Dialog.
Если посмотреть в командную строку линковщика, то можно увидеть, что теперь набор команд выглядит по другому. В таком варианте линковщик будет использовать адреса областей памяти, указанные на вкладке Target. Причём он сначала на основе этих данных автоматически создаёт так-называемый scatter-файл (файл с расширением.sct), а потом компилит проект на основе scatter-файла. Если мы откроем scatter-файл в блокноте, то увидим, что теперь компилер хочет, чтобы секция, помещаемая в самое начало flash-памяти (там должна размещаться таблица векторов прерываний, но об этом позже) называлась RESET. Но в этом случае линковщику уже не нужно чтобы мы что-то куда-то экспортировали и не обязательно, чтобы метка, обозначающая точку входа, называлась именно ResetHandle.
Зато теперь нам нужно либо в программе обозначить точку входа директивой ENTRY, либо на вкладке Linker в окошке Misc controls добавить директиву -first, указав после неё имя нашей метки, отмечающей точку входа. Кроме того, теперь линковщик выдаёт при компиляции ворнинг из-за того, что хочет найти секции, обозначенные как InRoot$$Sections.
Но у нас таких секций и нет, поэтому на этот ворнинг можно смело забить (а чтоб не надоедал - можно выключить его, добавив в строку Disable Warnings на вкладке Linker). 3) Ну и наконец, последний вариант - можно самому создать этот самый scatter-файл, который расскажет линковщику где какие области располагать.
Для этого галочка Use Memory Layout from Target Dialog должна быть снята, а в папке с проектом нужно создать файл с раширением sct. Подробно о том, чем этот файл заполнять и как использовать описано в пятой главе мануала RealView Compilation Tools. А нам для простейшей программы хватит и вот такого: Здесь ROMStartAddress - адрес начала flash-памяти (в нашем случае 0x08000000), ROMSize - размер flash-памяти (в нашем случае 0x10000), RAMStartAddress - адрес начала оперативы нашего камня (в нашем случае 0x20000000), RAMSize - размер оперативы (в нашем случае 0x10000). Директива.o (FirstSectionName, +First) в секции ERIROM1 означает, что надо во всех объектных файлах поискать область с именем FirstSectionName и разместить её самой первой в секции ERIROM1. Для контроллеров STM32 первой во flash-памяти должна быть область с адресом вершины стека и таблицей адресов прерываний. Директива.ANY (+RO) означает, что далее в этой секции будут размещены все остальные области, помеченные в исходнике как READONLY, причём без разницы в каком порядке. Директива.ANY (+RW +ZI) в секции RWIRAM1 означает, что в этой секции будут размещены все области, помеченные в исходнике как READWRITE, причём без разницы в каком порядке.
После того, как файл создан и заполнен нужно на вкладке Linker, в строке Scatter File указать путь к этому файлу. Для удобства, справа есть кнопочка '.
' при нажатии на которую откроется проводник и вам останется только выбрать этот файл в проводнике. Обратите внимание, что после выбора scatter-файла набор команд в строке Linker control string изменится. Оттуда пропадут команды, размечающие области памяти и распределяющие различные секции по этим областям, поскольку теперь предполагается, что это сделано в scatter-файле. На вкладке Debug нужно выбрать как вы будете отлаживать свой проект. Если у вас есть отладочная плата, то нужно поставить флажок, напротив пункта Use: и далее выбрать из выпадающего списка свою отладочную плату.
Если отладочной платы у вас нет, то нужно поставить флажок напротив пункта Use Simulator. Это даст возможность пользоваться для отладки встроенным в IDE симулятором. Последняя вкладка, Utilites, предназначена для настройки программирования чипа из IDE, и, соответственно, при отсутствии одного из поддерживаемых этой IDE программаторов также не сильно нам интересна.
Полную информацию по настройкам компилятора, ассемблера и прочим можно узнать, почитав литературу из раздела Tools Users Guide на вкладке Books в менеджере проекта, а с минимальными настройками мы только что разобрались. На этом пока всё, а в следующий раз давайте попробуем написать в созданном ранее asm-файле какую-нибудь маленькую программулинку. Установка MDK, создание проекта, основы Keil uVision. Создание проекта в Keil Создание проекта в Keil Решил потестить Keil, ибо в нем есть чудо отладчик.
После кокоса, пришлось нехило попотеть для того, чтобы просто создать проект. Поэтому оставляю подробную напоминалку. Для начала нужно скачать кейл он бесплатный до 32кБ.
После установки, нужно будет докачать поддержку для своего камня, этот шаг более менее очевиден. Создадим проект в нем выбираем свой камень, в моем примере используется stm32f103t8, если списка камней нет — значит см. Понадобится скачать либу. Тут остановимся. То что юзается в кокосе в основном CMSIS и SPL, поэтому здесь я решил идти тем же путем. В CMSIS находятся описания регистров самого микроконтроллера, аналог mega8.h у атмела, внутри SPL находятся функции для работы с периферией GPIO, USART и т.п.
И то и другое лучше всего качать с официальных сайтов CMSIS с сайта arm, SPL с ST. Стандартная либа отличается для разных семейств например STM32F10xStdPeriphLibV3.5.0 для F100. Когда читаешь информацию про либы вроде понятно, тухляк начинается когда нужно разобраться. В итоге проще запомнить что файлы SPL в основном называются так: stm32f10xgpio.h stm32f10xgpio.c, и т.п. К CMSIS относится stm32f10xx.h который тянет за собой еще кучу файлов, если компилятор ругается что не нашел какой то файл, полюбому, не указан путь к CMSIS, поэтому ищем файл и прописываем пути.
Создание проекта в Keil uVision Один из вопросов, который возникает, при переходе на STM32: «Какую среду разработки выбрать?» Наверное самые популярные — это Coocox. IAR и Keil uVision. Я пользуюсь последней. Главное её преимущество перед другими — это мощный симулятор, с поддержкой периферии и множеством виртуальных приборов. Все эти плюшки 'упрощают жизнь' опытному разработчику и помогают новичку разбираться с богатой периферией современных МК.
Ниже изображён скриншот интерфейса. Для того чтобы её установить, качаем MDK-ARM с официального сайта.
И устанавливаем его. Всё хорошо, но при создании проекта не получится выбрать нужный МК. Исправить это можно, установив необходимый пакет, например, для линейки STM32F1 xx этот пакет называется Keil.STM32F1xxDFP.x.x.x.pack Теперь когда среда установлена, приступим к созданию проекта.
Желательно создать отдельную папку для проекта так, как файлов будет много. Если в проекте не используется библиотека StdPeriph достаточно подключить файл стартапа и ядро CMSIS. Теперь необходимо создать или добавить нужные файлы. После того как все необходимые файлы включены в проект, можно перейти к настройке проекта. Если МК тактируется от кварца, необходимо указать его частоту. Частоту тактирования SYSCLK.
Которая тактирует все шины МК, можно выбрать, в файле systemstm32f10x.c. Для этого достаточно раскомментировать нужную. Название функций, в которых обрабатываются прерывания, можно посмотреть в файле startup. Приготовления закончены и можно переходить непосредственно к отладке, предварительно скомпилировав проект.
Руководство По Keil На Русском.docx
Для того чтобы начать отладку необходимо нажать кнопку, показанную на скриншоте. Далее, пользуясь кнопками изображенными ниже, можно отлаживать программу.
На самом деле функционал программы гораздо шире, а в статье описан лишь тот минимум, который необходим для того, чтобы начать работу. Похожие новости.
Урок 1: Cоздание проекта в keil uvision 4 - Уроки по программированию stm32f1xx - Уроки по программированию stm32fxxx - Каталог статей - Статьи по stm После установки и запуска программы, мы получаем окно следующего вида: Теперь нам нужно создать проект. Для этого жмём Project - New uVision project Появится окно для сохранения созданного проекта. Придумайте ему осмысленное название и поместите в отдельную папку.
Жмите Сохранить. Выскочит окно выбора микроконтроллера: Для STM32VLDiscover выбираем микроконтроллер: STMicroelectropnics - STM32F100RB. Появится окно с вопросом, создать ли стартовый файл. Теперь наш проект выглядит так: Обратите внимание на вкладку Target 1 справа. Там хранятся наши файлы.
Теперь нам надо добавить в наш проект стандартные файлы: CMSIS и main.c Скачать CMSIS можно например отсюда: CMSIS (Или с сайта с разделе Каталог файлов ) Создаём в папке с проектом 2 папки, одну назовём CMSIS. В папке main создаём текстовый файл, который сразу переименовываем в main.c. Далее щёлкаем по надписи Target 1 в keil, выбираем Add Group.
Так создаём 2 группы. Одну называем CMSIS. Основную можно переименовать в startup. В группу main добавляем файл main.c, а в группу CMSIS добавляем файлы systemstm32f10x.c и corecm3.c. В итоге наш проект должен выглядеть так: Теперь нужно прописать местоположение наших файлов в проекте. Если вы будете переносить проект на другой ПК, то эту процедуру нужно будет делать вновь.
Щёлкаем правой кнопкой мыши по Target 1 и выбираем Options for Target 'Target 1'. Откроется окно вида: Выбираем вкладку C/C, Жмём на кнопку возле строки с надписью Include Paths. Там прописываем местоположение ваших добавленных файлов. Проще это делать нажимая на кнопку справа от строки, куда вы прописываете адрес. Должно получиться что-то типа такого: Теперь ещё один штрих. Нам предстоит раскомментить правильную конфигурацию на наш МК.
Для этого открываем наш main.c. Добавляем в него текст: #include int main(void) Пытаемся собрать нажав на F7. Возле main.c появится плюсик. Нажимаем на него и открываем файл stm32f10x.h. В нём находим строки: Здесь необходимо раскомментить строку, относящуюся к вашему устройству.
Расшифровка обозначений: LD - Это МК STM32F101xx, STM32F102xx и STM32F103xx, имеющие на борту флеш память между 16кБ и 32кБ. LDVL -Это МК STM32F100xx, имеющий на борту флеш память между 16кБ и 32кБ. MD - Это МК STM32F101xx, STM32F102xx и STM32F103xx, имеющие на борту флеш память между 64кБ и 128кБ. MDVL -Это МК STM32F100xx, имеющий на борту флеш память между 64кБ и 128кБ. HD - Это МК STM32F101xx и STM32F103xx, имеющие на борту флеш память между 256кБ и 512кБ.
HDVL -Это МК STM32F100xx, имеющий на борту флеш память между 256кБ и 512кБ. XL - STM32F101xx and STM32F103xx МК с памятью между 512кБ и 1024кБ. CL - STM32F105xx и STM32F107xx микроконтроллеры.
Для stm32Discovery необходимо ещё настроить SWD. Для этого опять заходим в окно Options for Target 'Target 1' выбираем debug.
Меняем точку с Use simulator на Use и в качестве то, что использовать выбираем ST-Link Debugger. Жмём Settings. Тут выбираем SWD и жмём Ок. Во вкладке Utilites также выбираем ST-Link Debugger.
Теперь проект настроен. Можно писать программу. Драйвера на ST-Link можно взять отсюда: ST-Link Подключение библиотеки stdperiph для stm32f2xx версии V1.1.2. Если вы используете микроконтроллер серии stm32f2xx, то описанный выше способ подключения не подойдёт. Потому, что во-первых эта серия использует другие библиотеки, во вторых со временем структура этой библиотеки всё-таки меняется от версии к версии.
Скачать эту библиотеку можно в официального сайта. Там нам нужна папка Libraries.
В ней находятся нужные нам CMSIS и StdPeriph. Если с ссылкой что-то произошло или не хочется качать много мегабайт, то вот зеркало на архив, содержащий только библиотеки. Для подключения библиотек, как и раньше требуется в группу stdperiph добавить все файлы.c. Только в CMSIS надо добавить только файл из папки CMSIS Device ST STM32F2xx Source Templates под названием systemstm32f2xx.c. Найдите в архиве и добавьте к проекту файл stm32f2xxconf.h. В main.c пропишите: #include 'stm32f2xx.h' #include 'stm32f2xxconf.h' Далее не забудьте раскомментировать в файле stm32f2xx.h строку USESTDPERIPHDRIVER.
Помните, что файл по-умолчанию установлен только на чтение. Выбирать тип камня не надо. Он только один STM32F2XX. На этом с особенностями инициализации под stm32f2xx всё. STM32F4xxПоваренная книга анархиста Буэнос диас! Итак, что у нас в меню:. Тестовая плата STM32F4DISCOVERY.
Библиотека STM32F4xxDSPStdPeriphLibV1.3.0 STM32F4DISCOVERY STM32F4DISCOVERY — плата для быстрого и удобного изучения микроконтроллеров серии STM32F4, ориентированных на мультимедийные приложения.