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



Урок 1

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

 

Программирование МК STM32 Следующий урок

 

Вводим на поисковом сайте строку stm32f4 spl

Попадаем сюда http://www.st.com/web/en/catalog/tools/PF257901

Скачиваем отсюда библиотеку

 

image00

 

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

Запускаем Keil5

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

 

image02

 

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

 

image01

 

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

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

 

image04

 

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

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

 

image03

 

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

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

 

image06

 

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

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

Распаковываем библиотеку

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

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

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

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

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

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

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

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

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

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

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

 

image05_0500

 

 

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

 

image08

 

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

 

image07

 

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

int main(void)

{

while(1)

{

 

}

}

 

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

 

image11

 

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

Разкоментируем

#define STM32F40_41xxx

и /*#define USE_STDPERIPH_DRIVER */

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

#define HSE_VALUE ((uint32_t)8000000) /*!< Value of the External oscillator in Hz */

 

 

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

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

 

image09

 

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

 

image10

 

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

 

image12

 

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

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

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

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

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

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

 

Полный код

#include «stm32f4xx.h»

 

//GPIO_InitTypeDef GPIO_InitStructure;

 

int main(void)

{

uint32_t i;

 

RCC->AHB1ENR|=RCC_AHB1ENR_GPIODEN;

 

GPIOD->MODER = 0x55000000;

GPIOD->OTYPER = 0;

GPIOD->OSPEEDR = 0;

 

while(1)

{

GPIOD->ODR = 0x8000;

for(i=0;i<500000;i++){}

GPIOD->ODR = 0x4000;

for(i=0;i<500000;i++){}

GPIOD->ODR = 0x2000;

for(i=0;i<500000;i++){}

GPIOD->ODR = 0x1000;

for(i=0;i<500000;i++){}

}

}

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

 

image13

 

 

Программирование МК STM32 Следующий урок

 

 

Купить плату можно здесь STM32F4-DISCOVERY

 

Смотреть ВИДЕОУРОК

 

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

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

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

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

    • булат:

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

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

      Также в данную папку копируем две папки (inc и src) из \STM32F4xx_DSP_StdPeriph_Lib_V1.6.1\Libraries\STM32F4xx_StdPeriph_Driver-А где их взять то?

  2. Alex:

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

    Статья — ниачом..

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

    • Димитрий:

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

    • вик:

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

  3. Айдар:

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

  4. Сергей:

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

  5. Пилот:

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

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

      • Пилот:

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

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

  6. Пилот:

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

  7. grad7:

    «Цель моих занятий — не дать проект, который работает, а показать, почему оно работает.»

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

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

  8. grad7:

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

  9. Егор:

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

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

    • Иван:

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

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

  10. Александр:

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

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

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

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

  12. Boris:

    В вкладке выбора процессора нет списка процессоров. В чем причина?

  13. Артур:

    STM32F0-Discovery подойдёт для обучения данному курсу?

  14. Дмитрий:

    Не могли бы Вы обновить информацию по установке.
    Заранее спасибо.

  15. idushy:

    В третьем уроке упомянуто, что урок первый это SPL, а второй CMSIS. Мне бы как раз хотелось понять где заканчивается одно и начинается второе. Отсюда вопрос.
    В этом уроке мы копируем и из папок SPL библиотек, в частности это
    — STM32F4xx_DSP_StdPeriph_Lib_V1.6.1\Libraries\CMSIS\Device\ST\STM32F4xx\Include\stm32f4xx.h. Затем обращаясь к регистрам GPIOD настраиваем и управляем каналами. И, вроде бы, все что нам нужно описано в stm32f4xx.h. А это, судя по пути это CMSIS. В общем вопрос в каких отношениях CMSIS c SPL

  16. GameBit:

    ./pl\stm32f4xx.h:817:10: fatal error: 'core_cm4.h' file not found
    #include «core_cm4.h» /* Cortex-M4 processor and core peripherals */
    ^~~~~~~~~~~~
    1 error generated.
    «.\Objects\lesson001.axf» — 1 Error(s), 0 Warning(s).
    Target not created.
    Build Time Elapsed: 00:00:34
    Что делаю не так?

  17. Deska:

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

  18. Булат:

    Приветствую, вроде, урок для начинающих, но что такое регистры и как ими пользоваться ни слова. С 36-й минуту отсутствуют какие-либо комментарии, что делается, для чего делается, как высчитываются адрес регистра. Нулевые знания от просмотра. 36 минут ни о чём бу-бу-бу и потом галопом… F4-серия большая и регистры другие нужно это было сказать. Для чего эти регистры в проекте и без них всё будет работать GPIOD->OTYPER, GPIOD->OSPEEDR?!

  19. Булат:

    //включаю синий светодиод/stm32F469i disco
    #include «stm32f4xx.h» // Device header

    #define RCC_AHB1ENR (*(volatile uint32_t*)0x40023830) //включаю тактирование AHB1
    #define GPIOG_MODER (*(volatile uint32_t*)0x40021800) //регистр GPIO-G
    #define GPIOG_ODR (*(volatile uint32_t*)0x40021814) //вывод регистра GPIO-G

    int main()
    {
    RCC_AHB1ENR |= 1<<6; //включаю тактирование GPIO-порта-G
    GPIOG_MODER |= 0<<13 | 1<<12; //назначаю порт-G как выход
    GPIOG_ODR |= 1<<15; // записываю 1-(включаю) в порт-G, вывод 15 микроконтроллера

    }

  20. Александр.:

    Добрый день. Может у кого архивы программ завалялись? В связи с санкциями, сайт не дает скачивать программы, а хотелось попробовать STM32F4XX запрограммировать, пока время появилось.

  21. Сергей:

    «.\Objects\lesson001.axf» — 1 Error(s),кто подскажет в чем дело. Будьте любезны,подскажите.

  22. Сергей:

    «.\Objects\lesson001.axf» — 1 Error(s),

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

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

*