STM32. CMSIS #2. GPIO - создаем проект с нуля в ARM KEIL на CMSIS.

Поділитися
Вставка
  • Опубліковано 2 кві 2021
  • Купить книгу "Освоение STM32 самостоятельно" по CMSIS:
    • При печати на Xprinter...
    Разбираем регистры GPIO по переведенному Reference Manual STM32F1 и пишем сразу два проекта: на CMSIS и на HAL по работе с портом ввода вывода, а также сравниваем размеры полученных прошивок в проектах. Исходники проектов и часть моей книги приводятся по ссылке ниже:
    github.com/nr-electronics/CMS...
    Содержание:
    00:08 Введение
    00:34 Рассмотрение GPIO
    16:21 Создаем проект на CMSIS - GPIO в ARM KEIL
    23:34 Создаем проект на HAL - GPIO в ARM KEIL
    24:51 Сравнение полученных результатов
    __________________________________________________
    Вы можете помочь каналу через Яндекс-деньги:
    money.yandex.ru/to/4100115727...
    или через банковскую карту:
    4377 7237 6190 5714
    __________________________________________________

КОМЕНТАРІ • 130

  • @dobroliub1908
    @dobroliub1908 3 роки тому +2

    Ура!! Очередное видео с использованием CMSiS. Спасибо!

    • @NRelectronics
      @NRelectronics  3 роки тому +1

      Пожалуйста. Главное что на пользу. Не забывайте про лайки для повышения рейтинга видео в поиске ютуба.

  • @Arduino_Kit
    @Arduino_Kit 3 роки тому

    Круто как всегда.

    • @NRelectronics
      @NRelectronics  3 роки тому

      Благодарю. Может вставите мой плейлист о CMSIS на своём канале?

  • @kanatmakhanov5318
    @kanatmakhanov5318 3 роки тому

    Довольно подробно.

    • @NRelectronics
      @NRelectronics  3 роки тому

      Да, старался. Все показал

  • @ShashHryundel
    @ShashHryundel Рік тому

    Огромное спасибо за труд. Пытаюсь перейти с AVR (к тому ж ещё с ассемблера) на STM32. Один первых покупателей на Вашу книгу. Английским не владею и с чтением документации встречаю трудности, так что с большим нетерпением буду ожидать выхода книги.

    • @NRelectronics
      @NRelectronics  Рік тому

      Спасибо большое. Ожидайте пожалуйста её.

  • @statstopfinish
    @statstopfinish 3 роки тому

    Лайк как всегда. Не хватает урока как к этому всему еще и freertos прикрутить . Было бы вообще шикарно.

    • @NRelectronics
      @NRelectronics  3 роки тому +1

      FreeRTOS это хорошо и нужно одназначно. Это отдельная серия, все не осилю. Но желание и необходимость имеется.

  • @lilo888
    @lilo888 3 роки тому

    Надеюсь что будет серия видео на cmsis и вы покажете не только порты, но и включение тактирования , spi, i2c, uart и плюс небольшие примерчики.

    • @NRelectronics
      @NRelectronics  3 роки тому

      Тактирование в проекте настроено, заметьте, по умолчанию на 72 МГц, можете посмотреть код, Кейл так генерит. Видео тем более было по всем настройкам RCC, дублировать это не вижу смысла. А вот SPI, USART, I2C и некоторые другие впереди.

    • @lilo888
      @lilo888 3 роки тому

      @@NRelectronics я заметил, что тактирования включено, но обычно его пишут в цикле с ожиданием ответа.
      Спасибо Вам за видео.

    • @NRelectronics
      @NRelectronics  3 роки тому

      Обычно да. Но кейл сразу по дефолту настраивает на 72МГц при создании проекта. Очень удобно.

  • @OpenFrimeTVcom
    @OpenFrimeTVcom 3 роки тому +3

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

    • @NRelectronics
      @NRelectronics  3 роки тому

      Подключили файл из семейства нашего МК, по имени файла не думаю, что должны быть вопросы. Стартап файл необходим из Кейла, и остальные все необходимые подтягиваются. Так прикольно и удобно сделан Кейл. Можно было папку засунуть со всеми необходимыми файлами, но так быстрее и они актуальные и все необходимые. Версии CMSIS, если необходимо, можно переключать.

    • @OpenFrimeTVcom
      @OpenFrimeTVcom 3 роки тому

      @@NRelectronics ну я до этого смотрел Илью Галкина, так тот на 20 минутный ролик растянул подключение этих файлов руками. так вот это меня всегда отталкивало от стм-ок.. спасибо за ответ

    • @NRelectronics
      @NRelectronics  3 роки тому

      Пожалуйста. Можно сделать значительно быстрее, чем за 20 минут ;)

  • @nangelo0
    @nangelo0 2 роки тому

    тогда нужно было еще сравнить с прошивкой на ASM для наглядности)

    • @NRelectronics
      @NRelectronics  2 роки тому

      С асмом не хочу взаимодействовать, видео утонут в длительности.

  • @Embedded_Developer
    @Embedded_Developer 3 роки тому

    с ходу в #ТОП!

  • @glorglorsky7987
    @glorglorsky7987 Рік тому

    Подскажите, почему вы не используете spl библиотеку от stm? И как правильно ее подключить

    • @NRelectronics
      @NRelectronics  Рік тому

      Она считается морально устаревшой. Её обычно уже не используют. Вместо неё LL/HAL. Подключается ручками. Есть PDF от st. Как буду дома, скину себя.

  • @user-cm2pl2sq9d
    @user-cm2pl2sq9d Рік тому

    Николай, подскажите, пожалуйста, есть ли у вас видео по установке и началу работы с Кейлом? Если есть, можете ли дать ссылку?

    • @user-cm2pl2sq9d
      @user-cm2pl2sq9d Рік тому

      Вроде нашёл:
      ua-cam.com/video/fH-EpQ7mSsg/v-deo.html

    • @NRelectronics
      @NRelectronics  Рік тому +1

      Да да, именно это видео, вы меня опередили))) спасибо за ссылку.

  • @konstantinnovgorodov6281
    @konstantinnovgorodov6281 3 роки тому +1

    Спасибо за уроки! А скоро ли мы увидим вашу книгу, которую вы использовали в данном видеоуроке?

    • @NRelectronics
      @NRelectronics  3 роки тому +4

      Пожалуйста, на пользу главное! Пока еще нет, в стадии написания, ролики стимулируют её продолжение, а также новые подписчики и лайки ;)

    • @AndySm1973
      @AndySm1973 3 роки тому

      @@NRelectronics я тоже хотел задать вопрос, что за книга? И в комментариях нашел ответ:)

    • @NRelectronics
      @NRelectronics  3 роки тому +1

      Немного пишу, по свободе. В следующем видео на гитхаб также выложу, часть, относящуюся к следующему видеокроку.

  • @pavelaugur6565
    @pavelaugur6565 3 роки тому

    Спасибо. Документ - это Ваш перевод RM0008?

    • @NRelectronics
      @NRelectronics  3 роки тому

      В том виде котором был показан да, вольный перевод RM.

  • @NIKOLAY_PSHONIA
    @NIKOLAY_PSHONIA 3 роки тому

    Спасибо. Заметил что если задать 50МГц то на HAL более 1,78мГц не поднимается, а на СMSIS почти 3мГц ногодрыг

    • @NRelectronics
      @NRelectronics  3 роки тому

      Пожалуйста. На хале у меня также больше 2МГц даже при установки скорости HIGH в кубике не бывает почему-то...

    • @NIKOLAY_PSHONIA
      @NIKOLAY_PSHONIA 3 роки тому

      @@NRelectronics Смотрел - там много лишних операций (а это тики проца)

    • @NRelectronics
      @NRelectronics  3 роки тому

      Правильно говорите, много тиков, и частота падает.

  • @naokotokomado9069
    @naokotokomado9069 Рік тому

    Вы можете подсказать как поменять зажигание светодиодов на ножки другого порта? У меня там есть gpio, nvic, exti. У меня там стоит на порт А, я хотел поменять на порт В. Я поменял просто там где было написано GPIOA на GPIOB. И ещё где было написано RCC_APB2ENR_IOPAEN_Msk, IOPAEN на IOPBEN. Но это не сработало

    • @NRelectronics
      @NRelectronics  Рік тому

      У вас каша в голове. Вам нужно разобраться как работает тактирование - RCC, затем GPIO.

  • @user-yg4mu7rm7k
    @user-yg4mu7rm7k 2 роки тому

    Добрый день, подскажите почему подключили только вот эти файлы CORE, Startup?
    Почему тот же GPIO не подключали?

    • @NRelectronics
      @NRelectronics  2 роки тому

      Как пример, что работает и без подключения прекрасно.

    • @user-yg4mu7rm7k
      @user-yg4mu7rm7k 2 роки тому

      @@NRelectronics я к тому почему именно такие файлы? опытным путем выяснили?

    • @NRelectronics
      @NRelectronics  2 роки тому

      Вы можете ничего не добавлять и своими ручками в ручную всё добавить, вот вообще сами. Это разные пути под компиляцию. Можно компилировать в командной строке под Make, вариантов много. Есть необходимые требования для компонтвщика/линковщика. Кому как нравится работать. Я лишь показываю и не настаиваю.

  • @sergheik9582
    @sergheik9582 Рік тому

    а где можно приобрести вашу книгу?

    • @NRelectronics
      @NRelectronics  Рік тому +1

      К сожалению, ещё пока формирую. Я сообщу.

  • @user-id6vp7gi7s
    @user-id6vp7gi7s 9 місяців тому

    Все повторил как у вас, но диод на ножке не замигал, после сброса горит. Если скачать похожий проект, то все заводится. Подскажите, пожалуйста, где мог допустить ошибку?

    • @NRelectronics
      @NRelectronics  9 місяців тому

      Птичка в настройках кейла - reset and run.

  • @konstantingolinskiy4944
    @konstantingolinskiy4944 3 роки тому

    В идеале бы еще порт и пин записать через define чтоб при изменении порта или пина весь код не менять

    • @NRelectronics
      @NRelectronics  3 роки тому +1

      Согласен, было бы удобнее.

  • @andrewandrosow4797
    @andrewandrosow4797 2 роки тому

    Добрый день!Хорошее видео! Сейчас собираю проект с CMSIS-DSP: но пока загвоздка - настроил CMSIS DSP через manage run-time environment, но в итоге 2000 предупреждений и 1 ошикба - .\Objects\x1.sct(7): error: L6236E: No section matches selector - no section to be FIRST/LAST. Предупреждения в основном касаются преобразования типов. ПРИЧЕМ в main.c написано всего 2 инструкции включения -
    #include "arm_math.h"
    #include "arm_const_structs.h"
    Все.Больше кода нет вообще..
    Есть какие-то идеи, где искать проблему?

    • @NRelectronics
      @NRelectronics  2 роки тому

      День добрый. Не пойму, если кода нет вообще то что за ошибки в преобразовании типов??

  • @van9tka315
    @van9tka315 3 роки тому +1

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

    • @NRelectronics
      @NRelectronics  3 роки тому +1

      Я Вас также приветствую! Это часть моей книги, которую пишу. По ссылке под видео с гитхаба можно часть по GPIO скачать.

  • @alexanderurezchenko6446
    @alexanderurezchenko6446 3 роки тому

    Добрый день, как скачать/купить книгу?

    • @NRelectronics
      @NRelectronics  3 роки тому +1

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

  • @mi4ell
    @mi4ell 2 роки тому

    Я так понимаю вы купили Kiel? т.к. на 20:33 можете просматривать внутренние регистры.

    • @NRelectronics
      @NRelectronics  2 роки тому

      Это бесплатная с ограничением в 32кБ.

    • @mi4ell
      @mi4ell 2 роки тому

      @@NRelectronics странно... у меня тоже бесплатная, но этих функций нет..

    • @mi4ell
      @mi4ell 2 роки тому

      @@NRelectronics А не подскажите как настроить Кейл, т.к. не могу добиться отображения переферии МК при отладке?

  • @ivanrusev2270
    @ivanrusev2270 10 місяців тому

    А у меня вопрос.А можно библиотеку cmis в папке устанавоивать.Как в CubeiDE?

    • @NRelectronics
      @NRelectronics  10 місяців тому

      Вы в проект можете подключить любую папку, и с CMSIS тоже.

    • @ivanrusev2270
      @ivanrusev2270 10 місяців тому

      @@NRelectronics А менеджер не нужен тогда?Просто я столкнулся что CubeiDE при обновлении меняется иногда синтаксис.Да и созданные проекты ранее не компилируются пишет ошибку как было в 1.13.А при создании можно было удалять все файлы кроме 2 а сейчас ещё 2 добавили.

    • @NRelectronics
      @NRelectronics  10 місяців тому

      Какой менеджер?

    • @ivanrusev2270
      @ivanrusev2270 10 місяців тому

      @@NRelectronics Ну есть видео там где подключают менеджер что бы подключить cmsis для данного вида stm32

  • @paschendale1917
    @paschendale1917 4 місяці тому

    Здравствуйте. Только начал вникать в стм. Где можно вашу книгу приобрести?

    • @NRelectronics
      @NRelectronics  4 місяці тому +1

      Здравствуйте. У меня через телеграмм канал или по новостям на канале. Сейчас портирую её в издательство.

    • @paschendale1917
      @paschendale1917 4 місяці тому

      @@NRelectronics хорошо, буду ждать.
      Есть вопрос по видео.
      Строка GPIOC->CRH &= ~GPIO_CRH_CNF13(я перекинул все на пин , к которому подключен светодиод) сбрасывает оба бита CNF13. Далее устанавливаются биты MODE13 так, чтобы частота была не более 2 МГц. Но частота все равно 4 МГц. Да и вообще, как бы я биты не устанавливал, всегда частота 4 МГц. Это признак того, что у меня неликвидный(поддельный) микроконтроллер?

    • @paschendale1917
      @paschendale1917 4 місяці тому

      И еще прикол заметил. На соседнем пине С14 тоже наблюдается шевеление на частоте 4 МГц , но размах в районе 250 мВ.

    • @NRelectronics
      @NRelectronics  4 місяці тому +1

      Очень похоже на то что контроллер нелеквидный. Такого не должно быть конечно.

  • @Shinsei75
    @Shinsei75 3 роки тому

    Жаль сюда не привели пример ещё из библиотекой LL. Чтоб уж сравнивать так по полной)))

    • @NRelectronics
      @NRelectronics  3 роки тому

      Хотел, но просто хал как более громоздкая. LL был бы ближе к cmsis а не HAL. Думаю логично.

    • @Shinsei75
      @Shinsei75 3 роки тому

      @@NRelectronics логично то логично, но в цифрах интереснее знать))))

    • @NRelectronics
      @NRelectronics  3 роки тому

      Я вас понимаю)))) тогда в каком-нибудь интересном следующем проекте постараюсь учесть это)

    • @olegp.3012
      @olegp.3012 3 роки тому

      Да как-то недалеко LL ушел от HAL, на моем камне вышло 775 kHz HAL против 818 kHz LL

    • @NRelectronics
      @NRelectronics  3 роки тому

      Такое чувство, как будто, контроллеры левые...

  • @user-pz5nz6jb5s
    @user-pz5nz6jb5s 3 роки тому +1

    Да. CMSIS. Давайте все на нем напишем. Например машинное зрение.

    • @NRelectronics
      @NRelectronics  3 роки тому

      Вы напишите машинное зрение?

    • @user-pz5nz6jb5s
      @user-pz5nz6jb5s 3 роки тому

      @@NRelectronics Нет, конечно. Моё мнение CMSIS нужен для ответственных участков кода

    • @NRelectronics
      @NRelectronics  3 роки тому

      Согласен с Вами. Для ответственных применений нормально сделанную и отработанную библиотеку.

    • @NRelectronics
      @NRelectronics  3 роки тому

      Сами на чем и в каких средах пишите?

    • @user-pz5nz6jb5s
      @user-pz5nz6jb5s 3 роки тому

      @@NRelectronics KEIL для миландра. Для stm CubeIde.

  • @OdinokijKot
    @OdinokijKot 3 роки тому +3

    В репе на гитхабе нет файла main.c из примера на чистом CMSIS.
    Далее в этом же примере. Почему вы пишите:
    GPIOB->BSRR |= GPIO_BSRR_BS5
    GPIOB->BSRR |= GPIO_BSRR_BR5
    Я что-то не понимаю, или это ошибка?
    Регистр BSRR доступен только на запись. Для чего Вы сначала производите чтение из него? Не правильнее ли будет написать сразу:
    GPIOB->BSRR = GPIO_BSRR_BS5
    GPIOB->BSRR = GPIO_BSRR_BR5
    Иначе какая же это атомарность. Или я что-то путаю?

    • @NRelectronics
      @NRelectronics  3 роки тому

      командами: GPIOB->BSRR |= GPIO_BSRR_BS5, GPIOB->BSRR |= GPIO_BSRR_BR5 - я осуществляю запись "1" в соответствующие регистры BSRR_BS5 и BSRR_BR5.
      Вы немного путаете.
      Спасибо за информирование! Завтра с утра пораньше добавлю файлик.

    • @OdinokijKot
      @OdinokijKot 3 роки тому +3

      @@NRelectronics дак там не только запись! Как разворачивается операция |= ?
      GPIOB->BSRR = GPIOB->BSRR | GPIO_BSRR_BS5
      Верно? То есть мы сначала читаем содержимое регистра BSRR, потом накладываем битовую маску через OR, что бы поднять в нужных битах единицы, и потом только заносим обратно значение в BSRR. Разве не так?
      И зачем читать содержимое этого регистра, когда нужно сразу писать туда нужный бит? По этому и на осциллограмме "скважность" меандра не 50%. На чтение и наложение маски тратятся такты процессора. А если просто присваивать, то меандр должен получиться ровнее. Это же не ODR регистр, запись в BSRR нулевых значений не изменит состояние выводов порта, да и по мануалам он только на запись. На чтение возможно там всегда нули будут.

    • @NRelectronics
      @NRelectronics  3 роки тому

      Вы путаете логику работы BSRR с ODR. BSRR выполняется атомарно, за один такт, ODR - за три такта чтение-модификация-запись. Вы говорите наоборот, если я правильно вас понял.

    • @OdinokijKot
      @OdinokijKot 3 роки тому +2

      @@NRelectronics ну, верно, BSRR работает за один такт. Но что именно работает за один такт? 3 операции, которые вы записали через |= ? Объясните, зачем читать из BSRR?

    • @NRelectronics
      @NRelectronics  3 роки тому

      Так как тогда правильно записать код ногодрыга по вашему мнению?

  • @CoBaldr
    @CoBaldr 3 роки тому

    HEX это же не совсем bin:) И кстати говорят "размер не имеет значения можно взять контроллер жирнее" но почему то все опускают что придется не только память увеличивать но ещё и мегагерцы, тк этот код кто то должен выполнять. Лишние байты лишнее время ядра!

    • @NRelectronics
      @NRelectronics  3 роки тому

      А если необходимо взять контроллер поменьше и не такой жирный? Какой-нибудь STM32F0 с 16кБ флеша. Тогда начнутся проблемы с халом. И вспомните CMSIS, а может и ассемблер ;-)

    • @olegp.3012
      @olegp.3012 3 роки тому +2

      Зачем эта возня с hex файлами, когда в консоле писало сколько программа занимает места во flash. Программа на CMSIS - 736 байта, на HAL - 2492 байта.

    • @NRelectronics
      @NRelectronics  3 роки тому

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

  • @user-yt7uc6jl3w
    @user-yt7uc6jl3w 10 місяців тому

    Где взять такой же даташит на русском

    • @NRelectronics
      @NRelectronics  10 місяців тому

      Допишу книгу и купите в бумаге уже!)

    • @user-yt7uc6jl3w
      @user-yt7uc6jl3w 10 місяців тому

      @@NRelectronics а где так скачать можно ?

    • @NRelectronics
      @NRelectronics  10 місяців тому

      Просто так нигде.

    • @user-yt7uc6jl3w
      @user-yt7uc6jl3w 10 місяців тому

      @@NRelectronics а не просто куда обратиться и как купить и по чем

    • @NRelectronics
      @NRelectronics  10 місяців тому

      Простите, но в электронке не распространяю к сожалению.

  • @user-ni1kh3su8p
    @user-ni1kh3su8p 2 роки тому

    Ничего не понимаю. Изображение размытое только у меня?

    • @NRelectronics
      @NRelectronics  2 роки тому

      У меня норм.

    • @user-ni1kh3su8p
      @user-ni1kh3su8p 2 роки тому

      @@NRelectronics Спасибо. Исправил в настройках. Теперь все ОК.

    • @NRelectronics
      @NRelectronics  2 роки тому

      Ок.

  • @aliensvik9925
    @aliensvik9925 Рік тому

    Эээээээээээ А где вааще это гeference manual под брендом NR (с красной лейбой ) ? Я тамака шарился на гитхабе . Нет ни че.....

    • @NRelectronics
      @NRelectronics  Рік тому

      Какой именно RM? Из видео книга?

    • @aliensvik9925
      @aliensvik9925 Рік тому

      @@NRelectronics Тот ,который в ролике .

    • @NRelectronics
      @NRelectronics  Рік тому

      В разработке у меня.

  • @sergeyvp
    @sergeyvp 3 роки тому

    Во всём виновата ардуино. Для привлечения масс к программированию микроконтроллеров нужно было упростить процесс изучения. Процесс изучения упростили, а вот то что это упрощение приводит к неэффективности использования микроконтроллеров скромно помалкивают. ST со своим халом просто пытается привлечь "программистов" которые не хотят разбираться как устроен микроконтроллер и учиться эффективному прграммированию. Бизнес прежде всего.

    • @NRelectronics
      @NRelectronics  3 роки тому

      Все правильно написали! Ардуина отучила думать людей как правильно вообще программировать! Работает сейчас и хорошо, ладно, прилетело прерывание и все поломалось... Отладки работы кода нет... И начинается...

  • @fapdayz
    @fapdayz 2 роки тому

    Ужас какой. В микроконтроллерах всегда так? Неужели нельзя писать в соответствующие поля регистра сразу по 2 бита, а не по одному?
    GPIOB->CRL &= ~GPIO_CRL_MODE5_0; // gpio_b_5_crl_mode[0] = 0
    GPIOB->CRL |= GPIO_CRL_MODE5_1; // gpio_b_5_crl_mode[1] = 1 (0b10 = 2 MHz)
    Посмотри, как это легко, понятно и изящно делается в Verilog'e:
    gpio_b_crl[21:20] = 2'b10 // set 2 MHz for port B[5]
    P.S. у библиотеки HAL, кстати, куда более читабельный код

    • @NRelectronics
      @NRelectronics  2 роки тому +1

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

    • @fapdayz
      @fapdayz 2 роки тому

      @@NRelectronics, ну просто все эти дефайны вроде как придуманы для упрощения, а выглядит наоборот как усложнение.
      Мы настраиваем порт B, бит 5
      Задаём ему частоту 2 МГц и тип push-pull. Неужели нельзя было выстроить абстракцию таким образом, чтобы это выглядело примерно так:
      GPIO_B_5->CLR->MODE = MODE_2MHZ;
      GPIO_B_5->CLR->TYPE= TYPE_PP;
      Претензии не к тебе, а к тому как вообще неудобно выстроена абстракция в STM32. Я может ещё не въехал, но после ПЛИС с Верилогом, это всё выглядит крайне нечитабельно и неудобно.

    • @NRelectronics
      @NRelectronics  2 роки тому +1

      Да я понял. Просто в CMSIS так, абстракции по сути нет. Если только мы сами не придумаем или завернем в классы. Верилог конечно компактнее.

    • @everythingabout6066
      @everythingabout6066 2 роки тому

      @@NRelectronics есть где разбор , как именно вы читаете код, с его разбором ? не понял как вы читали таблицу и сравнивали с кодом. 20 минута. или есть у вас возможность вести курсы? я пытаюсь это все учить но и в программировании пока новичок совсем. Только паять умею и платки собирать .